QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?& i, q  ?( u* D, F. S
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程序中代码如下:
6 h7 l- U; {+ S3 k-------------------
% {' A5 d) x4 _5 |0 {% w/ L(defun c:aaa()
7 ^. a& i" F* o' L2 r' h(command "-vbarun" "a")
  D2 _' `# r) t: m) n. O3 ^)$ H. R3 k% M, I5 C# q& [
(defun c:-aaa()
( u! l/ N3 W/ j(command "-text" (getstring) "" "" (getstring))
6 |: U, ]! b2 G: t)
6 ^4 c* K& Y  c8 e-------------------
% N. A' d! D$ n7 W$ g. a3 kVBA程序中代码如下:
- ?0 h" B  i- S) l% m2 x; d-------------------
% d2 O. ^( O* \1 p6 \( S* USub A()
5 S2 L& [# i7 e& F+ B3 ]6 H, f    UserForm1.Show
) c6 G  j1 `8 x8 z: H6 BEnd Sub
& c! n" v9 q  I( X+ ^$ i$ ~! m& x-------------------7 p  Z4 P4 k+ p" u3 x+ u
用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图0 C7 K0 q# A8 L0 G4 I, y" l' n
1.gif
* ]2 o# S4 G& z  C* z; g" M6 ?, u# p4 a4 o5 z/ ], t* }: Y
代码如下:2 {3 R: E) k" W% ~
-------------------: ]; E8 x2 w* _. R9 v1 R$ s3 s  r
Private Sub CommandButton1_Click()
( `& w) H* E+ A: Q6 J" t. P    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
  v) X( ^3 V/ n) [6 M9 R$ s    Me.Hide# P( f0 k. V/ ?
End Sub
1 b+ m- A, t+ s, E6 ^# F% ^2 [& ~-------------------
8 l0 u' k+ U2 n4 ^) \( e; p附件为dwg文件2004格式,内嵌VBA程序。* E* L5 T0 K$ e% r5 w+ o7 r" d
4 `, K' ^- h; K1 Z7 R8 \4 u
[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数
: S$ e) l8 ]/ g+ t比如LSP程序:$ F) `6 z6 o7 G, Q! u
---------------------------------------
( |# A' E% g8 T- I! _. W' q3 W(defun c:aaa()
3 a% j, c7 X& b8 a6 k5 J& Q1 N(command "-vbarun" "a" "AAA" )
. L: D' Q; p  `6 J3 l)5 d( e3 y- V) E7 c
---------------------------------------2 K2 V6 b! x; ?( G" @/ J
7 `- d1 B0 ]: C  b  ]- R
VBA模块代码:0 E& t3 F3 e. H  B& @  ^3 k
---------------------------------------
3 X8 D: k0 A9 JSub A()1 @4 I6 H% Z9 [3 [3 }
    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show8 k7 N& S: `0 W$ a
End Sub- C: M" u+ X* D7 M
---------------------------------------
6 Z" @, i5 l2 w1 _) D
8 ^/ d& U- {3 y6 P+ i. R. Q8 ?另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
" _: w) [' w9 i! l1 H" X- m, y
- ]4 T- O; I" t8 |- ~1 \[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?9 m; s- p5 l" U
lsp程序中代码如下:: ], e  Q# \7 R4 ]1 S9 K- f
-------------------
8 i" g: f" s! |0 \( N3 ^(defun c:aaa()' K; v  W5 ~$ U. _( r; \- d
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )
2 `" C) b/ _9 ?5 p9 s)
, Q1 g. f3 a2 `4 [(defun c:-aaa()
. u) M, \7 O, D(command "-text" (getstring) "" "" (getstring))
4 \0 d: W( c" P# v. X' b)4 C1 ~9 y2 D1 S+ o' a5 S4 V
-------------------
; D1 g; s; y7 m2 g) h0 x
8 S0 h8 o: ]- e( ]( j$ GVBA程序中模块代码如下:, B3 M3 r* M" ~5 c# P
-------------------1 M$ S! Z: l4 x
Sub A()- R/ s4 A% t. r
    UserForm1.Show, C0 a/ H9 B! f4 [' a* y# Y( e; f
    With ThisDrawing.Utility
4 E. q: |( ^2 X        UserForm1.TextBox1.Text = .GetString(0)$ q. n% N4 o% H- P* b$ b0 T/ N
        UserForm1.TextBox2.Text = .GetString(0)/ H# M' h7 ?: ^- s- B% m/ d: J' g
        UserForm1.TextBox3.Text = .GetString(0)
. I4 u+ k3 Q8 v, y, Q    End With
/ M! q' t4 j& Z9 g( z$ ~$ yEnd Sub
  d7 p/ i. }; Q0 x-------------------0 L4 D2 U8 w# B# J) ?: M) V, l

5 R4 K+ Y3 O+ M7 B; Q! `2 C' P& L用户窗体代码如下:
& F$ }; \' y1 Y" Q--------------------: M9 s2 J8 E5 [5 r$ y+ @3 n
Private Sub CommandButton1_Click(), j9 P4 j0 F' b. }% S; g# {
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "" _% A; v/ {' V3 f9 h
    Me.Hide
# d, Y$ x& _9 x* Y( ^  ]End Sub- Z- W; d+ Z4 p, ^+ b
--------------------. v: O% y) F6 X% z

+ o, [7 Z( V9 u8 \. `& S[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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