QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?- t. Y# b: {( ~1 H" O* t
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程序中代码如下:0 r4 {- X: k9 A4 j! K
-------------------9 H. M5 e' P! M* c5 U9 X" P
(defun c:aaa()
( g6 o, s+ C0 s* c" f1 J) V(command "-vbarun" "a")( |. r; _8 m! x
)
+ U, t' V: T8 s6 Z(defun c:-aaa()
! m9 n: x. S) A/ ]2 V2 Z1 u(command "-text" (getstring) "" "" (getstring))
7 [7 Y0 p+ F, Z)
8 I9 U! p% J  I+ O) W' j-------------------
* a; r3 ]$ n/ S; o' wVBA程序中代码如下:9 I/ a" n! D# ^( J3 j; d
-------------------
5 `/ _7 F' s3 x  }5 ~( zSub A()' i0 n7 T4 E2 ^4 z! I' S0 z
    UserForm1.Show
% ]* L+ l. o* W2 C0 {8 T% qEnd Sub" |+ r: g/ i, b3 P7 V5 n% u
-------------------, H' v7 h5 D, o0 F! S, ?
用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图5 L7 }* Q% v0 t0 G4 f
1.gif
1 W8 Y8 p1 Z7 d0 a7 \( H1 E- `8 c& @7 A
代码如下:
/ p' m' T5 M: G6 M8 T& u-------------------
& g( l" h9 R: xPrivate Sub CommandButton1_Click()
/ T8 o+ c$ P1 E8 {$ u7 Z' T% ?! i7 v    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
/ {0 s) O  N* f6 U    Me.Hide0 X9 [! M; v% {
End Sub
+ M0 k+ n9 q/ n- e" P-------------------2 m4 W6 J' k/ w+ @( S1 p
附件为dwg文件2004格式,内嵌VBA程序。
- ~4 x% c( ^4 ]  k/ Y5 y, w8 ]' @+ Q  Q0 ]( d
[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数* ]6 E! C7 e2 J; A; Y$ ~
比如LSP程序:$ t. o+ i+ r5 `0 K
---------------------------------------
* z% P; W  y* m1 \7 P- c4 o(defun c:aaa()
/ Z: `* _# X8 L(command "-vbarun" "a" "AAA" )
, y. v! ]8 W# p$ r0 ?5 K; h4 t" b) _)2 V7 E# j' u  E9 {+ d& a
---------------------------------------) A" p, J+ Q+ ]7 [5 \/ b# T% L! V
6 X7 ~* [& J5 j% H+ x* T
VBA模块代码:
( E' S* |2 F, C! V- N0 _---------------------------------------
$ U% L  S5 Q/ h; ~5 z  gSub A()6 T1 V7 W, n0 l+ ~. h: ?
    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show3 ~! w6 V$ Q1 `' p8 G$ F2 H
End Sub* t' w! d, n$ @! U' P# Z5 ^
---------------------------------------& c5 P! C6 I. r! G; p
' H# [$ d% U) O8 ^
另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。7 y8 @9 Q* E7 V& ?. z) ?( }& f3 C

# j- m! O* w6 m2 g; J# V& f' S[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?
  \  b  V+ @& b" d5 blsp程序中代码如下:, [' {& \7 x8 r% A
-------------------: A2 g1 l6 x! P" }6 o5 ~$ U
(defun c:aaa()$ _8 h/ P/ q" E; q! @4 K: y1 H
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )) ~2 m- T$ G2 c  t/ a- Q
)5 s) I3 @9 g( u
(defun c:-aaa()
, x7 L: H" V/ T3 o, ~- e(command "-text" (getstring) "" "" (getstring))
. }% M" Y5 S$ r3 G9 V7 r3 B)1 \7 B# ~4 u' U7 ?8 ]; D0 i
-------------------
, x; [) ?, _4 F$ S) i1 ?+ r5 }9 R; _' f
VBA程序中模块代码如下:  g. |, u: I5 }# C1 P
-------------------  C; p- F! J3 f9 w6 q3 ^
Sub A()
) F+ f4 H( s7 @1 R3 a2 N* ?    UserForm1.Show
+ H& j: b& N8 h    With ThisDrawing.Utility. G# V" }2 A1 r, C" E. k
        UserForm1.TextBox1.Text = .GetString(0)
* w7 e8 D! L- j7 j& v: t8 x+ l        UserForm1.TextBox2.Text = .GetString(0)
6 O$ H* D. g" n        UserForm1.TextBox3.Text = .GetString(0)# K# C( U5 b% l( m5 T0 H
    End With
! `+ O: n4 e. F7 m( \7 DEnd Sub' ^( k' B0 y2 R! [* }7 {5 \
-------------------
+ }2 l* o$ `( W# R, Z
0 @0 v& K, t% q- [' C用户窗体代码如下:- d0 g5 ~' P$ ~. S' C6 A
--------------------
( K7 C* }" M4 _Private Sub CommandButton1_Click()8 V# j: u2 T. ?+ ^" l3 |
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "6 b5 O2 V6 d" i3 T2 X' k
    Me.Hide
( Y% z; S9 r/ b$ p) C. i! ?% pEnd Sub6 ]0 }* U( ]( ]( H2 e! g0 X
--------------------
. ^4 d8 p0 O& s) o
/ f: r/ @8 Y+ z6 O# `8 d2 H1 Z[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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