nonsmall 发表于 2009-1-11 13:51:00

[不死猫出品] Lisp 使用 VBA 对话框 第二版(发完整实例+思路+源代码)

本帖最后由 nonsmall 于 2013-5-13 11:39 编辑 <br /><br /><P>Lisp 操作 VBA 对话框已经实现 by nonsmall 2009 初</P>
<P>================================================================</P>
<P>今天试了一下 若删除窗体里面的VBA代码</P>
<P>则只需如下Lisp代码即可使用(VBA里面就不用动任何代码了 任意VBA窗体都可使用)</P>
<P>(defun LayersTile (key)<BR>&nbsp;(print key)<BR>)<BR>(defun c:tt( / )<BR>&nbsp;(vl-load-com)<BR>&nbsp;(setq acad (vlax-get-acad-object))<BR>&nbsp;(print "nonsmall 原创Lisp使用VBA对话框")<BR>&nbsp;(setq Dvb_Path (findfile "D:\\VBA_开发研究\\对话框.dvb"))<BR>&nbsp;(if (not Dvb_Path) (progn(alert "D:\\VBA_开发研究\\对话框.dvb文件不存在")(exit)))<BR>&nbsp;(vl-catch-all-apply 'vla-UnloadDVB '(acad Dvb_Path))<BR>&nbsp;(Vlax-Invoke-Method (Vlax-Get-Acad-Object) 'LoadDVB Dvb_Path)<BR>&nbsp;(setq dvb "nonsmall_20090206")<BR>&nbsp;(vla-eval acad "start nonsmall_20090206, \"nonsmall_20090206\", \"LayersTile\"")<BR>&nbsp;(vlax-invoke-method acad 'Eval (strcat dvb ".Show 0"))&nbsp;<BR>)</P>
<P>-----------------------------------------------------------</P>
<P>抽空改了个第二版 VBA我刚起步 自己摸索写点东西实在不容易</P>
<P>我用类封装了常用控件的动作(Lisp里面我们叫Action_Tile函数)</P>
<P>会返回给Lisp当前点击的那个控件名称</P>
<P>至于取得各个控件里面的值 大家自己看看VBA窗体的书就行了 很简单</P>
<P>VBA窗体做好后 大家只需替换窗体里面2个值就行 </P>
<P>你要是用我的模板就什么都不用改 只负责改窗体和只写Lisp就OK</P>
<P>用DLL封装是我的目标</P>
<P>虽然工作关系现在不玩Lisp了 但还是忍不住 呵呵</P>
<P>第二版代码如下:</P>
<P></P>
<P>窗体代码:</P>
<P></P>
<P>VBA 代码预览:</P>
<P></P>
<P></P>
<P></P>
<P></P>
<P><FONT color=#ff0000>========================我是版本分割线============================</FONT></P>
<P>思路:lisp通过eval方法直接操作对话框对象&nbsp; VBA对话框通过VL对象回调lisp</P>
<P>注意事项:command函数不能直接用,只要调用Sendcommand方法就可以使用command了!</P>
<P>(Vlax-Invoke-Method (Vlax-Get (Vlax-Get-Acad-Object) 'ActiveDocument) 'SendCommand "(command \"line\" (getpoint )(getpoint ) \"\") " )</P>
<P>---------------------------------------</P>
<P>Lisp完整代码</P>
<P></P>
<P>DVB对话框原始文件(无密码)</P>
<P></P>
<P>对话框中附带的完整代码</P>
<P></P>
<P>------------------------------------------------------------</P>
<P>使用VBA对话框相对DCL优点: 太多了 先说一点点吧</P>
<P>直接拖动制作(随意且紧凑) 定制全部控件属性 支持图片预览 支持海量的第三方控件支持(自己也可以写)</P>
<P>对话框开启时操作图面(非模态)&nbsp; 可以和DCL同时搭配使用(我没说完全放弃哦)&nbsp; *error*函数可以被一定程度的代替</P>
<P>网上很多的VBA对话框拿过来改改就用(偷懒吧)&nbsp; 激发大家学习VBA的热情 ....................</P>
<P>============================================&nbsp;</P>
<P>这是之前的一点演示:</P>
<P></P>
<P>先做DVB好了 以后再优化</P>

296715530 发表于 2019-11-26 21:21:11

只知道defun c:后面的是快捷键,其他的不会

caoyin 发表于 2009-1-11 13:54:00

牛年还没到,牛人又牛了

xdto 发表于 2009-1-11 17:24:00

真他媽的牛!

wuyunpeng888 发表于 2009-1-11 21:30:00

就快成功了,再接再厉呀

wuyunpeng888 发表于 2009-1-11 21:33:00

<p>这个最好是用VB做一个动态链接库,提供接口再用VL调用比较好</p>

nonsmall 发表于 2009-1-11 21:54:00

wuyunpeng888发表于2009-1-11 21:33:00static/image/common/back.gif这个最好是用VB做一个动态链接库,提供接口再用VL调用比较好

<p>不是不想 这个我现在是不会写啊</p><p>一般搞Lisp的都不会写(当然总是调用别人生成好的DLL心里总是不踏实)</p><p>会写的都没空关心这个了</p><p>希望<strong><em>wuyunpeng888</em></strong>朋友能写一个这样的接口程序并且和大家分享源码</p><p>先谢谢了</p>

jxphklibin 发表于 2009-1-11 22:23:00

很好,继续吧

nonsmall 发表于 2009-1-12 09:39:00

<p>先发一张改图层 画线 画圆的小例子(见1楼)</p><p>其实只要完成 </p><p><u>点击后直接调用Lisp函数 并且可以带参返回需要的值</u>
        </p><p>就达到了用对话框工作的基本目的</p><p>(如果觉得不够爽 同时可以再开一个DCL工作的!)</p><p>PS:我的 Lisp音乐播放器 终于可以歌词同步了!</p>

hao3ren 发表于 2009-1-12 10:11:00

超级牛人啊

tyxdd 发表于 2009-1-12 13:45:00

<p>猫兄真是世外高人啊! 佩服,叹服. 你那个lisp调用win.api的东东弄得怎么样了,怎没看到您的下文啊?</p>
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: [不死猫出品] Lisp 使用 VBA 对话框 第二版(发完整实例+思路+源代码)