QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?
; c* I( f+ [4 \6 F7 F: bLSP程序在对话框的编写方面依赖于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程序中代码如下:
, e$ X( e& s" L) t  w) G9 @-------------------
$ @% Q* j6 }; r+ Q) w2 j7 k(defun c:aaa()
, l1 v! C" P8 s(command "-vbarun" "a")# ?& n% y0 G0 T- z
)
( u! H- ~0 Z0 [( d9 |1 N+ O6 m  ~(defun c:-aaa()
7 |% A7 W* z% o) w9 X(command "-text" (getstring) "" "" (getstring))' Q! v/ S) s: r  }. p, F
)
2 }! {2 J7 a* M1 S-------------------
% @' ?7 Q* C8 tVBA程序中代码如下:3 a/ q% i& d4 t. |* _
-------------------
8 p9 P5 j' K6 H& N, RSub A(). P& d9 @3 J. [- X# ^( W
    UserForm1.Show
' M+ x) K! Y% o! ]# d+ C  _& Q2 d/ [# tEnd Sub
  C" R# U2 I) K0 `; i& g-------------------
& N2 u9 u* K  a) c8 y用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
. |3 q, U- \1 m2 s* j 1.gif
' ?- `/ D0 T8 Y' X% g& w0 u- {4 ]# j, T& r% [9 j2 b
代码如下:) N$ l: T6 R5 s' C; J. d
-------------------
1 S) ^' E/ ]4 Z1 D5 X5 EPrivate Sub CommandButton1_Click()
& i* e! ^) }# [# K    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
' H9 |5 I6 ~9 W4 y6 W    Me.Hide& v* `8 t4 @/ ?1 H( @+ `( }
End Sub
( Y+ c; [3 r/ j% \4 V6 f-------------------
! L6 b% m5 [2 s1 e, y5 ^/ O附件为dwg文件2004格式,内嵌VBA程序。/ {. Z& w1 q$ X- R, ?/ n3 g
, [8 q: q5 n; m2 l5 T  p
[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数6 [( T/ Q) u) K$ I
比如LSP程序:
7 F/ f8 l$ C9 R3 p0 P0 c! z2 \) |---------------------------------------
7 o; T! H  X" q  I1 i(defun c:aaa(), J9 q* R8 s7 V4 u' N0 t+ l
(command "-vbarun" "a" "AAA" )
5 B" w/ D8 [& r: S: F6 h% p)- S9 }! {! a) \. i* F4 p
---------------------------------------5 f! l* A) j( D

+ P. V& {+ q) w: z, Y: g3 qVBA模块代码:
1 L: R/ D0 k+ g2 L+ i---------------------------------------8 Q: j5 ?7 X/ V. z4 d
Sub A()5 p/ }" j. i8 k+ J6 I0 o! {
    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show0 F# D& Y# I9 q/ Q
End Sub
0 O$ p' G* p3 ^---------------------------------------& O0 w" e# }1 H1 y- i! t
" _; s0 A/ ]3 B
另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。- f$ {1 s4 w- J& B9 r

% e* V+ |1 ~* f0 ?* l3 y[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?" ~* R9 X. |9 j+ d
lsp程序中代码如下:
0 B2 g  n+ x1 b3 I-------------------$ g& E; t3 O" k1 n8 D
(defun c:aaa()
( N3 H: L9 L1 ~5 e5 r$ V& ]0 X(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )+ d, ?/ L  N9 F5 {" E
)
# A( x" T1 I- e8 j* Q5 M: d2 {(defun c:-aaa()4 C% @/ T3 b! q' j9 y2 o
(command "-text" (getstring) "" "" (getstring))
) M7 z+ z' [$ n)
& w7 f2 L. N  i' U1 q1 s' B-------------------/ h" g& ~) I, L& p

4 U; }0 T7 f) p4 o% dVBA程序中模块代码如下:: z" E/ F9 a% d" Z8 a
-------------------
' z1 `" e8 u" `9 g7 J& ?: q5 ASub A(), e" V! E1 O( c9 y; B! m4 A
    UserForm1.Show
" ~  ^9 L" e" R7 r# `9 [    With ThisDrawing.Utility
- V: q, N, L6 K$ A8 y        UserForm1.TextBox1.Text = .GetString(0)
. d# S  D  c( ]% V+ Y+ `6 o1 f' t        UserForm1.TextBox2.Text = .GetString(0)
6 T; @. G( d/ N8 j8 ~        UserForm1.TextBox3.Text = .GetString(0)
# v; d( p* O$ C0 ~4 S( k    End With
! g3 S% {9 O! G% yEnd Sub* w) L7 b0 C0 p1 r7 T* r
-------------------
& w6 f. U& R6 E4 E! b# W$ S1 Y; n3 V+ d4 t: ]
用户窗体代码如下:% [" x  X# k' }  x2 |
--------------------
4 ?$ n) `! n+ C/ N$ E4 r5 b* f/ F. v: @Private Sub CommandButton1_Click()
+ }$ y: W/ }" b; W; ^& R$ t0 o5 R. d    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
- t2 ?/ k/ ]2 h2 I6 M    Me.Hide
/ {8 ]- K6 w- C0 yEnd Sub
9 |3 M9 p6 h  C, v) f6 o) |--------------------
; T0 o& I8 J. |  w% Q9 A5 b6 M' J; ?4 l
[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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