如何有效管理和优化你的网页插件? | 网页插件管理
1670
2022-10-29
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~