C#开发AutoCad,利用ObjectDbx技术在当前dwg文件中插入其它未打开的dwg文件中的图块
纠结了两天,在http://forums.autodesk.com/t5/Visual-Basic-Customization/Possible-to-insert-block-from-external-DWG-w-o-inserting-whole/td-p/2001460 这里找到了 vb实现的方法,自己整理下 就变成了如下方法,请看代码
/// <summary>
/// 添加块
/// </summary>
/// <param name="StartX">插入起始点X值</param>
/// <param name="StartY">插入起始点Y值</param>
/// <param name="FilePath">块文件路径</param>
public void AddBlock(double StartX, double StartY, string FilePath)
{
string programeID = "ObjectDBX.AxDbDocument.18";
AxDbDocument dbxDoc;
dbxDoc = (AxDbDocument)connector.Application.GetInterfaceObject(programeID);
dbxDoc.Open("C:\\Users\\Administrator\\Desktop\\4025all.dwg");//包含多个块的文件
AcadBlock block = dbxDoc.Blocks.Item("4025-dowm");//4025-dowm 该块只是文件中的其中一个,可以将其参数化,此处只为实现功能设定
AcadObject[] obj = new AcadObject[1] ;
obj[0] = (AcadObject)block;
dbxDoc.CopyObjects(obj, connector.Application.ActiveDocument.Database.Blocks);//将块信息拷贝到当前块集合中
connector.Application.ActiveDocument.ModelSpace.InsertBlock(new double[3] {StartX, StartY, 0 }, "4025-dowm", 1, 1, 1, 0);//插入到当前文件
}