957
技術社區[雲棲]
ObjectArx學習筆記-UCS創建及應用
UCS創建:
static void qxzyOperateUCS_AddUCS(void) { // Add your code for command qxzyOperateUCS._AddUCS here AcDbUCSTable *pUcsTbl; acdbHostApplicationServices()->workingDatabase() ->getUCSTable(pUcsTbl, AcDb::kForWrite); AcGePoint3d ptOrigin(0, 0, 0); AcGeVector3d vecXAxis(1, 1, 0); AcGeVector3d vecYAxis(-1, 1, 0); AcDbUCSTableRecord *pUcsTblRcd; pUcsTblRcd = new AcDbUCSTableRecord(); Acad::ErrorStatus es = pUcsTblRcd->setName(_T("NewUcs")); if(es != Acad::eOk) { delete pUcsTblRcd; pUcsTbl->close(); return; } pUcsTblRcd->setOrigin(ptOrigin); pUcsTblRcd->setXAxis(vecXAxis); pUcsTblRcd->setYAxis(vecYAxis); es = pUcsTbl->add(pUcsTblRcd); if(es != Acad::eOk) { delete pUcsTblRcd; pUcsTbl->close(); return; } pUcsTblRcd->close(); pUcsTbl->close(); }
設置當前UCS:
static void qxzyOperateUCS_SetCurUcs(void) { // Add your code for command qxzyOperateUCS._SetCurUcs here ACHAR ucsName[40]; if(acedGetString(NULL, _T("請輸入坐標係名稱:"), ucsName) != RTNORM) { return; } AcDbUCSTable *pUcsTbl; acdbHostApplicationServices()->workingDatabase() ->getUCSTable(pUcsTbl, AcDb::kForRead); if(!pUcsTbl->has(ucsName)) { pUcsTbl->close(); return; } AcDbUCSTableRecord *pUcsTblRcd; pUcsTbl->getAt(ucsName, pUcsTblRcd, AcDb::kForRead); AcGeMatrix3d mat; AcGeVector3d vecXAxis, vecYAxis, vecZAxis; vecXAxis = pUcsTblRcd->xAxis(); vecYAxis = pUcsTblRcd->yAxis(); vecZAxis = vecXAxis.crossProduct(vecYAxis); mat.setCoordSystem(pUcsTblRcd->origin(), vecXAxis, vecYAxis, vecZAxis); pUcsTblRcd->close(); pUcsTbl->close(); acedSetCurrentUCS(mat); }
效果如下:
最後更新:2017-04-03 08:26:24