当前位置 : 主页 > 编程语言 > java >

CAD分解块

来源:互联网 收集:自由互联 发布时间:2022-07-22
1、在CAD制图时,需要将图纸文件进行编辑修改等操作。将块中的多个对象分解为独立对象,但一次只能删除一个编组级。若块中包含一个多段线或嵌套块,那么对该块的分解就首先分解


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

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

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

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

CAD分解块_线或


(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);
}
}

 

上一篇:CAD控件安卓版修改对象颜色
下一篇:没有了
网友评论