友好的提示:如果将代码括在代码标记 [代码] 中...[/代码]它更容易在眼睛上:
- void createNewUcs(AcGePoint3d ptOri,AcGeVector3d vecXAxis,AcGeVector3d vecYAxis,CString ucsName)
- {
- AcDbUCSTable *pUcsTbl;
- acdbHostApplicationServices()->workingDatabase()->
- getUCSTable(pUcsTbl,AcDb::kForWrite);
- //
- AcDbUCSTableRecord *pUcsTblRcd = new AcDbUCSTableRecord();
- //
- Acad::ErrorStatus es = pUcsTblRcd->setName(ucsName);
- if (es != Acad::eOk)
- {
- delete pUcsTblRcd;
- pUcsTbl->close();
- return;
- }
- pUcsTblRcd->setOrigin(ptOri);
- pUcsTblRcd->setXAxis(vecXAxis);
- pUcsTblRcd->setYAxis(vecYAxis);
- //
- es = pUcsTbl->add(pUcsTblRcd);
- if (es != Acad::eOk)
- {
- delete pUcsTblRcd;
- pUcsTbl->close();
- return;
- }
- //
- pUcsTblRcd->close();
- pUcsTbl->close();
- }
- void setCurrentUcs(CString ucsName)
- {
- AcDbUCSTable *pUcsTbl;
- acdbHostApplicationServices()->workingDatabase()->
- getUCSTable(pUcsTbl,AcDb::kForWrite);
- //
- 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);
- }
|