[不死猫出品] 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> (print key)<BR>)<BR>(defun c:tt( / )<BR> (vl-load-com)<BR> (setq acad (vlax-get-acad-object))<BR> (print "nonsmall 原创Lisp使用VBA对话框")<BR> (setq Dvb_Path (findfile "D:\\VBA_开发研究\\对话框.dvb"))<BR> (if (not Dvb_Path) (progn(alert "D:\\VBA_开发研究\\对话框.dvb文件不存在")(exit)))<BR> (vl-catch-all-apply 'vla-UnloadDVB '(acad Dvb_Path))<BR> (Vlax-Invoke-Method (Vlax-Get-Acad-Object) 'LoadDVB Dvb_Path)<BR> (setq dvb "nonsmall_20090206")<BR> (vla-eval acad "start nonsmall_20090206, \"nonsmall_20090206\", \"LayersTile\"")<BR> (vlax-invoke-method acad 'Eval (strcat dvb ".Show 0")) <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方法直接操作对话框对象 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>对话框开启时操作图面(非模态) 可以和DCL同时搭配使用(我没说完全放弃哦) *error*函数可以被一定程度的代替</P>
<P>网上很多的VBA对话框拿过来改改就用(偷懒吧) 激发大家学习VBA的热情 ....................</P>
<P>============================================ </P>
<P>这是之前的一点演示:</P>
<P></P>
<P>先做DVB好了 以后再优化</P> 只知道defun c:后面的是快捷键,其他的不会 牛年还没到,牛人又牛了 真他媽的牛! 就快成功了,再接再厉呀 <p>这个最好是用VB做一个动态链接库,提供接口再用VL调用比较好</p> 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> 很好,继续吧 <p>先发一张改图层 画线 画圆的小例子(见1楼)</p><p>其实只要完成 </p><p><u>点击后直接调用Lisp函数 并且可以带参返回需要的值</u>
</p><p>就达到了用对话框工作的基本目的</p><p>(如果觉得不够爽 同时可以再开一个DCL工作的!)</p><p>PS:我的 Lisp音乐播放器 终于可以歌词同步了!</p> 超级牛人啊 <p>猫兄真是世外高人啊! 佩服,叹服. 你那个lisp调用win.api的东东弄得怎么样了,怎没看到您的下文啊?</p>