QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
如何在LSP中调用VBA作出的对话框?+ W6 z% a7 \# s0 E% m* X
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程序中代码如下:* S/ i5 e8 [5 ?0 ]
-------------------( Z. `8 R" u% ?" x- g" p/ O( E1 e5 c
(defun c:aaa()
' r% U6 O3 ~# h3 @/ y(command "-vbarun" "a")
- I5 a3 G  T; a# {), o" g* ?" L5 z
(defun c:-aaa()
" }0 @' {; A' D7 u. m1 e(command "-text" (getstring) "" "" (getstring))' w" D0 I+ [' L# A$ W
)
5 k- s3 h5 U7 b: {-------------------7 p3 W, L- _2 g; Z8 e
VBA程序中代码如下:; b+ p4 T# K; O' c0 B1 o5 D$ L
-------------------
  j$ ?! U# p& P; bSub A()! H* g1 S1 o2 u8 m( ?" ]8 c
    UserForm1.Show
  }, @) w& W0 o$ X3 O9 _! XEnd Sub5 V+ ^6 ^" L) N  \3 _
-------------------
. h1 U( S2 r& @. s+ q6 f, }用户窗体名为UserForm1。其中三个文本框由左至右、由上至下分别名为textbox1、textbox2、textbox3,按钮名为CommandButton1。见图
1 ]9 \, E5 o7 I+ j; H 1.gif
3 x" q0 G5 v; C: t8 @
- i1 ?6 ]5 {& b, q) V代码如下:
' F5 p: [+ [' h  ]  D6 c+ A-------------------
7 H* I' `! M! x9 t* z* gPrivate Sub CommandButton1_Click()
- t, @" X# L7 Y' P* B    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "
' t0 B* U. l) S$ z+ P    Me.Hide$ W3 I) ]. o4 c
End Sub
/ y" ?2 y! M; f$ N6 |5 |8 y7 X-------------------
+ T+ C& Y# p) b. L附件为dwg文件2004格式,内嵌VBA程序。/ r& G  i& n4 E; Q: R3 T
- o4 @. W9 w0 v- H+ F9 b2 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 | 显示全部楼层 来自: 中国辽宁营口
也可以用发送键盘命令的方式传递参数
+ e4 O  B" i" I" U" D; }8 E4 S, ?比如LSP程序:4 v$ x: F' Y8 j5 U# P! l% ~
---------------------------------------
( l8 K+ V, ]% _* h# G+ p(defun c:aaa()' ^, ^9 u# u5 s1 R3 g
(command "-vbarun" "a" "AAA" )4 ~- Q  h3 |9 ^0 H
)2 Z$ E" W8 u. z4 ^* h1 r& H) Y, \
---------------------------------------
" ?3 [0 t0 }3 n+ W! X
6 N0 p' r' I, u7 D3 V% XVBA模块代码:
7 u  V# j0 ]6 k$ O) v4 ~---------------------------------------3 r6 M, ^9 V; Q' k2 o$ t
Sub A()
. q" S, F' J( V" y. s6 B6 w* M    If ThisDrawing.Utility.GetString(0) = "AAA" Then UserForm1.Show
$ `, C1 V$ w  _3 B& p4 dEnd Sub9 P! s( y/ D8 O( A
---------------------------------------
, R9 r7 ?. x* x1 F& O$ T, H5 {, _  `# O) _
另外我想,用读写文本文件的方式也应该可以传递参数。我对LISP了解不多,不知可否使用注册表?如果可以应该也是一种方法。
  S1 b( T! ^9 W4 J# r! v2 |( v4 a9 }! {3 e# T4 f
[ 本帖最后由 woaishuijia 于 2008-8-21 08:46 编辑 ]

评分

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

查看全部评分

发表于 2008-8-21 09:26:50 | 显示全部楼层 来自: 中国辽宁营口
把3楼的代码扩充一下,应该算是双向传递吧?, o, p  c5 Y  a8 H( H& H. |
lsp程序中代码如下:" B! J" `7 R3 Z6 ]$ \, q
-------------------- u6 x1 O6 c  _, v9 |/ B
(defun c:aaa()
) x, g- @6 B3 Z: V4 E2 B7 y) T' Z(command "-vbarun" "a" "4" "5" "AAAAAAAAAAAAAAAA" )1 ~+ L/ q: t/ [' f8 P8 s4 S1 ]# ~
)* y9 W7 g4 z; t/ v+ D# D: |" x" d
(defun c:-aaa()
7 i6 u+ ^7 Z- i8 Q* U) H3 k9 o(command "-text" (getstring) "" "" (getstring))
+ }) G' }' U0 T% d7 J)  S7 V" @/ B& D  l* r
-------------------
: Y0 A5 C: o% D6 F: \: C
: p% N& k$ n+ c0 r$ IVBA程序中模块代码如下:9 X" |3 I* x% ?' `/ ]" h+ r" k6 I
-------------------7 d4 V# U! O; ]6 Q) x& c  t3 @8 m
Sub A()& y- {. h" J' {0 @7 x) {
    UserForm1.Show" K* @# ^7 A8 d6 b& x
    With ThisDrawing.Utility5 U- e* \( t6 O# J( T- `
        UserForm1.TextBox1.Text = .GetString(0)6 T* p, P/ X8 f' w" U
        UserForm1.TextBox2.Text = .GetString(0)
( [" t5 j1 i6 a2 [. ]; C        UserForm1.TextBox3.Text = .GetString(0)
2 T$ [+ J* B4 [& I9 ]" f$ N    End With1 M: W) V4 w4 a7 ?
End Sub8 P1 I2 ?1 M5 {+ C) z
-------------------8 {  j- `' q- R2 x* N
4 w8 j+ I, N- a! ?
用户窗体代码如下:
" {2 ~; i' W0 r/ ?. w: Q: ^3 i  a--------------------2 ^# d2 M; I( Z' v
Private Sub CommandButton1_Click(), E$ f9 }$ e  N2 j+ w
    SendKeys "-aaa " & TextBox1.Text & "," & TextBox2.Text & " " & TextBox3.Text & " "( a# Q8 B+ v$ X3 M
    Me.Hide
  U3 F# \( q0 z8 z  HEnd Sub
. I1 m5 d! E$ ~4 v7 b% ]* x  h--------------------
+ D, [* z* X- ~% X/ G& p: Z& j6 p5 l3 n' `3 o8 j% D
[ 本帖最后由 woaishuijia 于 2008-8-21 09:37 编辑 ]
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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