Hello.
I need routine extracting AcDbObjectId for 3dFace inside AcDb3DSolid..
Can you replace "????" at source bellow, at
I need two vars: id_my_for_face=...., current_face_have_name=.............
Thank ,you..... in advance
[source=c++arx]
Adesk::Boolean ownTransaction;
AcDbObjectId id;
AcArray<AcDbFullSubentPath*> subentIds;
id.setNull();
AcDb3dSolid* pSolid=nil;
AcDbObject * pObj=nil;
..............................
con_ercad = actrTransactionManager->getObject(pObj, objId, AcDb::kForWrite);
pSolid = AcDb3dSolid::cast(pObj);
if (pSolid == nil)
{ dbAbortTransaction(ownTransaction);
pObj->close();
exitif(1,"g412.error cps");
};
...........................
AcBrBrep breptemp;
kj=dfn_var_AcDbEntity2AcBrBrep(pSolid,breptemp);
AcBrBrepFaceTraverser brepFaceTrav;
con_ercad = brepFaceTrav.setBrep(breptemp);
...............................
int faceCount = 0;
//(Make sure ACIS is there)
Adesk::Boolean acisStarted = acdbIsModelerStarted();
acdbModelerStart();
//(/Make sure ACIS is there)
while (!brepFaceTrav.done() && (con_ercad == AcBr::eOk))
{
.......................................
AcDbFullSubentPath *caletemp = new (AcDbFullSubentPath);
if (con_ercad==1)
{ con_ercad=faceEntity.getSubentPath(*caletemp);
con_ercad=(con_ercad==AcBr::eOk)?1:RTCAN;
};
if (con_ercad==1) //okai
subentIds.append(caletemp);
con_ercad = brepFaceTrav.next();
}
................................................
kj=dfn_face_setrgbA(subentIds,pSolid,pObj,ownTransaction);
if (kj<0) { ads_retint(RTERROR);return(rr);};
kj=RTREJ;
int faceCount=subentIds.length();
AcDbFullSubentPath *caleuser=nil;
if (arguindx<faceCount)
{
lspfn_redraw(pSolid->objectId(),4);
caleuser=subentIds[arguindx];
pSolid->highlight(caleuser,0);
};
ads_name eName;
ads_name_clear(eName);
rb=nil;
daok=0;
tip=0;
if (caleuser)
{ int cateavem=0;
tip=caleuser->subentId().index();
AcDbObjectIdArray m_objIds;
m_objIds=caleuser->objectIds();
cateavem=m_objIds.length(); //cateavem==1
if(cateavem>0)
id_mysolid=m_objIds[0]; // here the ID=forAcDb3Dsolid ,not for Face
......
AcDbObjectId id_my_for_face="????"
ads_name current_face_have_name="????"
..................................................................................................
//id=pSolid->objectId();
delete(caleuser);
caleuser=nil;
daok=1;
};
subentIds.removeAll();
[/source=c++arx]
Short answer: AcBrFace object has not AcDbObjectId as far as AcBrFace object can not be database resident object.
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn