nonsmall 发表于 2009-9-29 09:56:00

[原创] Vlisp 交互 VB 窗体

本帖最后由 nonsmall 于 2013-5-13 10:54 编辑 <br /><br /><p>题目:Vlisp交互VB窗体</p><p>前言:在ACAD里面使用VB方面的知识很多,在此就不多述了。</p><p>&nbsp;&nbsp;&nbsp; 我尽量用最简单、不必修改的VB代码,剩下的都是Lisp的事情。</p><p>概述:本文将讨论如何通过Vlisp对VB窗体进行操作。</p><p>&nbsp;&nbsp;&nbsp; 实现非模态VB窗体向Vlisp提供数据绘制图形。</p><p>原理:Vlisp通过ActiveX操作VB窗体对象</p><p>说明:测试成功于AutoCAD 2004 2007 2008,2006似乎只能在调试时好用……</p><p>步骤:安装一套企业版的VB6,</p><p>{新建一个工程}-{ActiveX DLL}</p><p>在右侧修改工程名和类名,把代码复制进去,添加一个窗体,窗体上放置2个文本框</p><p>{文件}-{生成*****DLL}</p><p></p><p>VB代码(一共就6行)如下:</p><p>&nbsp;</p><p>Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long<br/>Public Function ShowWnd(ByVal ACADhWnd As Long) As Object<br/>&nbsp;&nbsp;&nbsp; Form1.Show 0<br/>&nbsp;&nbsp;&nbsp; SetParent Form1.hWnd, ACADhWnd<br/>&nbsp;&nbsp;&nbsp; Set ShowWnd = Form1<br/>End Function</p><p></p><p>然后就是Lisp的事情了</p><p></p><p>&nbsp;</p>

lea丶丶 发表于 2018-2-27 08:38:18

(setq frm (Vlax-Invoke-Method nonsmall 'ShowWnd (Vlax-Get ACAD 'HWND )))程序一到这句话就卡死了

nonsmall 发表于 2009-9-29 10:06:00

VB 代码

jxphklibin 发表于 2009-9-29 10:16:00

<p>呵呵,买了两个明经币啊!</p>

淮上 发表于 2009-9-30 00:00:00

jxphklibin发表于2009-9-29 10:16:00static/image/common/back.gif呵呵,买了两个明经币啊!

<p>学到知识,花银子值啊!</p>

wylong 发表于 2009-9-30 08:44:00

下载学习学习

nonsmall 发表于 2009-9-30 09:11:00

<p>在线看图不大清楚</p><p>可以另存到本地查看。</p><p>关于VB窗体的属性,</p><p>可以参考MSDN或VBA帮助。</p>

361210 发表于 2009-11-25 01:05:00

<p>好东东 花钱也值</p>

hhh454 发表于 2009-11-25 10:51:00

<p>学习了,讲的很好呀,谢谢了</p>

ghgh0130 发表于 2009-11-25 19:51:00

讲的很好呀,

njcknfy 发表于 2009-12-13 22:44:00

<p>我在LISP里使用 (startapp "VB程序的路径和程序")&nbsp; 调用VB的程序,只调用一个时没问题,当连续调用两个时,第二个调用的程序不等第一个运行完就开始运行了,怎么才能控制一个运行完第二个再启动呢</p><p>程序大致结构如下:</p><p>(defun c:test()</p><p>&nbsp; (startapp APP1) (startapp APP2))</p><p></p>
页: [1] 2 3 4 5 6
查看完整版本: [原创] Vlisp 交互 VB 窗体