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

       

Создание Сложного Примитива


Эти показы примера, как создавать объект AcDb2dPolyline и устан некоторых из его свойств — уровень, окрашивают индекс, закрытый параметр. Это тогда создает четыре объекта (AcDb2dPolylineVertex вершины, устанавливает их местоположение, и добавляет их к объекту ломаной линии. Наконец, это закрывает всю открытую вершину объектов —, ломаную линию, запись таблицы блоков, и таблицу блоков. Когда объект ломаной линии закрыт, AutoCAD добавляет объект AcDbSequenceEnd к этому автоматически.

void

createPolyline()

{

// Set four vertex locations for the pline.

//

AcGePoint3dArray ptArr;

ptArr.setLogicalLength(4);

for (int i = 0; i < 4; i++) {

ptArr[i].set((double)(i/2), (double)(i%2), 0.0);

}

// Dynamically allocate an AcDb2dPolyline object,

// given four vertex elements whose locations are supplied

// in ptArr. The polyline has no elevation, and is

// explicitly set as closed. The polyline is simple;

// that is, not curve fit or a spline. By default, the

// widths are all 0.0 and there are no bulge factors.

//

AcDb2dPolyline *pNewPline = new AcDb2dPolyline(

AcDb::k2dSimplePoly, ptArr, 0.0, Adesk::kTrue);

pNewPline->setColorIndex(3);

// Get a pointer to a Block Table object.

//

AcDbBlockTable *pBlockTable;

acdbHostApplicationServices()->workingDatabase()

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

// Get a pointer to the MODEL_SPACE BlockTableRecord.

//

AcDbBlockTableRecord *pBlockTableRecord;

pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord,

AcDb::kForWrite);

pBlockTable->close();

// Append the pline object to the database and

// obtain its object ID.

//

AcDbObjectId plineObjId;

pBlockTableRecord->appendAcDbEntity(plineObjId,

pNewPline);

pBlockTableRecord->close();

// Make the pline object reside on layer "0".

//

pNewPline->setLayer("0");

pNewPline->close();

}



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