CAD分解块

网友投稿 1670 2022-10-29

CAD分解块

CAD分解块

1、在CAD制图时,需要将图纸文件进行编辑修改等操作。将块中的多个对象分解为独立对象,但一次只能删除一个编组级。若块中包含一个多段线或嵌套块,那么对该块的分解就首先分解为多段线或嵌套块,然后再分别分解该块中的各个对象。若块中的对象具有相同 X、Y、Z 比例的块,将被分解为它们的部件对象。非一致比例块则可能被分解成其他对象。当非一致比例块包含有不能分解的对象时,这些不能分解的对象将全部集中到一个以“*E”为前缀的匿名块中并且以非一致比例缩放进行参照。如果这个块中的所有对象都不可分解,则选定的块参照不能分解。

2、分解主要用于将一个对象分解为多个单一对象。主要应用于对整体图形、图块、文字、尺寸标注等对象的分解。使用分解方法有三种:

(1)单击菜单栏,“修改->分解”。

(2)单击编辑工具栏“分解命令”按钮

(3)在命令行中输入Explode,按回车键。

我们首先先激活分解命令,然后选中需要炸开的对象,最后按回车或空格确定就可以啦。

3、下面介绍关于二次开发分解块的使用方法(以MxDrawCAD为例);分别是c#语言和网页中的使用。

(1)实现思路:我们在视区中利用GetEntity方法选择一个实体,然后判断选择的实体类型是否是图块;如果是图块的话。就调用Explode打碎图块,方法十分简单。

(2)主要用到函数说明:IMxDrawBlockReference::Explode

打碎块引用,被打碎的引用对象还在,打碎的实体是新生成的。详细说明如下:

参数

说明

[out,retval] IMxDrawResbuf** newIds

返回打碎后新生成的实体id数组

在c#中实现如下:

// 与用户交在图面上选择要打碎的块引对象MxDrawUtility mxUtility = new MxDrawUtility();object getPt;MxDrawEntity ent = mxUtility.GetEntity(out getPt,"n 选择图块:"); if (ent == null){ MessageBox.Show("没有选择实体.."); return;} if (ent is MxDrawBlockReference){ MxDrawBlockReference blkRef = (MxDrawBlockReference)ent; MxDrawResbuf rb = (MxDrawResbuf)(blkRef.Explode() ); // 得到打碎后新生成的实体的id for(Int32 i = 1; i < rb.Count;i++) { long entId = rb.AtLong(i); } }

在网页中实现如下:

// 与用户交在图面上选择要打碎的块引对象var ent = mxOcx.GetEntity("选择图块:"); if (ent == null) { alert("没有选择实体.."); return; }if (ent.ObjectName == "McDbBlockReference") { // 选择的是一个块对象,就调用打碎函数碎 var blkRef = ent; var rb = blkRef.Explode(); // 得到打碎后新生成的实体的id for(var i = 1; i < rb.Count;i++) { var entId = rb.AtLong(i); } }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatis第三方PageHelper分页插件的使用与原理
下一篇:此C++库提供了一个用于创建BehaviorTrees的框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~