QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 3724|回复: 5
收起左侧

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?
3 c5 i: L* ^( x) N+ Z( zLSP程序在对话框的编写方面依赖于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程序中代码如下:
2 `$ T) f2 `1 E& U-------------------! ^) r& V0 O/ }4 L) u2 q
(defun c:aaa(), d! D/ }; U1 y$ s. s# M& Q$ U
(command "-vbarun" "a")* [. `6 W$ a  i6 J5 U' }. p
)
( {8 `: J& u3 }(defun c:-aaa(): V9 Z: W( @7 n- c
(command "-text" (getstring) "" "" (getstring))
" ~, K6 V% n% s" V5 J$ x( I" J). _' L& _- b3 B1 _3 r, F
-------------------
# W" q$ ]0 V- U! iVBA程序中代码如下:
/ G$ v" W( c$ \3 w5 I1 I( A: t-------------------. _! d! r: s4 I) B- ]
Sub A()6 G5 C; _- T4 \; p9 j
    UserForm1.Show6 J& L; _4 s9 g8 ^
End Sub# Z7 X2 w+ I0 l3 J6 n) x' M8 u
-------------------
' u/ ~/ }( O* c用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图  H1 u  L  |! B. D. L* i8 e
1.gif
. ]. X3 P& b0 `7 k/ o3 C" Q. B4 W' \- Z% X/ b. s3 P- z
代码如下:
7 K. k/ v, U6 p! l4 G4 T-------------------0 B7 g, W$ M' m4 B
Private Sub CommandButton1_Click()
2 O+ N* o! n) b+ W2 M: R    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "- [) H0 z5 s* a! H# R! b
    Me.Hide" g4 g: e' h1 F* L5 y* W
End Sub
  ]: d% j7 [/ o  c; l7 x( u-------------------
% \& x& i+ v  |* X  }% E8 t0 c. h2 u附件为dwg文件2004格式,内嵌VBA程序。
4 ^+ G; {7 ]2 l7 P# [0 S
+ n- Q  A. C* w1 n: P! Q[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数& N# b* o- H  ]* v: k- D# B
比如LSP程序:
1 S1 x6 ]! Y' y; x5 `7 B5 w/ k---------------------------------------" i% o& g4 l  p! c% h# [2 E! p! x+ i
(defun c:aaa()
; ?, J' g% h/ w; e3 U, I(command "-vbarun" "a" "AAA" )
0 T2 T' q  y" Z% I$ A)4 L8 Z& ~: t/ @) a. g1 d5 p
---------------------------------------3 o/ q3 A$ b0 v. s. n

5 `8 V2 m0 x7 M! C: ~  }VBA模块代码:; ^: X' q$ ]7 |5 K0 X
---------------------------------------5 M( X" S9 ~; y- z% ^
Sub A()
; ^3 T" Y6 ^1 N% ^8 z5 T    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show! b( v+ X2 A4 D$ D( r
End Sub
. @* t7 }+ [( q---------------------------------------
/ d: c$ D! X  a+ x6 n
7 Q* H- z; \1 ?另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
5 A% o# M- A! o8 i& A' `5 S
9 P- F6 T5 d+ p" `' }/ G5 ^[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?0 }/ A! ^  o: E- p
lsp程序中代码如下:& k& ]: q/ b- v% L7 T
-------------------& X* ?, V" F" b% m
(defun c:aaa()6 }: {; P/ W; g0 H/ |; S# U0 V) W
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )
% L5 p' i4 v( z)
6 ~( E% x1 n( U7 P6 Z8 W$ j- x(defun c:-aaa()
: M. ?! i0 n# e6 X8 N  T(command "-text" (getstring) "" "" (getstring))5 J; l$ ]! {3 Z9 y. K; a/ L) K
)( t$ G% U. k* a( {3 n! @0 U- F
-------------------# [* B3 G. u3 ~* R2 @  K
, U; H, m) ^) \0 W
VBA程序中模块代码如下:
' y/ w: {6 [6 @6 {: C7 @. m-------------------7 N  L  [0 p- y) @+ a8 q
Sub A(). r; X$ ]" u- q: `! _: A" o8 r
    UserForm1.Show
$ b* K4 W( s( |, p8 G7 |$ l1 `    With ThisDrawing.Utility1 g" }) B! }% P- n, m9 U0 P. p
        UserForm1.TextBox1.Text = .GetString(0)- p1 d. `+ G- A% r
        UserForm1.TextBox2.Text = .GetString(0)% M8 n/ M' p3 [" t0 l
        UserForm1.TextBox3.Text = .GetString(0)7 p  Y  i& d" J; o! R+ A& v8 [3 R
    End With
6 ?, @/ I6 q2 h- l2 @& O1 X: LEnd Sub6 ~) k: y. C8 f- A! T1 x6 g5 K
-------------------( C. Y3 p9 ^1 M& S5 K( |
( @% r1 l! C6 I, ~& \
用户窗体代码如下:9 h1 u5 X- K0 r& W1 L
--------------------2 p0 i" K4 L) W% K
Private Sub CommandButton1_Click()( f- s' e' y2 t9 u- H
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "3 l; p% E3 v  V5 B- A  A
    Me.Hide4 g$ n% `' s/ Q3 N
End Sub  y& ?6 y/ V" K
--------------------
) N- L; O) s" x1 e; n0 ?0 `+ t
, g$ F  p$ i. s[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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