Please enable JavaScript to view this site.

» Нет разделов более высокого уровня «

IImportedSurfaceDefinition::AddCurve - пример использования

Scroll

void WorkImportedSurfaceAddCurve( KompasObject &kompas ){

 

int pointCountAll = 6; //кратное трем (x, y, z)

int curveCount = 3;

double x = 50, dx = 30;

double y = 50, dy = 40;

double z = 0, dz = 100;

 

 

int pointCount = pointCountAll / 3;

 

SAFEARRAYBOUND sabound[1];

SAFEARRAY FAR *psa;

// Создание safe array double

sabound[0].cElements = pointCountAll;

sabound[0].lLbound = 0;

psa = ::SafeArrayCreate(VT_R8, 1, sabound);

 

VARIANT v;

VariantInit(&v);

V_VT(&v) = VT_ARRAY | VT_R8;

V_ARRAY(&v) = psa;

long index;

double d;

 

 

if ( kompas.m_lpDispatch ) {

//получить активный 3d документ

ksDocument3D doc( kompas.ActiveDocument3D() );

if ( doc.m_lpDispatch ) {

//получить компонент документа

ksPart part( doc.GetPart( pTop_Part) );

if ( part ) {

//получить новый объект импортированной поверхности

ksEntity entity(part.NewEntity(o3d_importedSurface));

if (entity) {

//Определение импортированной поверхности

ksImportedSurfaceDefinition importedSurfaceDef( entity.GetDefinition());

//добавляем в импортированную поверхность кривые по массиву точек

if (importedSurfaceDef){

for ( uint i = 0; i < curveCount; i ) {

for (uint j = 0; j < pointCount; j ) {

//наполняем safe array. Каждая точка представлена тремя координатами x, y, z

index = j*3;

d = x dx*i;

::SafeArrayPutElement(psa, &index, &d);

index = j*3 1;

d = y - dy*(i%2);

::SafeArrayPutElement(psa, &index, &d);

index = j*3 2;

d = z dz*j;

::SafeArrayPutElement(psa, &index, &d);

}

//добавить кривую по массиву точек

importedSurfaceDef.AddCurve ( v );

}

//создать импортированную поверхность

entity.Create();

}

}

}

}

else

kompas.ksError( "3d документ не активизирован" );

}

//удалить safe array double

if ( psa )

::SafeArrayDestroy(psa);

 

}

© ООО «АСКОН-Системы проектирования», 2024. Все права защищены. | Единая телефонная линия: 8-800-700-00-78