QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
7天前
查看: 3721|回复: 5
收起左侧

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?; z: `/ |; R1 `& Y
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程序中代码如下:
4 @! u( K: P* W1 D-------------------
: P. ]1 g8 C3 ^; U& E* V(defun c:aaa()
& G7 k: [$ i9 k' l9 @, C5 b(command "-vbarun" "a"), l  O! W- ]- l
)$ q) X' A$ Y) ~# }. d& B- O
(defun c:-aaa()
. h4 P. U5 F4 R( D( X5 B% e) h: p/ w(command "-text" (getstring) "" "" (getstring))3 L( J, h- a/ e
)
# K( w8 L& G# v- Q6 P; h-------------------
8 u' w! n6 I- D8 U  i( VVBA程序中代码如下:
3 x$ v6 J0 a: r# p5 x) a-------------------
5 R) e, q  I, ISub A()) B$ c7 c0 j* x- P0 X
    UserForm1.Show2 F. b, |: U/ y
End Sub
  U$ i9 s0 L+ C$ m-------------------
2 o. F, u' T# M3 _用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
2 d# s) r5 S" z  m9 R) Q 1.gif
1 A  p- O. |$ c! P
5 Q, T0 n5 J) I- X代码如下:' L3 A5 v( v7 ?$ r3 U
-------------------) V- B# u2 N# L9 }* i
Private Sub CommandButton1_Click()
1 W& M( U9 S' ]" _% D( g    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "( R" }* D1 \5 A6 {7 p: r
    Me.Hide# q$ @5 g/ S. a6 a7 P5 U
End Sub1 Y0 s2 V5 C  N6 ?8 S1 t0 N
-------------------( t+ `1 O& K! D! q
附件为dwg文件2004格式,内嵌VBA程序。
* Q( C' ?3 R: e/ h' c& T: x% s% |- x8 m/ [9 n
[ 本帖最后由 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数
; N. X8 ?* |/ [  L  s比如LSP程序:$ y. p. Z) a3 @; t
---------------------------------------9 F7 s: w4 h: y( x
(defun c:aaa()
  v) I/ Q: Z. B' d; ?; l(command "-vbarun" "a" "AAA" )
' l! G+ l8 U% @6 `)/ K+ Z# c& d2 C- a
---------------------------------------! y! B/ x3 y3 B. A$ V
! D1 z6 q1 K$ t: J9 w0 N
VBA模块代码:; d+ ?/ K" _) G: @; L
---------------------------------------
5 p) D# {' u$ k1 J* K- `Sub A()
/ G- l( I. t  O# U. v  b    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show, r( s+ t2 r3 b  L
End Sub
) h$ e/ V) E6 A1 D+ {---------------------------------------5 L, r& x) H2 D5 P* Y9 Z3 L% E
8 \+ K7 x# I; D  j! {. c% U
另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
; e3 T, Z$ h! t
9 [- q" h: d# A# j' {6 X' r; J[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?8 Q! c# f3 ?8 R8 ~
lsp程序中代码如下:
% F1 q+ n! Q$ ]0 R% O-------------------. B3 N2 T# u! \& T: h* l
(defun c:aaa(); A7 G5 `2 B* ]- n
(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )  R' O+ w( o& i7 t; {5 p
)* I4 M. P2 Z' X6 ]5 g
(defun c:-aaa()2 y/ X. u$ c, X0 t. h1 y
(command "-text" (getstring) "" "" (getstring))
6 C  |- H1 D1 k: ~- O# d)
* s$ k; ?( \) l# I) g-------------------
! [% T) X+ q1 P# s  L- u8 p6 Y5 J# O0 B) v; \4 @
VBA程序中模块代码如下:
) F) a& u  c' ~* \; o+ T* B-------------------
( ]( T; d2 P* {" DSub A()3 z4 k! h9 S6 h, g+ N7 m" I) o
    UserForm1.Show/ {( Y! w% o$ I  V
    With ThisDrawing.Utility
( M, \% z9 q5 k4 u% S# q- y        UserForm1.TextBox1.Text = .GetString(0)
7 S- X% m/ J# ?: n- p& u$ p        UserForm1.TextBox2.Text = .GetString(0)2 N  T' J. U2 l; W3 B4 [+ X8 \1 _: L
        UserForm1.TextBox3.Text = .GetString(0). b5 `! X5 H% p5 R( q
    End With' V: \0 F& }( x; e9 X# ~
End Sub
  t1 G6 x: \  \) t6 |0 P2 G) K3 J-------------------
' i/ \& r$ ]4 S# [4 Z- m) }: A
8 i$ K. \8 v8 a, w9 C) y- \& j: V用户窗体代码如下:3 a1 [5 z' v' D  B7 f. _$ D$ ]/ j2 I
--------------------+ V& F0 s( H/ h% N( L* J; M& e2 E* J
Private Sub CommandButton1_Click()
. v: K3 U& s, f6 `2 y9 L9 |" f    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "4 v1 j6 u3 R8 u. v- C# U
    Me.Hide
9 q. A: j) o, z! YEnd Sub$ D! r, k$ ^8 U* X8 v  i
--------------------/ n* S& z1 [6 ]; a  T  F& {
: C  y2 u" {! R; c+ B3 D$ y
[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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