открыть как LineОткрыть - это означает вызвать метод transaction.GetObject(...)?
var line = dbo as LineНет так не получается, т.к. не возможно преобразовать объект BlockTableRecord в Line
Только вот в коде выше (в сообщ. от участника форума trir) не понятно возникновение переменной objIdArray?однако я специально дал ссылку на habr (https://habrahabr.ru/post/278765/), где можно было найти ссылку на github (https://github.com/triroakenshield/tblPrs/blob/master/TableParser/MyTable.vb)
Не указано из какой именно таблицы базы данных взят набор objIdArray.
Как проверить что он является графическим примитивом
2. Проверить что этот примитив к примеру отрезок (Line)Проверка конкретных типов примитивов уже не столь однозначна.
Я обычно использую RXClass для проверки типа объекта:Тоже хороший вариант. И возможно более правильный
125,70% - if (obj.GetRXClass() == dbTextRxClass) AttrCount++;Вот не верю я в это, ИМХО Вы что то не так сделали, вся прелесть RXClass в том, что для его получения не нужно получать и открывать объект, достаточно ObjectId, соответственно скорость должна быть намного выше.
Как видно и транзакция то не нужна...Для 2008 это увы не так. метода ObjectClass у ObjectId нет. Соответственно приходится получить объект, а затем вызывать GetRXClass() объекта.
Для 2008 это увы не так. метода ObjectClass у ObjectId нет. Соответственно приходится получить объект, а затем вызывать GetRXClass() объекта.Посмотрел, нда... objectId.ObjectClass только в 2009 появился... тогда нет смысл получать тип через этот механизм... если только Александр Ривилис не поможет получить этот метод через PInvoke ...
В связи с этим для 95% уверенности получаю имя класса примитива и сравниваю.
..и если хочешь убедиться на 100%Код - C# [Выбрать]...надежнее, но читается не очень
Entity entity .... Type type = entity.GetType(); string fullTypeName = type.ToString(); if (fullTypeName == "Autodesk.AutoCAD.DatabaseServices.DBText" )
Для 2008 это увы не так. метода ObjectClass у ObjectId нет.Ну тогда уж, наверное, лучше так:
Ну тогда уж, наверное, лучше так:Ага до Equals типов я не додумался. А ответ был так близко....более корректный вариант, чем сравнение через "is"
Интересно только, как он по скорости будет. Быстрее, чем сравнение с именем типа или нет?Под автокадом проверил он самый быстрый и корректный в моем случае(без objectId.ObjectClass разумеется)
Быстрее, чем сравнение с именем типа или нет?Протестил, не быстрее.
Посмотрел, нда... objectId.ObjectClass только в 2009 появился... тогда нет смысл получать тип через этот механизм... если только Александр Ривилис не поможет получить этот метод через PInvoke ...В ObjectARX этот метод появился синхронно с AutoCAD .NET API в 2009-ой версии.