QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?
  M- y- }$ v8 [: P7 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程序中代码如下:- `: g0 R/ _8 p8 S& X/ Y7 S" p
-------------------
( i+ t. q, f' o% M* z(defun c:aaa()* v( e( P, i3 m0 E. i0 E- A
(command "-vbarun" "a")
  m9 M$ s9 o9 \1 ~6 z) v0 Q$ Y, [)
- g+ V$ i! O) Y: D$ d" `# D(defun c:-aaa()
; `7 D; G! X& ~8 M# B* V$ G(command "-text" (getstring) "" "" (getstring))0 E' m8 n% }% ^) B
). i; f2 B3 M. \1 V5 K4 q
-------------------# B! {+ W( A4 o0 D. P9 m( K. k* w
VBA程序中代码如下:6 m( y! b! _$ C7 {" v& x
-------------------! L( B8 ^) a! p2 l3 Z$ x
Sub A()
0 v4 g' V$ H; k4 Y    UserForm1.Show
  K  `- O2 A3 g4 G6 TEnd Sub  G5 w( [( y: n0 U
-------------------: b2 q* |' m  `7 {1 a
用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
+ w6 X$ J+ ^- ~; Z' `$ J 1.gif
/ ^# O* l7 w; y  w: r" a9 C& B, {% t3 f5 H5 X/ O9 N  ~
代码如下:7 J  C4 a! L- U& ]8 l* j( O+ i
-------------------) ^  ]3 E6 J0 Q# _1 b5 [
Private Sub CommandButton1_Click()
9 @9 v$ {1 h; e- f) z+ X: n    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
# b- U+ g  J0 |    Me.Hide4 E" n" s$ E/ y3 r% ^4 M
End Sub! _6 e4 a& [" y; i( s! x0 w) O
-------------------, t4 F% W0 H  Q4 g& l
附件为dwg文件2004格式,内嵌VBA程序。
/ d- S# ?5 b4 F! W# n% p0 G7 P! T$ x  d( c# b
[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数( D" i9 v* H; S
比如LSP程序:. v2 C. F4 A5 m1 _$ J/ }2 x2 |1 n& i( P) N
---------------------------------------2 p  m+ g: f( ^: f  h7 B! S
(defun c:aaa()
( E+ V. j" k: [; V(command "-vbarun" "a" "AAA" )
0 l  I* Z9 p* P6 x! j2 \! n)
: _( n4 U, w( [- ?7 w) q5 z( K7 P$ j---------------------------------------
& u$ l1 D4 X2 `* i& Y5 X# Q
* E& h. E3 o# n* V  BVBA模块代码:
# r7 h7 l3 F9 l- Q1 v---------------------------------------4 W) t, C% d, X- [+ |& j
Sub A()
: t' T/ |9 G; Y    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show
  w8 T* |' g3 H/ D6 \: ?) MEnd Sub
* s2 W; R2 M8 v# x7 k---------------------------------------" Q5 M: k  h! j3 K$ N
! M# p' \; P4 J6 v' |5 K
另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
: z% A7 r" W5 t1 Y7 H8 T# \$ c
# Q/ _& d" `0 d( j( {- G[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?
, D. q: i; ?* d# M: W7 f: Nlsp程序中代码如下:
+ Y  r; `0 h" i7 w9 H-------------------
! w) P( @0 K  L5 S/ d- G- V(defun c:aaa()
! s' d' R5 X& D- \! R(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )
# H+ m) t- M' v8 j0 R3 R) \)- |% g9 J! k" `! U. k/ I' D
(defun c:-aaa()
/ T' I. e1 b6 ?* M4 K(command "-text" (getstring) "" "" (getstring)). b- F' r5 g% Q. Z
)
# }9 n" P" a* T; I, Z4 E. N+ z-------------------
5 `2 f1 D* {- H# L" s( Z) m! w- d/ I. Z
VBA程序中模块代码如下:' U4 f. I; H3 i0 `7 L- H5 t
-------------------
" k# ^1 D, B  k1 _' TSub A()
1 D9 Z9 l# B: P8 y. i    UserForm1.Show
4 A; m2 g% @( Z$ h& G    With ThisDrawing.Utility7 E" K& I! G! s
        UserForm1.TextBox1.Text = .GetString(0)( {/ @, `3 n! ?
        UserForm1.TextBox2.Text = .GetString(0)
3 B) \% W$ S$ e  l9 d8 q8 Z# h        UserForm1.TextBox3.Text = .GetString(0)! a2 ~' l7 ]6 i  u% _" f" k5 b
    End With/ h; B% e& s" K7 f9 u  B4 S
End Sub
) S0 V1 M- Q. P( M2 r-------------------1 B% `+ }  T% j9 o4 v' w* m
% f& u- W. n8 O9 x' i
用户窗体代码如下:
. z, g. X% h9 I5 v--------------------
: ]4 u7 a! c, i' m6 q5 y; {" O8 [$ dPrivate Sub CommandButton1_Click(), Y. e; D" ~0 [3 X+ \& U1 i
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "5 F7 ]: O% a4 P' I# E' Z% c% r
    Me.Hide
; x% H4 F8 p3 w0 G, `, w) `$ M% xEnd Sub
7 _* B  M' z1 l) U' c--------------------: g+ _3 r3 f1 M! j* K+ f& e% c
+ t- j1 l8 b$ n  N
[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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