0

我需要插入一个AcadBlockReferenceinto AcadTable,但是我的 blockObjectId属性有一个错误。

//*****************Sample Code*************************************  
AcadApplication gbl_app = null;  
AcadDocument gbl_doc = null;  
AcadLayout presentacion = null;  
AcadTable tablaAcad = null;  

gbl_app = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");  
gbl_doc = gbl_app.ActiveDocument;  
object AC_entidad = new object();  
object basePnt2 = null;  

gbl_doc.Utility.GetEntity(out AC_entidad, out basePnt2, "Seleccione objeto:");  
AcadBlockReference objBlock = (AcadBlockReference)AC_entidad;  
bloqueId = objBlock.ObjectID;   

double[] vertices = new double [3];  
vertices[0] = 49.24;  
vertices[1] = 155;  
vertices[2] = 0;  


tablaAcad = gbl_doc.ActiveLayout.Block.AddTable(vertices, 4, 2, 3, 10);  
tablaAcad.SetCellTextHeight(0, 0, 2);  

tablaAcad.SetTextHeight(5, 1.5);  
tablaAcad.SetColumnWidth(0, 5);  
tablaAcad.SetColumnWidth(1, 50);  

tablaAcad.SetBlockTableRecordId(3, 0, bloqueId , true);  

错误:无效类

4

1 回答 1

0

bloqueId是用户选取的特定块参考的对象 ID。SetBlockTableRecordId需要图形块表中块定义的 ID。这些是完全不同的类型(类),所以这就是错误消息的含义。

该类Autodesk.AutoCAD.DatabaseServices.BlockReference具有BlockTableRecord返回所需对象 ID 的属性。我的建议是重做您的代码以在任何地方使用那些本机 C# 类,而不是Autodesk.AutoCAD.Interop您当前使用的 (COM) 类。

如果由于某种原因您无法更改为本机类,那么我能找到的最好的方法是AcadBlockReference您正在使用的类公开了一个Name作为块名称的属性,您应该能够从块中查找块定义 ID桌子。

于 2011-11-28T17:00:30.343 回答