閱讀957 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go 高性能網絡編程(1)—accept建立連接‍
  下一篇:go java.util.concurrent包(4)——讀寫鎖ReentrantReadWriteLock