CAD VBA 图库的建立
网上的图库基本上用自带的幻灯片对话框做的,功能太过单一,本人摸爬滚打半个月,建立了一个功能较强的图库:思路如下:
1、每个块都制作成一个外部属性块文件,按一定规律命名;
2、对每一类别的块(比如阀门类)分别制作幻灯片,再制作幻灯片库;
3、在窗体中用按钮切换库类别,用Slide组件显示幻灯片,用文本框读取和修改块属性等参数;
界面如下图:
目前有几个问题需要解决:
1、不知道如何动态生成OCX组件并设置命令(自带组件会做,但不会指定命令),只好直接做在FORM上,数量有限,呆板。
2、插入块时不会做成那种打断直线(管路)把块放进去的效果,虽然可以用重画的方式实现,但感觉很别扭,还涉及到图层操作,比较麻烦。
3、块插入后,删除块,直线自动闭合; 移动块,直线自动跟进。
备注:
在块的设计中,我加了两个空值隐藏属性TERM01、TERM02,用于获取打断点的坐标,见下图:
在此求助于论坛的老鸟们,帮助解决这几个问题或提供办法,如满意,送给你DVB文件。
难道高手们都在潜水吗? 1、用控件数组
2、最好别打断直线,而用wipeout
3、用wipeout,连这个问题一起解决了 首先感谢高手提供解决思路!
对于1问的回答,查了下资料,貌似VBA不支持控件数组。另外,Slice控件的typeclass是“AutoCAD.SlideCtrl.2",但是我用
Dim mc As Slide
Set mc = Me.Controls.Add("AutoCAD.SlideCtrl.2")
的方式在form里添加控件,没能实现。
对于2、3,WIPEOUT的确可以实现效果(我是在块里添加这个遮罩,把开关打到off,然后把块内容放到顶层来实现的),但其原理是遮罩,直线没有断开,如果我要对阀门前后的线条(管道)修改线型和颜色,这就不行了。
_梦游- 发表于 2015-1-30 10:07 static/image/common/back.gif
首先感谢高手提供解决思路!
对于1问的回答,查了下资料,貌似VBA不支持控件数组。另外,Slice控件的typ ...
老大,你那是VB,俺知道VB可以搞定,但VBA不行。不论如何,多谢!费心了! 本帖最后由 zzyong00 于 2015-1-30 18:53 编辑
_梦游- 发表于 2015-1-30 15:21 static/image/common/back.gif
老大,你那是VB,俺知道VB可以搞定,但VBA不行。不论如何,多谢!费心了!
编程在于灵活,vba的窗体是form2.0,有些控件用不了,所以,就别用vba的窗体
你可以用vb编写acitvex dll,在vba中调用,我给你一个例子,你解压注册“工程1.dll",然后,运行哪个vba程序,就看到了
非常感谢!不过我对DLL不太懂,呵呵,先学习一下 在网上找到“AutoCAD P&ID”,这个图库开发已经没必要了。
页:
[1]