QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?
2 V. U1 Y5 {# O/ ]' C  PLSP程序在对话框的编写方面依赖于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程序中代码如下:
3 p6 y% V& Y; K0 m+ b1 M& t  r" h-------------------, Z. S+ \: I7 I8 t- ]
(defun c:aaa()
/ [% |4 \8 M4 ]( @(command "-vbarun" "a")+ ^6 P' j1 p- a% ^
)" M# ~6 S( W' n6 }. h
(defun c:-aaa()
' L$ x' U5 ~: ^" t& A4 {+ J- d- F(command "-text" (getstring) "" "" (getstring))* p9 u. ~  V0 R& e7 f, e
)  U3 |9 Q; f3 `( n0 L
-------------------
& z& o3 c" b- J  G, r1 h  z8 T' EVBA程序中代码如下:3 \) S0 K8 _% b( _+ n+ X; ]
-------------------8 |! I, H. ~$ J
Sub A()
# U* |0 E7 ~: K. |, E" R0 c$ `1 Y    UserForm1.Show- b$ ~5 z+ J" |( j$ d$ Q8 [0 h" G8 w
End Sub
' x: v2 t5 [& _; `" Z-------------------
) Y4 T+ e  u, J4 U8 s用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
# f1 Q/ [- H( U$ G 1.gif
+ R8 `" M3 A3 q$ P& A
4 a; v. S7 _/ ]' O. u8 n$ _  T代码如下:
+ Y4 D! b3 T0 |; f-------------------, C7 ~- m: F# F; D! `: a6 E4 K. Q5 B" ?
Private Sub CommandButton1_Click()8 f$ a3 J! k! n# W8 a
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
% O1 t% d4 x0 o: O9 h$ l" g* F+ {    Me.Hide9 l: l) a' E; L. S$ S
End Sub9 i5 F, h. x+ k  [3 r( U) @
-------------------
8 d' W1 j. `' e" A/ Q5 s附件为dwg文件2004格式,内嵌VBA程序。
/ M0 Z% o1 V- o7 y8 q
& z( a& g  B3 `* C1 K[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数
7 F: Q4 ~0 m% G比如LSP程序:
  ]; p. p) G* {5 r  I) |% h---------------------------------------  x7 ^  k) A5 ^  T$ X. q4 @
(defun c:aaa()% z& j' u' C0 J' W0 V3 [2 f0 m0 \6 F4 R
(command "-vbarun" "a" "AAA" )' c& ~* n/ W* p
)
0 U8 }+ b; u/ K7 t---------------------------------------  b3 B1 x) e7 m, A& x

5 y& Z7 Y8 z8 uVBA模块代码:
0 R8 o, y: ^& E7 r* F---------------------------------------
( m* E8 G/ U; s1 v7 x+ k. M# v# LSub A()$ A4 r# x* b1 b/ V% x: S
    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show
: ]" N- J7 w% k2 ~4 ^! xEnd Sub- L6 B/ `  X7 \! L0 S3 I0 X- c
---------------------------------------( Y/ b- _$ l7 L* I; }

8 h: ~7 J% J1 X7 L' b' H1 c0 J另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。+ v( A& k$ y1 M" W8 D

3 P2 }! k& C$ x, V[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?- T' X3 c6 i6 _* z4 C; Q0 y
lsp程序中代码如下:( K% J5 j6 `; t4 A/ r3 ~; ]
-------------------; a6 G% {8 V6 ?- p
(defun c:aaa(), X1 Z! C: k; e( ~& k
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )( Y+ |1 B: t6 L3 l1 V% m: P
)+ C, g) b/ i6 C5 o
(defun c:-aaa()+ q! s  u, D1 Z
(command "-text" (getstring) "" "" (getstring))! T( i2 X, r; m, L, p
)
# S) u8 i( p6 A$ t5 g, b8 N$ k4 k-------------------) |% Y; i. l0 Y: h8 U- j; U
: P8 ]7 F  y$ R1 A0 `* t. T7 q
VBA程序中模块代码如下:' |3 f7 H9 S3 g+ J6 N  C! r. B
-------------------
. r' p- P' D" @4 }Sub A()
" X4 i/ `. B3 r7 C6 S0 B    UserForm1.Show8 ~6 m9 z8 l4 z4 `- P
    With ThisDrawing.Utility( Y% c: t5 X( D* w+ d
        UserForm1.TextBox1.Text = .GetString(0), x6 Q7 x* ^" S1 b
        UserForm1.TextBox2.Text = .GetString(0)
' \' J7 }- p% V        UserForm1.TextBox3.Text = .GetString(0)
2 D  x, a2 R' f4 ]. E2 w    End With2 d" A# R2 q: n8 E% j2 F
End Sub4 `. M) O+ c+ o8 t/ L3 @
-------------------, P! b% X; i, f/ {& I/ }4 U" {3 I9 d
* y" k4 ]) O- m$ J, d$ n# j% `
用户窗体代码如下:7 ?. }& _$ p" T2 P- @
--------------------
8 L' R5 w7 u4 O2 C& ^) sPrivate Sub CommandButton1_Click()
+ U0 |4 h3 b& J    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "! j) l  ]  C" U. H' u. T& X
    Me.Hide5 ]5 I4 q5 U0 c0 `7 M
End Sub
5 d. a) x& d$ {& D' g--------------------
; g8 |3 _( R9 o& u% v8 i1 |4 ~) d. h0 J
[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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