lxspine 发表于 2007-3-28 21:24:00

[请问]如何改变UCS?

请问如何改变UCS?我的这个方法没有效果(想改变Z坐标值,其他的值不变):
void SetNewUCSZ(double Z)
{
acDocManager->lockDocument(curDoc(),AcAp::kWrite,NULL,NULL,true);
AcDbViewportTable* pVPTable;
acdbHostApplicationServices()->workingDatabase() ->getViewportTable(pVPTable,AcDb::kForWrite);
AcGePoint3d ptOrigin;
AcGeVector3d vecXAxis;
AcGeVector3d vecYAxis;
//获得当前视口记录
AcDbViewportTableRecord *pVPCurrent;
pVPTable->getAt("*ACTIVE", pVPCurrent, AcDb::kForWrite);
//改变UCS
pVPCurrent->getUcs(ptOrigin,vecXAxis,vecYAxis);
ptOrigin.z=Z;
Acad::ErrorStatus aa=pVPCurrent->setUcs(ptOrigin,vecXAxis,vecYAxis);
pVPCurrent->close();
pVPTable->close();
acDocManager->unlockDocument(curDoc());
}

yinpengji 发表于 2007-12-17 23:30:00

用acedSetCurrentUCS();来设置
AcGeMatrix3d mat;mat.entry = (aUcsRecord->xAxis()).x;
mat.entry = (aUcsRecord->xAxis()).y;
mat.entry = (aUcsRecord->xAxis()).z;
mat.entry = (aUcsRecord->yAxis()).x;
mat.entry = (aUcsRecord->yAxis()).y;
mat.entry = (aUcsRecord->yAxis()).z;
acedSetCurrentUCS(mat);
mat.entry = (aUcsRecord->xAxis()).x;
mat.entry = (aUcsRecord->xAxis()).y;
mat.entry = (aUcsRecord->xAxis()).z;
mat.entry = (aUcsRecord->yAxis()).x;
mat.entry = (aUcsRecord->yAxis()).y;
mat.entry = (aUcsRecord->yAxis()).z;
acedSetCurrentUCS(mat);
页: [1]
查看完整版本: [请问]如何改变UCS?