QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?
$ m" `' T7 j" L/ F" VLSP程序在对话框的编写方面依赖于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程序中代码如下:1 [) l: i+ K: F
-------------------
- b- r/ O( S5 z7 V' H) T(defun c:aaa()  B, ]) H! G; ^  P; i, s
(command "-vbarun" "a")- p: A3 i% ]9 ~& ?* ?3 Z3 A
)1 u( G3 e0 o% P$ o2 O
(defun c:-aaa()% ]6 R' I8 K+ s+ A% _7 N
(command "-text" (getstring) "" "" (getstring))
: A4 o9 \) w- y)
# i2 y# S+ L% A4 m/ |2 B5 [-------------------- G. Q  J. s/ z  Z5 j4 o$ j2 N6 w9 b
VBA程序中代码如下:
+ I- {6 M9 ]0 ~2 l-------------------5 `/ ], Q* m/ D& n. N& @5 ?
Sub A()- p% v5 M, f5 i7 j: u) `  l& N4 }
    UserForm1.Show
( ]1 U2 t% ~. `2 ]# `  z9 uEnd Sub/ t1 I. ?/ ?+ _5 i
-------------------
3 ~. }9 C; Q3 A( X& u2 c用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图, T; t9 O& z. P0 q
1.gif
# d: a8 Q* A' B. h8 X; K3 B8 J( R/ Z  {- q/ X
代码如下:' D1 x* I0 r% o5 P, v5 T
-------------------4 |0 J& g: X: [+ k
Private Sub CommandButton1_Click()2 H8 O: @* q$ O) z! ~9 I
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
3 t  N: q1 [" I0 r7 A* O/ e$ K    Me.Hide1 h& F( F& B9 f: x/ f$ v
End Sub
( I9 l4 d3 a- w  f-------------------
' t$ a  X4 Y& g9 \附件为dwg文件2004格式,内嵌VBA程序。
4 s- E, [! E4 O5 x5 n% s0 W
1 [  u' r4 u8 S' _[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数  Q) `5 H) N. i! O
比如LSP程序:* y, O; `5 g8 X
---------------------------------------
) {, U9 e# |: j: O; k! |2 h(defun c:aaa()
* V( w5 T3 A1 M+ C; `+ k* D& L(command "-vbarun" "a" "AAA" )
8 L( O9 p  {+ J4 l: S% C; _9 [)* C, [) g8 ?$ R& z! {- {
---------------------------------------
* [1 D2 H7 Z' O( L
8 q7 F/ \( e* K& C3 f4 n# dVBA模块代码:
7 k3 Y( x8 W: w" J: a( g---------------------------------------# p; q4 _) e" ~% ^. v* f% n
Sub A()- n7 h7 p9 P/ M7 J. D* D
    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show. q; M5 Y9 E; p* D7 S  h& {- ]
End Sub
( J6 ]8 F3 u, X" m( F---------------------------------------8 c& ?' J: M7 b5 k

: e& D' `+ R% @! s: \+ b! N另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
/ k; Y7 b! a. W: }$ z6 Q; p  e% l+ E' n# n6 _3 w
[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?) i  K) S8 i* u; N
lsp程序中代码如下:; M$ o7 b" y! I0 `* n
-------------------3 f) \/ p+ [: @0 l, Z+ m0 S7 L$ U9 J
(defun c:aaa()- H0 T8 H" u8 _; E9 [
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )
' [1 y) a6 B! @)
3 y$ K& z2 L6 ?' H0 G8 e+ G(defun c:-aaa()
+ m# H, d8 n) i7 r' b/ G(command "-text" (getstring) "" "" (getstring))
; p  S7 L% A" u7 N7 h)
0 x/ k. s# R" {5 |) U-------------------" o4 J5 b9 s+ b9 J. d3 q8 H
, ^" H; t+ Y" t
VBA程序中模块代码如下:
+ p  l% T5 C+ E. n7 a-------------------
7 |3 P+ n' h, ?: A( }: E2 T% wSub A()5 M7 }1 U& W3 R5 o  J$ E& }# R
    UserForm1.Show
! Y. c& Z9 e1 ]; S    With ThisDrawing.Utility
7 T5 J" X1 n5 o6 e- W        UserForm1.TextBox1.Text = .GetString(0)& s7 X6 }6 N1 o; p
        UserForm1.TextBox2.Text = .GetString(0)3 R% r. @1 n; X7 N% e& ]# u
        UserForm1.TextBox3.Text = .GetString(0)) T$ Y' Q; V% M) K6 b5 [& q# A
    End With
( ]6 t" c( z2 g0 h4 n. BEnd Sub
& ]3 b7 s: E* u1 ~- B-------------------; c7 F5 _; V4 w# |

8 v0 R( r1 L+ _' X1 f用户窗体代码如下:
- u3 {. U! w! Q% s7 O' A--------------------
& ~9 T3 g, }9 F( H# f  ~5 T+ X1 GPrivate Sub CommandButton1_Click()
  }- g1 `. l+ t! t! Z! p. T/ }    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
" y9 O" I5 A2 v. O4 v2 j    Me.Hide
4 m3 n3 B/ d! O$ b1 S. nEnd Sub
0 _3 h8 F% @. M; [8 A4 G" G/ @--------------------
; X( |# i& A9 E  K' f4 E. c' k$ [* H) _$ Q( a, c' H
[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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