ObjectArx学习笔记-UCS创建及应用

简介: UCS创建: static void qxzyOperateUCS_AddUCS(void) { // Add your code for command qxzyOperateUCS._AddUCS here AcDbUCSTable *pUcsTbl; acdbHostApplicationServices()->workingDatabase() -&

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);
	}

效果如下:


目录
相关文章
|
IDE 开发工具 数据库
AutoCAD ObjectARX开发包
AutoCAD ObjectARX开发包
170 2
|
存储 传感器 物联网
基于小熊派SD卡+Fatfs+移植开源iniparse解析库并使用
基于小熊派SD卡+Fatfs+移植开源iniparse解析库并使用
78 0
|
IDE 开发工具
瑞萨RH850 CS+集成开发环境Sections字段说明
在文章:瑞萨RH850 CS+环境下设置堆和栈空间和瑞萨IDE:CS+ for CC进行BootLoader升级时开发环境配置中,讲解到Sections字段的使用。
|
IDE 开发工具
瑞萨IDE:CS+ for CC新建工程配置方法
在上一篇博文中,我们讲到瑞萨IDE:CS+ for CC下载、安装和基础使用,创建新工程生成示例代码后,编辑工程,提示错误信息,主要原因是新建工程后需要进行配置才可以正常进行编译和运行。
|
IDE 编译器 开发工具
瑞萨IDE:CS+ for CC下载、安装和基础使用
本篇博文将介绍:CS+ for CC安装和基础使用(本篇文章以:RH850 系列MCU为例)。
[oeasy]python0084_扩展BCD_EBCDIC_ibm的发家史
[oeasy]python0084_扩展BCD_EBCDIC_ibm的发家史
76 0
[oeasy]python0084_扩展BCD_EBCDIC_ibm的发家史
|
数据可视化
Autodesk Revit 2023 简体中文 (含激活工具)
Autodesk Revit软件专为建筑信息模型而构建(BIM)。BIM是以从设计、施工到运营的协调、可靠的项目信息为基础而构建的集成流程。
676 0
Autodesk Revit 2023 简体中文 (含激活工具)
|
Python
python用thinker库制作一个进制转换器(可打包exe)
进制转换之间很麻烦,还得计算,如果可以做一个进制转换器多nice,其实也不难,就利用一个tkinter库就能制作,废话不多说,直接开搞。
459 0
python用thinker库制作一个进制转换器(可打包exe)