QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 3748|回复: 5
收起左侧

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?( v* Q+ T- `" K/ c9 Z6 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程序中代码如下:
$ E6 c6 m4 s: \0 M/ ?-------------------
7 |. F3 @' W( k; u# X(defun c:aaa()5 O# S0 t9 H4 k
(command "-vbarun" "a")
$ u+ v9 x, ?# J7 [9 w( R)& `) E1 v% |! w" I! w$ H
(defun c:-aaa()
# E, ?7 W; H' j) T' M- f(command "-text" (getstring) "" "" (getstring))  y) }1 p( ?$ @4 r8 `
)
8 |' \' b0 y; B* o4 Q7 O-------------------
1 y$ ]9 }( ]8 l8 [1 O& s2 v: VVBA程序中代码如下:
* {% ~" h# [: c7 g" E; w-------------------
9 g3 D$ ]$ C  l3 u7 dSub A()( f' a! i3 X7 m8 e% }, N
    UserForm1.Show" X# a* O% j+ }
End Sub
7 j+ l7 h& I9 H& M" y, h-------------------% `, i8 y" X& D; E  i* Q
用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图4 ?3 S  O* A# U. ~4 i) L+ q
1.gif ! H5 Q- ^( ^9 W. v, Y5 E
) p% c% k' Z; H: o( T
代码如下:! J6 n0 j7 x/ g! R6 u
-------------------
# [+ d! g/ M2 J7 P7 r7 S7 d7 M( `Private Sub CommandButton1_Click()
9 M+ B3 `/ R* r, E: g' j    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
- ^* I1 u# U; z5 m2 ]0 F( t: @    Me.Hide
( B! W" O. c* H$ r8 pEnd Sub
/ Y+ k7 G8 G' T-------------------1 K* T$ J+ @9 a
附件为dwg文件2004格式,内嵌VBA程序。* \0 P, O8 S# r" b& K* I
* r7 o  |. [4 O! k- W
[ 本帖最后由 woaishuijia 于 2008-8-20 11:34 编辑 ]

Drawing1.dwg

74.12 KB, 下载次数: 12

评分

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

查看全部评分

发表于 2008-8-21 08:08:16 | 显示全部楼层 来自: 中国浙江宁波
反过来有办法吗?例如lisp函数去控制窗体控件的动作,反向可以的话意义就大了!
发表于 2008-8-21 08:35:36 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数
. t% W1 N3 C. N6 R5 O1 S5 ~9 h& i比如LSP程序:8 x+ J0 V! \2 i  T1 w
---------------------------------------$ L! L: H3 w, y- b( F" C5 C- D/ P4 {
(defun c:aaa()" O$ c: T2 `. m$ I0 x* ~) X
(command "-vbarun" "a" "AAA" ). N2 e5 x3 Y5 D1 O7 \$ G, q
)- M% [* p7 T% `0 ]/ V
---------------------------------------3 K3 h6 B7 g  h- W, l% s' l

7 P; E3 r, X8 p1 F' f$ ^VBA模块代码:
4 p! a$ a5 e8 D9 `---------------------------------------7 N2 V( S, P3 d$ \" C/ B
Sub A()8 N9 m, g& z( P0 o* P1 ?
    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show5 c. z6 B8 ~/ L' V  n
End Sub8 [6 n1 \$ T4 n3 u  j
---------------------------------------
+ A% D# ^, k1 |* K! e
' _6 T3 H# Q, |( d& M$ Z( [0 K# Y8 r另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
7 e/ D" x" N  W! ]( z4 C
3 o7 v/ e; K& v! \* f[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?" p6 ]8 ]* G0 I
lsp程序中代码如下:& s5 f0 {$ C# z: O" g$ J7 M
-------------------
6 l! q. D/ a1 K6 X( ?+ n5 o8 A(defun c:aaa(); P3 d: M) Z- i7 \
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )
/ H5 n; I7 ^( E, p$ R9 `)- e0 ~7 H  v7 t( B
(defun c:-aaa()+ f9 x: F* b4 g1 I( p1 T
(command "-text" (getstring) "" "" (getstring))( B6 d( v  b1 W  J! `
)6 D; }& f; K) c. x8 @. y/ F
-------------------
" Q1 z( G; c2 T5 z. [. I  I7 A8 o4 n5 ?
VBA程序中模块代码如下:, q' d$ g( s+ H% _/ d$ f
-------------------, }; j, B* n* H- a& A
Sub A()
# s, h  A* s4 G    UserForm1.Show" n; |$ K7 H! n/ }- s$ J
    With ThisDrawing.Utility  G6 u. f7 f" v! c% m. u
        UserForm1.TextBox1.Text = .GetString(0)6 j" m1 B/ g; Q2 _6 B) K# Y
        UserForm1.TextBox2.Text = .GetString(0)
" P: ]" [0 x9 f        UserForm1.TextBox3.Text = .GetString(0)
% O: E4 J& H' R+ z! Q    End With& @$ S, W$ K6 Z5 A! e
End Sub( i4 b" Z( [1 Y$ X5 P' g
-------------------. d7 I  y* O- I) C; w

5 Y* m% L0 J- i: @用户窗体代码如下:
% N" l3 r5 S+ }9 j$ @* ~( [" q--------------------
& k, m4 I  f; ], {) e9 cPrivate Sub CommandButton1_Click()
6 n  }( }; ]' N( v- ^6 K    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "1 k! \: G! m  `* k
    Me.Hide- [; J) T, h( @7 ?! T" }& \/ I
End Sub8 O& r% r# X( }  y  `. _+ ~/ w
--------------------) {1 t; y9 d$ o+ H
2 E- p: x/ ?1 q( O* z( O
[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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