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

效果如下:


目录
相关文章
|
弹性计算 Kubernetes Cloud Native
K8s 网关选型初判:Nginx 还是 Envoy?
本文将从性能和成本、可靠性、安全性 3 方面,对两大开源实现进行比对,希望对正在做 K8s 网关选型的企业有所借鉴。
K8s 网关选型初判:Nginx 还是 Envoy?
|
5月前
|
运维 监控 网络协议
如何设计一个高性能内网穿透服务
本文深入解析了基于Go语言开发的高性能内网穿透工具IntraLink,涵盖其技术架构、核心实现、协议处理、性能优化与安全机制,展示了如何构建高效、稳定、安全的内网穿透服务。
229 1
|
Android开发 开发者 Python
手撸了一个全自动微信清粉小工具(源码详解)
微信清理僵尸粉工具利用Python和`uiautomator2`库,通过模拟转账操作自动检测并标记微信好友列表中被删除、被拉黑或账号存在问题的“僵尸粉”。工具支持开启调试模式、自动打开微信、获取好友信息、判断好友状态、管理标签等功能,最终将检测结果记录到文件中,便于用户管理和清理好友列表。此工具适用于Android设备,已在OPPO Reno4 Pro上测试成功。
799 5
|
JSON JavaScript 前端开发
开发桌面程序-Electron入门
【10月更文挑战第16天】Electron 是一个使用 JavaScript、HTML 和 CSS 构建跨平台桌面应用的框架,嵌入了 Chromium 和 Node.js。本文介绍了如何搭建 Electron 开发环境,包括安装 Node.js、创建项目、配置 main.js 和打包应用。通过简单的步骤,你可以快速创建并运行一个基本的 Electron 应用程序。
610 4
开发桌面程序-Electron入门
|
12月前
|
关系型数据库 MySQL 数据库
mysql查看用户的过期时间
通过本文的介绍,希望您能够深入理解和掌握在MySQL中查看用户过期时间的方法,并在实际项目中灵活运用这些技术,提升数据库管理的安全性和效率。
774 3
|
SQL 关系型数据库 MySQL
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
课程分类查询、课程新增、统一异常处理、统一封装结果类、JSR303校验、修改课程、查询课程计划、新增/修改课程计划
学成在线笔记+踩坑(3)——【内容模块】课程分类查询、课程增改删、课程计划增删改查,统一异常处理+JSR303校验
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的新闻管理系统
基于Java+Springboot+Vue开发的新闻管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
639 3
基于Java+Springboot+Vue开发的新闻管理系统
|
Ubuntu
在树莓派4B上安装ubuntu系统
在树莓派4B上安装ubuntu系统
|
Java 程序员
程序员必知:【java】判断字符串是否整数的三种方式,孰优孰劣请自行判断
程序员必知:【java】判断字符串是否整数的三种方式,孰优孰劣请自行判断
447 3