Блок вставки в AcadTable - PullRequest
       69

Блок вставки в AcadTable

0 голосов
/ 13 апреля 2011

Мне нужно вставить AcadBlockReference в AcadTable, но у меня есть ошибка со свойством блока ObjectId.

//*****************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);  

ОШИБКА: недопустимый класс

1 Ответ

0 голосов
/ 28 ноября 2011

bloqueId - это идентификатор объекта конкретной ссылки на блок, выбранной пользователем. SetBlockTableRecordId нужен идентификатор определения блока в таблице блоков чертежа. Это совершенно разные типы (классы), так что это то, что означает сообщение об ошибке.

Класс Autodesk.AutoCAD.DatabaseServices.BlockReference имеет свойство BlockTableRecord, которое возвращает желаемый идентификатор объекта. Я бы рекомендовал переделать ваш код, чтобы везде использовать эти собственные классы C # вместо Autodesk.AutoCAD.Interop (COM) классов, которые вы используете в настоящее время.

Если по какой-то причине вы не можете перейти на собственные классы, то лучшее, что я могу найти, это то, что используемый вами класс AcadBlockReference предоставляет свойство Name, которое является именем блока, и вы должны иметь возможность найдите идентификатор определения блока из таблицы блоков.

...