ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

Создание примитивов


Следующий код 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);

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;

}

CreateLine()  получает блочную таблицу для текущего рисунка.

Тогда это открывает в модельном пространстве  запись блочной таблицы. После закрытия блочной таблицы, это прибавляет объект к блочной  таблице и затем закрывает  таблицу и объект.

ОБРАТИТЕ ВНИМАНИЕ, когда Вы используете любые объекты ObjectARX, Вы должны  их как можно скорее закрыть.

createCircle () создает круг и прибавляет это к блочной таблице пространства модели:

AcDbObjectId createCircle()

{

AcGePoint3d center(9.0, 3.0, 0.0);

AcGeVector3d normal(0.0, 0.0, 1.0);

AcDbCircle *pCirc = new AcDbCircle(center, normal, 2.0);

AcDbBlockTable *pBlockTable;

acdbHostApplicationServices()->workingDatabase()

->getSymbolTable(pBlockTable, AcDb::kForRead);

AcDbBlockTableRecord *pBlockTableRecord;

pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,

AcDb::kForWrite);

pBlockTable->close();

AcDbObjectId circleId;

pBlockTableRecord->appendAcDbEntity(circleId, pCirc);

pBlockTableRecord->close();

pCirc->close();

return circleId;

}



Содержание раздела