QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
7天前
查看: 3720|回复: 5
收起左侧

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?/ E% _0 b" Z+ d7 Y
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程序中代码如下:& W0 a+ p% u- o, I/ {% {
-------------------3 v- O& E! _0 Y2 h% ~
(defun c:aaa()
0 M, A8 Y! z) h% d# X* n(command "-vbarun" "a")
2 k+ G8 H  Y. q1 z): F' ~+ g; _3 ~% Y8 }3 s+ C
(defun c:-aaa()/ Q# H4 h. O3 ^/ Q! s3 w, \
(command "-text" (getstring) "" "" (getstring))" o9 F; T$ ]" s# S6 p% Q
): M9 q( t( o8 v0 [
-------------------! P. O$ K! a, j& I1 g3 n4 [( i
VBA程序中代码如下:' H" |0 t5 q& _6 f  h
-------------------& {7 e# s4 M' s/ ^: {  X
Sub A()+ d: n& Y# l* P' x1 L; a
    UserForm1.Show: t" [4 R* W/ p- _# _" \- y
End Sub
$ k6 l* S+ P: j5 \7 F-------------------
) O5 W5 `" _4 v. i/ h! n8 v% f- v, Z1 C用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
2 e/ Z3 q+ u4 f4 F 1.gif
' y. Y. }( n& v$ w8 a0 b' e6 r6 N+ t- Z
代码如下:
6 u( x) F( X( M4 J, K* N* T& M-------------------* h. \8 a4 G5 s9 g' P6 ~
Private Sub CommandButton1_Click()
: p5 Y% z8 B" C9 S% }% f    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
& Z$ C+ h( i1 Q    Me.Hide
7 n8 `( p" |6 IEnd Sub
( ]: R4 `( C. _8 Y3 e6 ?-------------------4 A7 `3 u2 ^) w* h' u' ^% ^3 \. G; n+ M, x
附件为dwg文件2004格式,内嵌VBA程序。
7 j7 _& E$ r3 u. B% H/ T: J/ Z3 T# A  q5 s' o
[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数
) j$ T( b; x7 b- V8 I比如LSP程序:
( G3 Q6 i, a, k" a5 a" c+ Q---------------------------------------0 D- M9 x3 W4 ~% m
(defun c:aaa()2 X; u) {: U% x) z. {% _( K6 o
(command "-vbarun" "a" "AAA" )
& b0 z4 B+ F( ?)
) H* R8 W( X8 k: a- z---------------------------------------) [  Y/ l6 m8 g, m

7 t4 y$ W. p& AVBA模块代码:
5 E& e8 t0 l. e( S& ?( S1 U7 ?---------------------------------------1 b! E8 R  _# f9 o/ ~5 ^
Sub A()
  q  Y7 D% {7 {0 C# Q1 Q4 {1 X. V    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show
8 N- o% l& e! w% L& i' DEnd Sub
' k. F9 b7 S6 C# |7 ], n---------------------------------------
: ~! l2 V1 W6 S
( K3 p' G" ]5 o. m$ `- x* A另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
6 t2 D  m9 k4 s6 z  s
) n' k( O% h7 K& l# ^[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?' j) u! Z4 m' c, c6 D+ `9 g3 C4 W
lsp程序中代码如下:1 S5 d+ K/ v! I5 M
-------------------
1 N) v9 c( E' J4 x* v6 C(defun c:aaa()
3 M- E0 d4 d, d" ^4 g(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )& F9 s% r$ j$ z' d: v) L- S
)
. f( q1 \$ s$ ~. y(defun c:-aaa(), q+ l/ V! A$ M
(command "-text" (getstring) "" "" (getstring))
3 Z; d6 [6 |, u. G7 K7 @: e)
3 R, B7 A6 C8 w0 A' P- \* a" y-------------------
2 Z5 w; }. V1 ]. d7 k
: N: m0 K# ]. ^) {. D, z. rVBA程序中模块代码如下:2 M( E* U$ h& c9 q7 D7 q
-------------------9 {! \% `3 i  e  {; Q! F( B
Sub A(): P* A: U( {# c0 T, |/ k
    UserForm1.Show* ]7 V' A, b0 J7 |& F5 a* \- L
    With ThisDrawing.Utility- G2 [5 q+ X* n' l3 V
        UserForm1.TextBox1.Text = .GetString(0)+ O0 s0 F# D" B
        UserForm1.TextBox2.Text = .GetString(0)
2 ]. L3 h! x5 j; ?6 U0 H/ k1 k" B        UserForm1.TextBox3.Text = .GetString(0)3 M; D5 H* D" D8 t; u& W7 }- _1 i; @1 d
    End With4 ]* t. b% n& a5 I8 g- R$ w
End Sub) {: W8 q/ n# o  |9 G
-------------------
. z" c- y* [& }# D
( U8 z+ |' z  r) `1 e用户窗体代码如下:
/ m5 I/ y' I0 |--------------------
! H2 t5 g, C, KPrivate Sub CommandButton1_Click()8 _- R! J) m1 R" x
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
' \# V1 u  [) b8 C( _4 Z    Me.Hide) O3 i- E2 [2 r9 E3 g/ |
End Sub, d# Y6 M. `/ a$ Y1 I
--------------------3 i- z) l- I1 M+ T

7 I; U# C' h5 t( Z* C[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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