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

       

Системы координат


Этот пример берет долю линии, определенную в модели, координирует и создает ее эквиваленты в координатах дисплея и глазе. Когда отображено, все линии наложатся.

void

AsdkCoordSamp::viewportDraw(AcGiViewportDraw* pV)

{

pV->subEntityTraits().setFillType(kAcGiFillAlways);

const int count = 3;

AcGePoint3d verts[count];

verts[0] = AcGePoint3d(0.0, 0.0, 0.0);

verts[1] = AcGePoint3d(1.0, 0.0, 0.0);

verts[2] = AcGePoint3d(1.0, 1.0, 0.0);

// Draw model space line segment.

//

pV->subEntityTraits().setColor(kBlue);

pV->geometry().polygon(count, verts);

// Compute the line’s representation in eye space.

//

AcGeMatrix3d mat;

pV->viewport().getModelToEyeTransform(mat);

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

verts[i].x += 0.01;

verts[i].y += 0.01;

verts[i].z += 0.01;

verts[i].transformBy(mat);

}

// Display the eye coordinate equivalent of the

// model space polygon.

//

pV->subEntityTraits().setColor(kGreen);

pV->geometry().polygonEye(count, verts);

// Convert from eye to display coordinates.

//

for (i = 0; i < count; i++) {

verts[i].x += 0.01;

verts[i].y += 0.01;

verts[i].z += 0.01;

}

// Draw the display space equivalent of the

// model space polygon.

//

pV->subEntityTraits().setColor(kRed);

pV->geometry().polygonDc(count, verts);

}



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