2017forverd 发表于 2017-10-25 15:19:53

cad利用选择集选择OLE

请教下,我在用vb做cad的二次开发,现在我想选择每张图纸中“OLE”
其中代码是   ft(0) = 0: fd(0) = “OLE”
但是在调试的时候发现选择不到ole内容?请问这个该如何操作?

vbcad 发表于 2017-11-6 22:21:34

虽然我下载了很多电子书,包括网友热捧的《VisualBasic与AutoCAD二次开发》张晋西版本,其实就上面说的这两本电子书常用。

还有就是有空的话把所有帖子都看一遍,自己感觉用的上就先收集起来。

我在学习CAD二次开发以前,已经会VB很多年了,因为工作中需要处理数据,懂编程是很方便的,最开始对CAD编程是一个同事的需要,他为电力设计院打工,需要手动把变电站二次系统图纸中的端子排关联的电缆清理出来,然后汇总编辑成做成电子表格版的电缆清册(而每张CAD的图纸中是没有电缆清册的表格)。
我的思路是把所有图元信息都提取出来,放到数据库,然后分析端子排的编号、连接线,电缆头,然后根据信息,分析出每条电缆的芯数,起点、止点、判断型号,最后按电缆清册模板生成电子表格数据。
当时怎么调用CAD都不知道,我搜索了一下CAD论坛,WORD天,一些有名的CAD论坛都注册不了,什么邀请码,指定时间开放注册等等,完全不懂管理员是怎么想的。

明经也不好注册,可以用QQ注册明经,但由于QQ有后门、收集用户信息,所以我个人是不用QQ、微信的(给我发私信要qq号的就抱歉了),工作上有公用qq号在专用电脑上。当时为了注册明经,特地注册了微博,用微博来登录明经。

编程的人本来就少,还又加诸多限制,搞技术的多少有点保守,但是网络上的人其实与你关系不大,不会影响到你的地位与收入,希望有共享精神的网友多一点。

后来有热心的网友告诉我怎么连接CAD,读取信息。很遗憾,忘记这位好心网友的名字了。

虽然最终完成了这个小工具,但是有很大的局限(只能完成他给的样图),不能通用,原因是在实际应用中每张图纸都不是一样的规范,作图不标准,比如端子箱连接的线不是横平竖直,有的是由几根直线拼凑组成,有的是多段线,有的几根线重叠一起,电缆头做图不规范,有的图纸中的电缆头采用的是块,有的图纸中电缆头是画一个三角形然后填充等等。
这个工具最终没有用上,但是通过编写这个工具开启了CAD编程之路。


2017forverd 发表于 2018-1-3 10:44:53

vbcad 发表于 2017-11-4 12:59
这个没有找资料,是自己分析出来的。
过程:把对象的名字属性列出来,OLE对象名用DEBUG.PRINT 列出来为ACA ...

您好,能否把这个过程详细说下,我现在要选择所有外部参照的集合,又遇到了上次的问题,这个fd(0)=这个后面应该怎么填写,1,对象的名字属性怎么列出来,现在对象都没有办法选择2、如果列出了名字属性,直接用debug.print +名字就可以吗?

vbcad 发表于 2018-1-4 15:09:01

看来你也就是随便问问,只有碰到问题的时候你才会到论坛来,那我说了也等于没有说,你只是想要个结果。

不过我还是再一次的说一编,“有空把所有帖子都看一下,里面就有你想要的结果。”

你也别自己测试了,AcDbBlockReference,AcDbBlock,Block,Reference都不会成功的,你安安心心看看帖子吧,会有的。

pengfei2010 发表于 2017-10-26 11:32:41

回帖是一种美德!感谢楼主的无私分享 谢谢

2017forverd 发表于 2017-10-26 20:46:27

我想使用vb选择cad 中所有的ole ,这个怎么实现?

vbcad 发表于 2017-10-26 21:54:18

OLE是单行文字吗?

2017forverd 发表于 2017-10-27 09:02:36

vbcad 发表于 2017-10-26 21:54
OLE是单行文字吗?

不是 ,是插入的excel文件,直接粘贴进去的

vbcad 发表于 2017-10-29 09:19:14

OLE对象名应该为“OLE2FRAME”
所以
将fd(0) = “OLE”改为fd(0) = “OLE2FRAME”即可

2017forverd 发表于 2017-11-3 09:30:19

vbcad 发表于 2017-10-29 09:19
OLE对象名应该为“OLE2FRAME”
所以
将fd(0) = “OLE”改为fd(0) = “OLE2FRAME”即可

非常感谢,找了好久都没有找到类似的资料,请问vb中这种对象名及属性及方法应该去哪里查询到?

vbcad 发表于 2017-11-4 12:59:52

这个没有找资料,是自己分析出来的。
过程:把对象的名字属性列出来,OLE对象名用DEBUG.PRINT 列出来为ACADOLE2FRAME,去掉前面的,然后用选择语句验证。

2017forverd 发表于 2017-11-6 09:20:41

vbcad 发表于 2017-11-4 12:59
这个没有找资料,是自己分析出来的。
过程:把对象的名字属性列出来,OLE对象名用DEBUG.PRINT 列出来为ACA ...

如果我想找资料查询有好的资料推荐吗?

vbcad 发表于 2017-11-6 21:48:26

如果有VB的基础,明经翻译的《ActiveX 和 VBA 参考》必不可少,然后CAD自带的开发人员手册(只要是完整安装的都有),基本就差不多了。
页: [1] 2
查看完整版本: cad利用选择集选择OLE