QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
8天前
查看: 3722|回复: 5
收起左侧

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?, c+ `1 Q5 H8 H4 U! L
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程序中代码如下:
. a. Z% X6 s9 H. H' x-------------------
% S3 f$ x, o% A1 p7 x(defun c:aaa()9 N  k+ y3 v" T; a4 }7 h: F! s
(command "-vbarun" "a"), p# L: |: c  C6 E8 }
)
( I  f  S1 T9 y! g6 y(defun c:-aaa()' D& m5 |4 e! E; L/ V! N8 x
(command "-text" (getstring) "" "" (getstring))
- i/ R) R2 _+ v* A" M5 A)& M% O/ }0 y* y8 s# l
-------------------+ G" q, s+ {- M' e
VBA程序中代码如下:
7 l7 c/ V7 I7 g-------------------/ Q3 H1 G1 v8 Z; V
Sub A()6 A/ ~8 S% Z' m2 g  O/ K: G
    UserForm1.Show
* R2 r2 O) ^1 X; c9 c- G3 \End Sub
8 K) t( a3 |7 H" `-------------------; B9 O# N1 Q, ^' Q3 \/ q
用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
1 [" W" F  i8 h; H- ]' t 1.gif
; n% _0 l% S( _; y
' R( D3 I9 ]: W8 w3 a0 L代码如下:
. M& [: z  |0 n$ \-------------------, Q4 E& @6 y& o, w* K
Private Sub CommandButton1_Click()
' k* c  Q; W$ G; l    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "* _! T3 s/ V1 W# G9 W3 w
    Me.Hide
2 g9 [5 [& P# a9 @% M) t; q2 ?End Sub
" Q! A4 Q, u# n0 g& `-------------------5 A5 F' u0 G$ ~! {5 s/ L
附件为dwg文件2004格式,内嵌VBA程序。
- N' z  w0 I- }! ]9 k4 Q
. C7 q- w  i7 Z7 |[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数0 P+ c5 k8 ^- P$ ~6 _
比如LSP程序:  U5 D& I2 e7 T, `5 F& Y
---------------------------------------
9 ], W% ~$ n8 f" Y$ f9 P(defun c:aaa()" d8 T( F2 ?; V7 G1 j6 S
(command "-vbarun" "a" "AAA" )
; ?5 g. X# y1 m8 e: Q1 {)
* Y2 ]5 n4 T; b5 [, b2 q---------------------------------------
; c1 g+ Z4 h8 q) h& t$ f8 C; [1 {0 x( W0 V) I8 G( `
VBA模块代码:: [7 B8 |) p5 {7 o2 T2 F- L4 k
---------------------------------------
; C9 x% S; n6 OSub A()+ k% _3 @; ?! K3 M; k
    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show0 s3 [7 T* ]/ ^" V
End Sub
  f+ w) e& f) c0 i& q$ P---------------------------------------
* E$ f' i5 P" _& Z4 O& d$ {. O" p
另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
4 P# ~6 }8 ^5 q8 j: ~% s, t
2 h  S1 Z9 {0 W6 y[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?
# x5 _0 E1 W6 E- Y# llsp程序中代码如下:
& a( j+ z2 U5 p. z-------------------
7 [) W9 ^( L6 V6 s+ a(defun c:aaa()# q# s- x( W7 A( e
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )
% S8 d: [9 g( ^( S. j3 i, m3 a)! Y0 D% V) K' j2 ]( P+ b
(defun c:-aaa()% |1 j8 y7 ]; j3 Z7 z+ x
(command "-text" (getstring) "" "" (getstring))
3 Z$ [9 t0 L9 |' ?7 Q' n)" e! n% L5 K( `  f+ X9 }# _
-------------------
4 x+ d6 O8 p8 E  i9 F) B' W  O% A7 f+ z
VBA程序中模块代码如下:
& K* I. I) w" Y3 x, J-------------------
" v4 }. [$ f  ESub A()
' T, L8 T6 q. R: j8 e/ P    UserForm1.Show: g- t& s5 u  [/ c$ L0 v' w
    With ThisDrawing.Utility
5 ^6 w9 O! k$ m& Y  i' d        UserForm1.TextBox1.Text = .GetString(0)
8 B1 v0 R* n9 p( `/ \        UserForm1.TextBox2.Text = .GetString(0)
; [( z8 D2 m: A0 E        UserForm1.TextBox3.Text = .GetString(0)
; z+ e* `  Q% q) ]8 J/ ?    End With# k* E. B. N  d+ U  F0 z1 S' a+ [- u
End Sub. V4 x* u* U. m
-------------------
1 {/ Y0 m9 {" P& M! N" d; D" [; w; @# w  _6 d
用户窗体代码如下:2 Y7 x# M- |9 s0 I5 Y4 O0 y
--------------------: r& V# _1 t9 o: m& e2 ]  |
Private Sub CommandButton1_Click()
) r' J! w/ m' W7 M6 R    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
) _$ _2 W) b1 E. A2 }$ D" C    Me.Hide
! j2 U( W9 o* A. T1 g7 v% C$ lEnd Sub- z& S/ S, D5 D" c4 P- p
--------------------. C/ I8 W' h9 K% [

: V4 ^: W  Q/ K- e' @[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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