QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?7 X  q0 z9 e4 [5 \' Z) ~/ P, \
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程序中代码如下:' M4 G* m8 U1 a
-------------------
& `9 \7 z3 h" |2 @9 y& G8 x/ w(defun c:aaa()( R5 N- P: }( ~) ^% \4 {: J
(command "-vbarun" "a")
( n2 H- b5 V& y8 q)2 Y6 U% D. S) ?* ^2 F3 T
(defun c:-aaa()3 ^4 }# Z9 {  O. `2 g
(command "-text" (getstring) "" "" (getstring))# V7 v$ C2 G2 I0 I1 B; t% K5 m
)* B1 k# X+ k: Q2 V
-------------------+ e3 B6 Y  B# u% K6 {
VBA程序中代码如下:- A7 M' y, ~3 q  x! w3 `2 c& J7 F
-------------------
& ~# v: ?8 G: BSub A()
7 ~5 c- l4 T* G7 ]- w: G4 J    UserForm1.Show) r4 S4 G6 S* E, t
End Sub+ I. m( P/ a+ O
-------------------+ X  R1 f: J# V6 y
用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
3 g$ T3 H" Q! X( N: R( `* Q 1.gif
6 e  B$ @/ H. f  R: \8 P! {- Z7 e) ]: K/ v  _$ a! Y6 M
代码如下:8 I  Y; B8 t5 N+ {
-------------------+ S6 X6 B# L+ A" P6 }
Private Sub CommandButton1_Click()
2 |; \: r% a0 z$ M' j- j9 p    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "/ F; D" D3 I5 y$ O. [
    Me.Hide2 G6 W4 x% J# f4 h3 N
End Sub
: R- U  p9 [7 D-------------------. z  J$ x2 \% z
附件为dwg文件2004格式,内嵌VBA程序。
; N1 ?4 w/ ]( |5 y4 H. v2 M6 u, ]+ j
[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数
) r& p! A. V- R* ^4 ]比如LSP程序:( y5 b5 e7 R. z4 B' Q
---------------------------------------/ y" x4 o- E* I/ r$ a7 y
(defun c:aaa()5 C9 w  q$ |, d& `$ o0 Q: Y5 S
(command "-vbarun" "a" "AAA" )% V  U; L# `/ w. C% H% M( d
)* Z. R" Y% [) U+ k
---------------------------------------1 C: q0 @5 ?! U% w
1 k  Y  o7 ?  i, S
VBA模块代码:
9 `" x7 [( r7 N7 p. Q, D/ [---------------------------------------& ~( ?, D# U' W( U+ U- c
Sub A()
) G4 v! c% A# Y4 ]9 S/ z- j    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show
9 D1 F/ j3 [8 P/ W6 N- f, A- tEnd Sub$ i9 n; M. ]7 F' @  V* Q# r
---------------------------------------
5 G1 Y9 [0 `# T$ @! ~5 d. V5 H* ^5 \9 |- X
另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。" G" d  q; |% D, C! _0 S! I  e  S
4 V4 l# r: d; g
[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?
  y7 N/ ?- q" j: y+ N7 {  wlsp程序中代码如下:
1 R8 G3 P' ]3 h. K-------------------9 _7 T, E5 {& B( c8 M8 ~8 l  U/ \
(defun c:aaa()
( Q$ n* o5 |' l9 \; K(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )
& s# K) H# B" Z; u1 z3 i' ~0 R)! [! N/ ]% V/ s7 Z) [6 b" R
(defun c:-aaa()
! s3 Q1 i+ B7 {/ Q) c, K(command "-text" (getstring) "" "" (getstring))& L0 x2 B+ L8 ?8 A% Q9 n' F
)/ h3 @) F- Z2 x; n- C5 g
-------------------
# v- S2 X4 u$ u* M' k0 U
8 j* e( h: y5 a: VVBA程序中模块代码如下:
. H* l, V' N/ ^& L- O7 F& C7 `-------------------
: l4 [+ T. W# [2 m+ {Sub A()0 ]/ k- P; M- a. X; R
    UserForm1.Show. w4 x) J; q; ]+ y& U. L: q
    With ThisDrawing.Utility
0 R5 f& u! `8 F# N        UserForm1.TextBox1.Text = .GetString(0)
5 H0 g3 g% d- K* j. g        UserForm1.TextBox2.Text = .GetString(0)7 ^0 U7 e* n  R# [/ V  P
        UserForm1.TextBox3.Text = .GetString(0). o$ o7 F# u6 [! j6 q
    End With
5 w3 N5 h7 ?9 O, G6 ~4 Z5 e6 Z1 VEnd Sub
1 o  I: @/ u& r( S* Y( \-------------------$ N/ T' Q% ~! P
: a! R; D: ]0 N
用户窗体代码如下:
* Z1 w6 k9 I9 o0 Q; w: ]4 h--------------------" Z' ~! y$ H: {! C4 A* X) q
Private Sub CommandButton1_Click(); C! h4 O3 J5 H% }4 M* ?
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
" i- Q& z  W# _9 p1 u% J! H    Me.Hide
6 R( K1 @$ T5 ^. U$ rEnd Sub
" s1 {2 L, @* P9 V+ e! H--------------------% E# g, d: f" B- g4 q0 P* G
2 q  j  j& U/ ~6 @* L$ j
[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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