QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 3723|回复: 5
收起左侧

[讨论] 如何在LSP中调用VBA作出的对话框?

[复制链接]
发表于 2008-8-19 08:53:14 | 显示全部楼层 |阅读模式 来自: 中国辽宁鞍山

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
如何在LSP中调用VBA作出的对话框?$ v; w- k! H) B
LSP程序在对话框的编写方面依赖于DCL语言, 非常繁琐且不方便, 不如VBA来的快——所见即所得, 能不能在LSP中将VBA编辑好的对话框调用, 并返回每个控件的参数呢?
发表于 2008-8-20 08:34:26 | 显示全部楼层 来自: 中国浙江宁波
lisp调用VBA的对话框容易,VBA中创建sub模块,模块中包含对对话框的调用,然后用lisp函数调用vba的sub既可,但返回参数就困难了,如果可以这样就可以用lisp和VBA联合开发了!

评分

参与人数 1三维币 +3 收起 理由
2005llnn + 3 技术讨论

查看全部评分

发表于 2008-8-20 11:20:33 | 显示全部楼层 来自: 中国辽宁营口

这样算不算?

lsp程序中代码如下:
3 b# d" F  C0 a3 U) b-------------------
5 z3 l" {6 q: a0 E: S& y5 w(defun c:aaa()
( M1 M; y  h" e# n+ z/ p(command "-vbarun" "a")
; V# i; h, m8 Z6 ~)
$ R8 t: }6 K* @* H0 e. I3 _(defun c:-aaa()
1 \7 U% g. Z! K  x# F  K(command "-text" (getstring) "" "" (getstring))
1 Z# H1 ~& ]9 j$ {9 ]! Y)/ D8 N  @9 Y" I
-------------------
: q. c; A% V0 FVBA程序中代码如下:
* U2 V$ X9 o& Z$ B5 J# f: C-------------------/ x+ i  w* E) U+ m9 k% x" A6 G1 i
Sub A()( I( B6 g+ X4 N) d: D
    UserForm1.Show# V' F1 e4 Y0 I2 V
End Sub1 |+ V2 t+ Z1 w- \6 N2 e9 ]( R" D
-------------------+ [9 ~! g) `; l. x" ~# B
用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
. N* O* P- b# F5 m% n9 E7 L  I1 b 1.gif 3 I* }# G5 {7 K, ]7 a  q) z- S

% J/ D  j3 E4 N% `1 I4 B8 q代码如下:
/ ~* x; `* ], |) p" Z, b; c8 H-------------------
" W+ n% N$ H, |$ m6 X) |  v5 V0 BPrivate Sub CommandButton1_Click()
) K1 J/ ?2 b- y9 P8 N4 y; [, I    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
6 i. h0 r5 x$ c8 b0 Z9 v    Me.Hide* P* k, p+ i' [+ N6 a
End Sub; i) L' ~% Y. f7 v0 e6 X
-------------------
6 [9 c0 ?3 l5 Z& ^/ N; I# j5 v附件为dwg文件2004格式,内嵌VBA程序。2 |# c9 l* ?. Z, p' v2 q

& v3 l+ G. V4 S' F/ T5 j[ 本帖最后由 woaishuijia 于 2008-8-20 11:34 编辑 ]

Drawing1.dwg

74.12 KB, 下载次数: 11

评分

参与人数 1三维币 +5 收起 理由
2005llnn + 5 技术讨论

查看全部评分

发表于 2008-8-21 08:08:16 | 显示全部楼层 来自: 中国浙江宁波
反过来有办法吗?例如lisp函数去控制窗体控件的动作,反向可以的话意义就大了!
发表于 2008-8-21 08:35:36 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数9 q4 W. j* i0 G; C: R
比如LSP程序:* r& o& V) f/ t) ~4 B0 q; H' A
---------------------------------------
7 u, f+ U8 O5 F  g9 }: V(defun c:aaa()
3 s, F+ g% U- Y* r6 C* H9 m(command "-vbarun" "a" "AAA" )" B; ]& \! w1 e9 t1 q- ]  O
)
$ I4 A0 M6 e+ F. \& V---------------------------------------! k0 g! G% F+ v: D
. j8 T" S6 u* H
VBA模块代码:
/ }- j4 q, @+ [( a---------------------------------------3 [& v& J) R# v* F+ u  v8 H
Sub A()" F+ s+ ?& [( K, J# h1 n5 L$ a
    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show7 W( ]+ m6 ?- s( B! K, |
End Sub
! f6 S/ f* X5 f( h---------------------------------------
) q! j" K8 {) _' D" O. J6 h" K9 A+ T9 @9 c- Z2 ]1 U, [& ~
另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
( w! H+ Q' M+ ?4 N& ~
1 h( v. c  \; {0 `5 ^[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

参与人数 1三维币 +3 收起 理由
2005llnn + 3 技术讨论

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?; Z; d# ?5 j( o7 R
lsp程序中代码如下:: y4 n- _  ~! o
-------------------: g6 O+ M# g' I) H, J. ]
(defun c:aaa(): f: L( K0 x# s) G$ |
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )
$ k( P2 X6 G0 l1 J" I+ j' o% {)# F7 D# Q! ^' S  t5 b
(defun c:-aaa()  b% E- q- @: L9 s- I$ v
(command "-text" (getstring) "" "" (getstring))3 v4 v: N& R  g! |: g$ l  z
)
. ]. [2 e* P1 R' }-------------------' k# @$ a5 P( b' s

* j( T6 V4 j1 ^VBA程序中模块代码如下:
' d& k2 D0 X0 C3 l" _6 G8 J-------------------
7 I6 D0 p  i- _) H4 g) {" M0 h% DSub A()
. p4 u$ T6 x3 r! |2 _$ f9 u    UserForm1.Show
/ _3 \8 d- g  h/ Z/ a9 a0 x# e    With ThisDrawing.Utility
/ v1 h3 ^% b' I* w) C$ @        UserForm1.TextBox1.Text = .GetString(0)6 q6 |' B! p- m- }$ F2 k: q. F
        UserForm1.TextBox2.Text = .GetString(0)+ k7 X+ }7 m% l% \2 l
        UserForm1.TextBox3.Text = .GetString(0)
: p( F, {; U; o/ f/ J    End With
( o$ [. A% \) c+ X* g2 n( }End Sub
2 R. w' M  |& n! u9 x# `2 g) Y& p-------------------
7 K( y' D6 C. B+ y( r, w: ~2 u; v. ]0 a
用户窗体代码如下:
: |3 V- }0 O& O; H' ^6 Q  |! k9 d# s) H--------------------
9 B" i  x% j7 q7 n2 |1 m7 EPrivate Sub CommandButton1_Click()" ?4 l, @, F+ n! v( ?
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "7 ?- C0 G/ m4 [
    Me.Hide
7 w; Y9 G6 G) R& O0 h+ i  ?- wEnd Sub( P! X* B8 u( a: ?" e& d
--------------------5 A( {2 s# J# i8 u% j

  w; y. {9 m$ y: o7 |7 q[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表