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);
}
效果如下:
