QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 3692|回复: 5
收起左侧

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?# P7 Z0 t$ {) r) P$ ]# I+ M
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程序中代码如下:9 V- i: d2 V4 ~3 I2 h
-------------------/ U: d. U# T7 i/ V
(defun c:aaa()8 s' o6 u  Y1 {0 J* u
(command "-vbarun" "a")7 k6 ~2 y& e$ x- x
)3 Z! z. O, r1 E& N! v# `0 e
(defun c:-aaa()# i5 n' ^8 m1 N" }" [0 H; b
(command "-text" (getstring) "" "" (getstring))
9 [4 @* p. w/ I0 c$ D* o3 J, X)+ a( G( ^) n% u* x4 l9 ^
-------------------" k4 M; t) R4 `+ G4 E
VBA程序中代码如下:
3 q* t7 G/ ~2 S: `-------------------7 Q1 {$ y  @5 }
Sub A(): C- R3 e3 Z* H3 X* d
    UserForm1.Show
9 T8 f  U/ z% V- H  l5 rEnd Sub
( M5 A% Q7 U, }- W" ?9 U-------------------
8 A$ a( l/ i$ \# `用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图& c9 t6 I  n8 J1 w' h! q
1.gif
. H  E' @6 E& R1 L
8 G/ P, V! {# V代码如下:
% N8 H! n# u* i-------------------$ P! x+ Q% n& b& [7 n* C
Private Sub CommandButton1_Click()
% k9 ]& e- P! p/ o' U8 I    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "* w( H2 j4 i: u7 h
    Me.Hide
! A2 M; _, X5 R2 k3 h. NEnd Sub
0 r- T1 p* K: g+ n/ G  N1 P; D-------------------
+ K0 C: K- x. {5 q" U4 O% |附件为dwg文件2004格式,内嵌VBA程序。
5 n. q: @% a5 i& M7 _
  p5 l/ }: }4 h! t/ {% Y) h[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数- \2 p2 }' L; p: `; J4 y$ ]- F
比如LSP程序:
6 Y& Y7 q5 P6 v. S4 d---------------------------------------+ t' C5 u  y. ~$ [
(defun c:aaa()
$ r+ l' F/ d/ o+ q(command "-vbarun" "a" "AAA" )
7 \$ R4 Y7 b7 Q, [  a)$ c6 o! n4 G- R+ x8 P& I# D
---------------------------------------# n9 S8 R+ L! A
* t) i) a  i# u* n
VBA模块代码:
+ k* Q% S. v% D! W0 ?---------------------------------------
" r$ V5 w7 I0 b1 m) c* H) r3 sSub A()
6 [- }! p$ K  @    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show2 m3 Y3 C, x5 Q6 H0 Z) R& U, e. R, z8 A
End Sub& a% k  b2 q3 r& G( [0 \+ Y& g
---------------------------------------
9 F1 J, t* d- b3 J; _, K
& U) B+ A! W2 B3 v: e" L7 Q& N( B另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
. Q9 o3 g) s+ g$ K
1 n- y6 v8 _' q1 m[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?* [3 D5 `. H3 ?" R- c# u5 _2 ?
lsp程序中代码如下:+ G  w) X) g4 r( K' U
-------------------% d9 |$ `. Z( C# b
(defun c:aaa()
6 o2 q7 v+ W9 w' K6 y(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )$ f0 y$ n  m0 a# @' k
)7 w* z. p% r  f( w  T
(defun c:-aaa()
% ]: ]2 F4 R2 ~+ y(command "-text" (getstring) "" "" (getstring))
1 N9 p* V7 b8 O; |)' l2 [, x5 B9 r* V) h
-------------------1 {2 w' {3 M1 d8 r3 X

+ R, U* v" }% C& AVBA程序中模块代码如下:
, ?  {4 R1 f9 q9 E9 l-------------------
1 T3 B9 P! ?7 p, A  \7 @Sub A()
7 t, r" g% Z4 u3 H, S! s    UserForm1.Show
% ^; u0 l. d# k9 d7 |$ m    With ThisDrawing.Utility: y7 i  r  P5 C! t$ S# l  z* _
        UserForm1.TextBox1.Text = .GetString(0)9 l2 r) Q4 l" L4 E6 A% k+ q
        UserForm1.TextBox2.Text = .GetString(0)
. L7 p- S+ K( \" ~4 O0 C        UserForm1.TextBox3.Text = .GetString(0)3 K4 X! d7 q* f& `8 w" H: ~
    End With2 g. p( P# i* h; O
End Sub
9 m; h$ q1 `/ ?* @% Y7 Y-------------------
. _2 A0 [) F4 Z3 ]& ^2 r$ |
. G. q$ d. M& ]. i, q8 u用户窗体代码如下:. |! V" O$ \, N  m, D+ o9 \
--------------------
3 q+ X  y+ @8 V% r" W6 aPrivate Sub CommandButton1_Click()3 k  n; e. I" m4 F6 F& L/ |" P; c
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "4 H; b7 y) A( @2 A
    Me.Hide* n+ v1 J. }9 o' x, e
End Sub
2 O. F, Q5 x7 l' }* Z& f8 |--------------------
6 r" u. p3 N* k* ~; [& H5 J% t! T) b) n6 I; Q& @0 p5 q
[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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