_梦游- 发表于 2015-1-29 15:56:00

CAD VBA 图库的建立

网上的图库基本上用自带的幻灯片对话框做的,功能太过单一,本人摸爬滚打半个月,建立了一个功能较强的图库:
思路如下:
1、每个块都制作成一个外部属性块文件,按一定规律命名;
2、对每一类别的块(比如阀门类)分别制作幻灯片,再制作幻灯片库;
3、在窗体中用按钮切换库类别,用Slide组件显示幻灯片,用文本框读取和修改块属性等参数;
界面如下图:


目前有几个问题需要解决:
1、不知道如何动态生成OCX组件并设置命令(自带组件会做,但不会指定命令),只好直接做在FORM上,数量有限,呆板。
2、插入块时不会做成那种打断直线(管路)把块放进去的效果,虽然可以用重画的方式实现,但感觉很别扭,还涉及到图层操作,比较麻烦。
3、块插入后,删除块,直线自动闭合; 移动块,直线自动跟进。
备注:
在块的设计中,我加了两个空值隐藏属性TERM01、TERM02,用于获取打断点的坐标,见下图:


在此求助于论坛的老鸟们,帮助解决这几个问题或提供办法,如满意,送给你DVB文件。



_梦游- 发表于 2015-1-29 23:11:33

难道高手们都在潜水吗?

zzyong00 发表于 2015-1-30 00:28:55

1、用控件数组
2、最好别打断直线,而用wipeout
3、用wipeout,连这个问题一起解决了

_梦游- 发表于 2015-1-30 10:07:16

首先感谢高手提供解决思路!

对于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 15:21:09

_梦游- 发表于 2015-1-30 10:07 static/image/common/back.gif
首先感谢高手提供解决思路!

对于1问的回答,查了下资料,貌似VBA不支持控件数组。另外,Slice控件的typ ...

老大,你那是VB,俺知道VB可以搞定,但VBA不行。不论如何,多谢!费心了!

zzyong00 发表于 2015-1-30 18:52:17

本帖最后由 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程序,就看到了

_梦游- 发表于 2015-1-31 08:47:54

非常感谢!不过我对DLL不太懂,呵呵,先学习一下

_梦游- 发表于 2015-2-2 13:02:24

在网上找到“AutoCAD P&ID”,这个图库开发已经没必要了。
页: [1]
查看完整版本: CAD VBA 图库的建立