Тема: Разбор примера. Создание полилинии и добавление ее в БД чертежа
Перенесено из темы: Есть ли сайт с примерами программ на ObjectARX?.
/Администратор./
Нашёл в справочной системе пример:
The following example demonstrates creating a line and appending it to the model space block table record, as described in chapter 2, Database Primer. AcDbObjectId createLine() { AcGePoint3d startPt(4.0, 2.0, 0.0); AcGePoint3d endPt(10.0, 7.0, 0.0); AcDbLine *pLine = new AcDbLine(startPt, endPt); AcDbBlockTable *pBlockTable; acdbHostApplicationServices()->workingDatabase() ->getSymbolTable(pBlockTable, AcDb::kForRead); AcDbBlockTableRecord *pBlockTableRecord; pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite); pBlockTable->close(); AcDbObjectId lineId; pBlockTableRecord->appendAcDbEntity(lineId, pLine); pBlockTableRecord->close(); pLine->close(); return lineId; }
И честно говоря у меня немного повилось удивление. Понятно что мы вычерчиваем линию задавая её координаты, но зачем потом вручную добавлять параметры этой линии в базу данных чертежа:
and appending it to the model space block table record
, это мог бы сделать сам ObjectARX вот так например:
AcDbObjectId createLine() { AcGePoint3d startPt(4.0, 2.0, 0.0); AcGePoint3d endPt(10.0, 7.0, 0.0); AcDbLine *pLine = new AcDbLine(startPt, endPt); pLine->close(); return lineId; }
Получается что надо написать в 2 или в 3 раза больше кода чтобы сделать почти тоже самое, что в VBA или это только мне кажется?