QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?
$ V( ~+ B! o* A* X  ~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程序中代码如下:7 I' h0 ?# w4 L. Z4 F
-------------------' h* s4 v9 I0 @3 a/ c
(defun c:aaa()
3 ?- T5 X. D* k+ \" o! k6 N(command "-vbarun" "a")
0 C4 l( D, ?: v)
. x- ?& g$ w' K" g# K, L/ |8 L(defun c:-aaa()
0 z8 C( J- s8 y8 a. o  ]9 H(command "-text" (getstring) "" "" (getstring)). y. X" D6 M, a- h5 X
)
+ ?0 q3 }% Y% I7 {9 R-------------------( z: G' x5 n( L( j* Y  b% L
VBA程序中代码如下:
) ?1 M& R+ |) C4 I-------------------" O& d1 y+ M% ~! h7 R. C
Sub A()3 o# h! d: C- m, Z- I/ n2 p1 U: b
    UserForm1.Show
5 n. C7 r% n- ~! H" I. cEnd Sub
5 c/ r% ]) Z" Q- r6 X; I* b-------------------
3 C7 j' o- o+ Q& [( E7 o' t1 Y1 ?用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
6 e6 F$ W6 U" C9 b% N/ V: a, Z 1.gif
" c2 i/ ]* p) J" R7 M1 \/ {* T4 D
代码如下:9 q( }- h( m& Q! h$ L$ s* \
-------------------! i5 N* B/ B: h2 m" i& q
Private Sub CommandButton1_Click()
+ C6 R2 _+ y6 I/ d% w! F' f* z& O- @    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
  n) w/ }6 Y% q    Me.Hide9 ^9 P5 U3 S) m- A
End Sub# B3 p" w! g$ X  K3 A" N! Y- k
-------------------( z/ n8 o$ }. ]
附件为dwg文件2004格式,内嵌VBA程序。
4 X6 {4 U' t( C5 u8 r3 _1 f# C, c; I5 l5 F$ N: v: M' l
[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数/ m* _8 \. @& p( R. R2 t
比如LSP程序:
# Q' j/ `' H8 G4 f$ L/ Y---------------------------------------
; I- i" a. E3 m- W(defun c:aaa()1 ]7 p. r: U9 A  ^
(command "-vbarun" "a" "AAA" )2 m. V8 ]/ \& f$ Z3 g7 y! m6 f
)
' h$ Y- M' A) D4 c---------------------------------------
/ \% q+ p& s1 ~# M$ [8 M$ B+ @$ e. U6 Z. ^. R/ n# j  O
VBA模块代码:% e4 R: {5 s0 F3 m8 y
---------------------------------------
4 ?1 T9 M. S1 }) }4 BSub A()& e$ C+ O8 F  c5 }$ B( }7 J
    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show
7 t# q2 k6 W# YEnd Sub
, L/ y6 C: d8 @$ L: P; C& C---------------------------------------
. G' I' i4 [5 {) w1 c/ i- Q* B+ L& c; p- T+ x, H& n+ z
另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
0 s- ?/ N2 }  @0 m4 A
+ V8 q8 `7 ?, @& ~- u[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?# P- \9 p( n: p2 Z& ?# D% p0 m
lsp程序中代码如下:/ i: T, L' |. z
-------------------
3 q& M! l2 H5 c% u5 L% {: e(defun c:aaa()9 F2 ?2 Q/ f8 b" A! a
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )
9 j' F0 s2 X- Q* ?; u2 o)& n$ t8 D. o7 r( Y! s
(defun c:-aaa()
8 v+ Z6 {' V4 J9 s8 D/ |(command "-text" (getstring) "" "" (getstring))3 z0 M7 B  M% r& M" l0 K+ s
)
2 P% x" K6 y, ]6 ?-------------------$ s+ P) I% ?* C' _

" V; H: w6 Z8 m6 h+ H/ JVBA程序中模块代码如下:) s* D' Z3 Y* W( X1 q
-------------------
( I" F8 A# j2 a+ s; G0 z# I! ~Sub A()/ m- L" p2 H7 D( k9 o
    UserForm1.Show
8 T' t9 R* [' }  ~, n    With ThisDrawing.Utility3 x% I5 u% ^0 D
        UserForm1.TextBox1.Text = .GetString(0)! O# j2 U8 Y9 `+ R
        UserForm1.TextBox2.Text = .GetString(0)
0 f- K! A$ t) i. B8 d0 I        UserForm1.TextBox3.Text = .GetString(0)- p# W( N  R( u# K) D7 ~; {0 T' {
    End With
4 |/ Q9 a4 N/ w8 KEnd Sub) [3 \, B+ H3 z& }& E! N. W
-------------------8 L9 T; [' o8 `1 A
! \! K! \; U; H, H" p) J, p& o
用户窗体代码如下:
/ @3 D1 S0 b& d5 @/ t) K) Y0 W--------------------% P! m5 W8 y) m. G5 e! K. W
Private Sub CommandButton1_Click()3 X% v5 y& V1 p3 x4 q3 D
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
# ]0 R5 H8 S" A    Me.Hide
% U' \2 k: y/ }End Sub
7 y' d8 t. O$ ~7 X8 X--------------------
; N% y9 @% y8 ]; v0 ?- F$ I
$ \- t" B) u6 L+ d0 `. Y[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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