QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?
" |) w1 ?1 Q" j& E$ ?# ]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程序中代码如下:
% i/ T  U, [+ W) R4 W3 Z" Y-------------------9 k+ L( \% ^% |' J5 `1 ^3 q( F
(defun c:aaa()
! y7 e' k* D) x7 X. W(command "-vbarun" "a")
4 a5 Q; H7 l0 a& ]. P7 X& W)
$ X3 W; u3 T2 {/ M(defun c:-aaa()2 M7 x8 i, U5 f; e) ~; r/ S, ^
(command "-text" (getstring) "" "" (getstring))
" i. m: T: L' E( T* S7 w6 K2 x)
. A" H. P( S; f& w6 h-------------------. c. ^4 F, |: i9 X
VBA程序中代码如下:
$ ^# e7 A6 F7 d, S: j-------------------( A4 w  U% K  R* t# ^: j
Sub A()" |  H: V) i: b  _1 i$ }
    UserForm1.Show- I: {- e' {9 g1 c* x
End Sub
8 M  }8 h7 [4 V4 ~* H-------------------
2 Z2 x" ?! C+ S* ~用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
0 y/ y6 Y- V. o5 l# R 1.gif 0 A4 v) T4 A- d" C/ {3 }0 a

. S1 j5 g( E! h* @代码如下:
0 t& l& t" z1 V0 R5 h-------------------" r. g5 r! m4 [% Z5 E( i
Private Sub CommandButton1_Click()# W- L2 }1 R$ S, f  B7 S0 u. T$ [
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
9 }# i" W$ r  o5 g/ H6 ^/ o5 |" }    Me.Hide' P3 A# z2 Z% z
End Sub# I3 \0 N+ S# [3 Y2 e# a
-------------------$ c+ i. @* E% {& N" }
附件为dwg文件2004格式,内嵌VBA程序。
) y- x9 J; y; n2 H
+ Q$ Q* W, x1 h8 a. a0 }% n[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数
8 P: \8 m) b+ K- R' Q1 _; s, J+ R9 p( v比如LSP程序:, [9 \) {4 C' t" `9 O, E
---------------------------------------
( T! V, l, v8 R: O$ E6 i( s(defun c:aaa()$ m& v& C, i4 U) y& Z
(command "-vbarun" "a" "AAA" )
4 `+ o; [* C% g( |- J* J5 m' x)5 J  h: z$ o4 G% ^' n$ G
---------------------------------------0 B- Z) ^& Q8 R- m, f" s" J

$ }/ |  b* v) j: V7 OVBA模块代码:6 c, V1 k7 q0 f) Y  ~
---------------------------------------! u- f$ t, B9 p. N: y- r& E
Sub A()8 J2 p2 ]3 T5 v, d) L
    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show0 H: T: c- Q7 v, w/ F
End Sub3 ]! K0 P' E4 ^9 f- N+ U& d, D0 M
---------------------------------------$ K# ]2 I1 s6 L

- Z$ O- G% A: D7 Q另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
& T; o# k; l8 ]3 A7 ~/ ^( |% s# J
[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?" o2 y2 D/ e, O, V% W8 x* n2 p
lsp程序中代码如下:7 g6 p) O, G# r' e) i/ d( m+ E0 c. r
-------------------
8 l& |& {  G, \9 p; H- q! J(defun c:aaa()
: ~; e2 B0 w5 |. y: S(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )
. H5 w) J& y# W) z2 j, K$ n! F)
1 U8 S, Z" s( w8 X9 v(defun c:-aaa()+ S7 i8 u7 o- e8 I) N1 `' C
(command "-text" (getstring) "" "" (getstring))5 N" G$ q# G7 `8 V: W: K# a
)
/ f) N# q% ~4 k5 n) u: y-------------------
0 |1 W$ S8 x7 w, E/ s1 e1 p( G  T8 J2 M; o$ k" n! A: t; t
VBA程序中模块代码如下:* X0 Q. G0 m, P
-------------------
& Y+ H7 L: _) D+ m$ V% g1 ASub A()! j' P' Y0 D% u1 e7 j8 l
    UserForm1.Show2 a5 [& ?/ D; W: ?( u
    With ThisDrawing.Utility3 r/ N' r1 I1 w7 f
        UserForm1.TextBox1.Text = .GetString(0)
# a  d! o$ C; g: Q        UserForm1.TextBox2.Text = .GetString(0)
- n) L9 l' L2 V+ K; h        UserForm1.TextBox3.Text = .GetString(0); H3 b+ I: c" Q; ]0 U* ?
    End With
7 o) {$ K+ @! W+ J& nEnd Sub9 o# r# h. J3 t4 W! h4 B4 C' o+ {
-------------------& _' n4 d+ k: F

+ e  e* z0 j" F- e+ O用户窗体代码如下:
; i0 N& l0 a; v$ n--------------------! H) ~3 n# q4 s9 S# e; u
Private Sub CommandButton1_Click()
; }4 a* b5 q3 W    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "! U/ g2 S& t& j# `
    Me.Hide: i' Y2 Z! z& i+ i* J5 P
End Sub
2 d. i4 \1 g+ R3 X--------------------
6 n% k( [$ a  U, R
) E: f" o  K) }[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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