QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?
: @: z0 q2 F$ W3 CLSP程序在对话框的编写方面依赖于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程序中代码如下:2 P. e- z1 i$ i# K+ n8 ]$ Y
-------------------
& ~/ Z- ^* n. S/ `# S(defun c:aaa()
# `* Z! w# h& u' r+ [(command "-vbarun" "a")6 r! K- b" v" E1 J! [
)
0 d$ b0 r) m1 K! E5 W  C7 }5 f(defun c:-aaa()
; L, S" b* r7 W4 m. G(command "-text" (getstring) "" "" (getstring))
, @: B* J3 z. r1 \7 C)
. }6 c. J" V5 N-------------------- ^. r: p$ s, V" }( e. g
VBA程序中代码如下:
, R: R* C& @% G( |-------------------
( _9 {# n3 v0 v! M" qSub A(): A* P9 L/ |) q! t8 a
    UserForm1.Show
! a  P% O( j  \8 f8 G* \End Sub& k1 h% l7 g/ M
-------------------4 C# S' w1 z" P- _: E" G8 c3 F7 `
用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
" @$ N/ M. d  b/ F& n0 T/ B9 _ 1.gif 3 L5 \2 y$ j( e% X

" l* Q9 m8 W. e( O# K2 G- b代码如下:1 m" F6 l3 Q" m) v7 U
-------------------
4 o  h7 m+ S4 V. x& Y& l( h" oPrivate Sub CommandButton1_Click()2 r; b3 A5 l7 M: t. |% Y8 `' P
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
* h8 V: @9 N9 o$ g    Me.Hide  P; x6 `+ G' _; T3 z
End Sub
+ \: }: `7 G" K-------------------0 B( k  e2 E/ i, W3 o# h) Z
附件为dwg文件2004格式,内嵌VBA程序。; Z4 _- ~+ g& |# `! b% F
* _4 E# U7 T3 W; q* O) D+ I
[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数" {3 V$ i( K6 `, J0 t4 ~, U
比如LSP程序:
* P; R' J1 n/ i; v---------------------------------------, ~( d2 Z) ^; [" k/ m
(defun c:aaa()- [4 n) {6 ^& R" z- O% ?# I8 L" c
(command "-vbarun" "a" "AAA" )) j% R# c: u0 p- I
)
: [; U0 d. [$ A/ S! [---------------------------------------  L; n7 W/ _) p" [$ X
" J, a- Z+ m) ]4 i  B5 I
VBA模块代码:
2 e& C/ I$ x9 Q/ a% o6 n/ n---------------------------------------
) J1 e6 `. U4 T5 a6 K& U: RSub A()
6 |6 x: e" }- j$ Y( x: c    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show
( N* f9 m; C/ e& |, CEnd Sub
. v7 ]1 L% Z( M6 G$ K---------------------------------------
1 K! X* p9 [0 N) ]' ^! ]0 ^; I9 T" g5 c( P3 P; V- n
另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。' M0 c" b: l% ~' J

2 M) v! U! o* d, h[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?4 ?4 p& g$ O' l$ p( `; ~/ K$ U* |
lsp程序中代码如下:& ^) V! F8 q6 x& Z5 x' R
-------------------
! B. x7 h# @/ E" v6 V# Q(defun c:aaa()1 L* W& n) ?3 B: M
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )* L1 _! ^3 W2 W  c  R
): L1 P& A* B9 \8 y
(defun c:-aaa()
: N' E1 w: f% m8 Y4 F% i(command "-text" (getstring) "" "" (getstring))
; _: k$ J6 H, j! |: a4 F)
1 l$ b8 y6 o3 @9 o-------------------
. A- D- g$ `4 ^( g
( q8 ?1 t- h' iVBA程序中模块代码如下:
, N, V) V* a! P1 r-------------------! U7 P( f3 N+ K6 a/ O- b
Sub A()
" a/ E4 J$ z( B0 K6 {6 p$ h9 s' ?    UserForm1.Show5 G2 I7 a0 ?  L1 \
    With ThisDrawing.Utility
/ T" z( ^- i9 b: {% \* U- A        UserForm1.TextBox1.Text = .GetString(0)+ q: ^9 ~% O1 J( R; d# l4 A. G4 G
        UserForm1.TextBox2.Text = .GetString(0)# K+ b" h& @. }2 J0 }% @
        UserForm1.TextBox3.Text = .GetString(0)1 `; y: ^$ N2 m4 ^/ @
    End With/ N7 a( D$ B& B
End Sub6 u+ g% V+ z% X) k$ ?
-------------------
, x4 a: [* \  A) @+ j
$ F' D3 _+ l( f; t5 \: {6 k- g用户窗体代码如下:
8 ^' ]3 {9 |* G" \# \1 k; A2 {--------------------
0 H- w* }1 p- b* uPrivate Sub CommandButton1_Click()4 }. [# J1 Z, E5 l) \" ^# h
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "! O" u+ U# i* G, D: _! B2 _* j
    Me.Hide
2 W7 {8 |, C. C  U, F3 EEnd Sub; ~' U/ b6 r" I1 k( ?/ w
--------------------
" w4 i& ~' m+ T# k+ n4 ^' X; s9 X8 t
[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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