Как проверить что он является графическим примитивом
DBObject dbObj ....
if (dbObj is Entity)
проверка гарантирует, что объект - графический примитив.
2. Проверить что этот примитив к примеру отрезок (Line)
Проверка конкретных типов примитивов уже не столь однозначна.
гарантирует, что объект относится к типу DBText, но не гарантирует что сам объект DBText.
Это связанно с иерархией наследования:
специально приведу пример-исключение чтобы было понятно, что исключений мало, но они есть!
AttributeReference : DBText : Entity : DBObject
Для объекта AttributeReference, все проверки вернут true:
if (dbObj is AttributeReference )
if (dbObj is DBText)
if (dbObj is Entity)
if (dbObj is DBObject)
т.е. выискивая DBText ты зацепишь AttributeReference
В связи с этим для 95% уверенности получаю имя класса примитива и сравниваю.
Entity entity ....
Type type = entity.GetType();
string typeName = type.Name;
if (typeName == "DBText" )
...такая проверка гарантирует, что тип этого объекта точно не AttributeReference.
..однако не гарантирует, что этот объект относится именно к классу
Autodesk.AutoCAD.DatabaseServices.DBText
а не вашему классу с аналогичным именем MyNewObjects.Entity.DBText
..и если хочешь убедиться на 100%
Entity entity ....
Type type = entity.GetType();
string fullTypeName = type.ToString();
if (fullTypeName == "Autodesk.AutoCAD.DatabaseServices.DBText" )
...надежнее, но читается не очень
проверки со стрингами(string) не оптимальны по производительности.
В конретном случае если хочешь получить именно DBText, то:
if ((dbText is DBText) && !(dbText is AttributeReference))
такая проверка должна быть быстрее, но менее универсальна и менее надежна.
Так что выбирай сам, что и когда использовать ;-)