AutoCAD 产品设计:图形单位

本文讲解 AutoCAD 产品的图形单位功能产品设计,没有任何代码实现。

使用的 AutoCAD 为 2020 版本

图形单位是什么?

图形单位是用于设置 一些属性数据应该用什么格式显示 的命令,命令标识为 un(units)。

举个例子。

某个圆的半径,在数据上是 12.3456,但我们给长度单位配置为 “科学计数法类型”,精度为 2(即保留两位小数),在特性面板或其他显示界面上,它需要显示为 1.23E+01

特性面板中的单位:

动态输入框的单位:

单位分为两类:

  • 线性单位(长度单位)
  • 角度单位

线性单位(长度单位)

线性单位(linear units)用于一些长度、坐标等线性数据

用于在 UI 层显示对应类型单位,数据层保持原来的十进制小数格式。另外,UI 层修改对应格式数据会转换回十进制小数,写回到数据层。

例子

比如设置线性单位的类型设置为科学计数法(对应值 1),精度为 2。

数据是十进制的 12.345678,在 UI 上会转换为 1.23E+01 进行显示。

如果在 UI 层的输入框将其改为 1.23E+02,在失焦时会将这个字符串转换为十进制小数格式的 123,保存回数据层。

需要实现格式两大类转换算法:

  1. 十进制小数转其他格式,需要考虑精度;
  2. 其他格式转小数,不需要考虑精度,但要做校验补正。

需要实现两类方法:

// 十进制转其他格式
convertDecimal(decimal, type, precision)
// 其他格式转小数
convertToDecimal(str, type)

长度单位的可选类型(linearUnits)

  • 1 :科学。1.2346E+02
  • 2: 小数。123.456
  • 3: 工程。123'-4.56"
  • 4: 建筑。123'-4 5/8"
  • 5: 分数。12 3/4

长度精度(linearPrecision)

0 到 8 的整数。

比如对小数来说,代表保留 0 位到保留 8 位小数。

具体不同类型对应那些格式,可以看去打开弹窗看看下拉选项。

角度单位

角度单位(angle units)用于显示像是旋转之类的角度相关的弧度数据。

中文为 “角度”,那只是给用户看到。angle 本意为度,不代表具体的格式。其实更准确的描述是 “度”,而不是 “角度”。

该配置用于在 UI 层显示对应类型角度单位,数据层保持原来的角度值,并且在 UI 层修改对应格式数据也会转回弧度,保存会数据层。

例子

假设角度单位的类型设置为弧度(对应值 3),精度为 2,旋转方向为 false(逆时针),基准角度为 0。

数据是十进制的 180,在 UI 上会转换为 3.14r 进行显示。

如果在 UI 层的输入框将其改为 3r,它会在 onChange 中将这个字符串转换为角度 171.88733853924697,保存回数据层。

同样需要实现两类方法,但相比长度单位多了 “角度方向” 和 “基准角度” 的参数。

// 弧度 -> 其他
convertRandian(radian, type, presicion, angleDir, angleBase)
// 其他 -> 弧度
getToDegreeParser(AngleUnitEnum.Radian)(str, type, angleDir, angleBase)

角度单位可选类型(angleUnits)

设定角度单位(AutoCAD 系统变量是 AUNITS)。

  • 0:十进制度数。1.2345
  • 1:度/分/秒。1d2'3.4
  • 2:百分度。1.2345g
  • 3:弧度。1.2345r
  • 4:勘测单位。N 88d53'20.2" E(表示以正北为起点,向东方向旋转 88d53'20.2" E

角度精度(anglePrecision)

0 到 8 之间的整数,不同类型对应的精度格式不同。

特别注意的是,“度/分/秒” 和 “勘探单位” 的精度 1 和 3 分别等价于 2 和 4。因为分和秒的整数部分是不补前导零的。这两个类型对应的下拉选项中也把 1 和 3 去掉了。

角度方向(angleDir)

角度旋转的正方向,默认为逆时针(false)。

false 表示逆时针, true 表示顺时针。

二者区别,其实就是角度转换成其他单位前,是否要把数据源先用 PI * 2 减一下,再标准化。

基准角度(angleBase)

基准度数,为弧度值。

其实就是在角度转换其他单位前,先把角度减一下这个 angleBase。

对于 AutoCAD,默认向东的度数为 0。

插入时的缩放单位(insertUnits)

传入时的缩放单位有相当多,范围也很广,小到毫米,大到光年。

首先作为图纸自己的单位。

当我们选中一个实体,创建块时,块有一个 “块单位” 属性。假设当前图纸单位为 “厘米”,块为 “毫米”,这个块就会缩小为原来的 1/10。

这里的缩放比例和数据源不相等,是有一层转换的:UI 层 scale = 数据层 scale * 单位因子

单位因子是一个计算属性,是块单位转图纸单位的转换比。比如块单位为 mm,图纸单位为 cm,那单位因子就是 0.1(1mm 等于 0.1 cm)。

如果设置的是比较特殊的单位 “无单位”,图纸的单位会使用客户端首选项设置的值,一般都是 “毫米”。

同时它作为外部参照插入其他图纸时的 “块单位”,效果同块,只是不能修改单位。

另外外部参照插入时这个块单位就写死了,此时修改外部参照图纸的单位,是不会影响的。

结尾

以上就是图形单位这个命令的主要逻辑了。其中的光源强度单位我不熟,用的也少,就不讲了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/147142.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uboot启动流程-涉及s_init汇编函数

一. uboot启动涉及函数 本文简单分析uboot启动流程中,涉及的汇编函数: lowlevel_init函数调用的函数:s_init 函数 save_boot_params_ret函数调用的函数: _main 函数 本文继上一篇文章的学习,地址如下:…

“把握拐点,洞悉投资者情绪与比特币价格的未来之路!“

“本来这篇文章是昨天晚上发的,国庆节庆祝喝多了,心有余而力不足!直接头躺马桶GG了” 标准普尔 500 指数 200 天移动平均线云是我几个月来一直分享的下行目标,上周正式重新测试了该目标。200 日移动平均线云表示为: 200 天指数移…

JDBC学习笔记(1)

连接数据库 下载mysql-connector-java,这里我是看的这个连接mysql-connector-java下载。 下载后并且导入了Idea中的lib文件下。 导入成功后,为了验证可以通过CTRLn来搜索Driver看看有没有添加进来。 随后在MySQL中创建一个数据库,我这里直…

uboot启动流程-涉及_main汇编函数

一. uboot启动流程涉及函数 本文简单分析一下 save_boot_params_ret调用的函数:_main汇编函数。 本文继之前文章的学习,地址如下: uboot启动流程-涉及s_init汇编函数_凌肖战的博客-CSDN博客 二. uboot启动流程涉及的 _main汇编函数 经过之…

Beats Studio Buds 连接 Windows 11 声音输出不显示设备

Beats Studio Buds 连接 Windows 11 声音输出不显示设备 Beats Studio Buds 蓝牙耳机连接Windows 11电脑后,无法通过耳机播放声音,在声音输出选项中也没有耳机选项。 问题 蓝牙耳机连接电脑。 在声音输出中查看输出设备选项。 解决方法 以管理员身…

Python中匹配模糊的字符串

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 如何使用thefuzz 库,它允许我们在python中进行模糊字符串匹配。 此外,我们将学习如何使用process 模块,该模块允许我们在模糊…

淘宝天猫渠道会员购是什么意思?如何开通天猫淘宝渠道会员购有什么用?

淘宝天猫渠道会员购是什么意思? 淘宝天猫渠道会员购与淘宝天猫粉丝福利购意思基本相同,都可以领取淘宝天猫大额内部隐藏优惠券、通过草柴APP开通绑定渠道会员还可以获得购物返利。 草柴APP如何绑定开通淘宝天猫渠道会员? 1、手机下载安装「…

【改进哈里鹰算法(NCHHO)】使用混沌和非线性控制参数来提高哈里鹰算法的优化性能,解决车联网相关的路由问题(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

数学建模三大类模型适用场景及建模方法(纯干货)(3)

目录 一,评价类算法 1,层次分析法 ●基本思想: ●基本步骤: ●优点: ●缺点 ●适用范围: ●改进方法: 2,灰色综合评价法(灰色关联度分析) ●基本思想: ●基本步骤: ●优点: ●缺点: ●适用范围: ●改进方…

游戏制作资源推荐

教程 创建僵尸第一人称射击游戏 | 虚幻引擎 5 初学者教程https://www.youtube.com/watch?vqOam3QjGE8g ​​​​​​​ 虚幻商城免费资产 人物资产 各种角色应有尽有 关键词:paragon ;推荐程度:三颗星

CBA球员注册管理系统(计科课设)

⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏留言 ⭐系列专栏:数据结构初阶 ⭐代码仓库:Data Structure 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注&#xff…

SpringBoot注册web组件

目录 前言 一、注册Servlet组件 1.1 使用SpringBoot注解加继承HttpServet类注册 1.2 通过继承HttpServet类加配置类来进行注册 二、注册Listener组件 2.1 使用SpringBoot注解和实现ServletContextListener接口注册 2.2 ServletContextListener接口和配置类来进行注册 …

算法框架-LLM-1-Prompt设计(一)

原文:算法框架-LLM-1-Prompt设计(一) - 知乎 目录 收起 1 prompt-engineering-for-developers 1.1 Prompt Engineering 1.1.1 提示原则 1. openai的环境 2. 两个基本原则 3. 示例 eg.1 eg.2 结构化输出 eg.3 模型检验 eg.4 提供示…

uwb人员定位系统:人员轨迹实时定位

UWB定位系统是一种基于超宽带技术的定位系统。它与传统的通信技术不同,不需要使用载波,而是通过发送和接收具有纳秒或微妙级以下的极窄脉冲来实现无线传输。这种系统的优势包括低功耗、对信道衰落不敏感、抗环境能力强、不会对同一环境下的其他设备造成影…

深度学习(1)---卷积神经网络(CNN)

文章目录 一、发展历史1.1 CNN简要说明1.2 猫的视觉实验1.3 新认知机1.4 LeNet-51.5 AlexNet 二、卷积层2.1 图像识别特点2.2 卷积运算2.3 卷积核2.4 填充和步长2.5 卷积计算公式2.6 多通道卷积 三、池化层 一、发展历史 1.1 CNN简要说明 1. 卷积神经网络(Convolut…

淘宝/天猫获得淘宝商品详情API(含测试示例)

taobao.item_get 调用说明 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中进入测试)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]c…

【计算机网络】HTTP协议详解(举例解释,超级详细)

文章目录 一、HTTP协议简单介绍 1、1 什么是HTTP协议 1、2 再次理解“协议” 二、HTTP请求 2、1 HTTP的工作过程 2、1、1 demo代码 2、2 URL 介绍 2、2、1 urlencode 和 urldecode 2、3 HTTP 请求格式 三、HTTP响应 3、1 响应demo 3、2 HTTP 响应格式 四、HTTP 请求和响应中的…

Leetcode.965 单值二叉树

本专栏内容为:leetcode刷题专栏,记录了leetcode热门题目以及重难点题目的详细记录 💓博主csdn个人主页:小小unicorn ⏩专栏分类:八大排序汇总 🚚代码仓库:小小unicorn的代码仓库🚚 &…

HTML之如何下载网页中的音频(二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

一篇博客学会系列(3) —— 对动态内存管理的深度讲解以及经典笔试题的深度解析

目录 动态内存管理 1、为什么存在动态内存管理 2、动态内存函数的介绍 2.1、malloc和free 2.2、calloc 2.3、realloc 3、常见的动态内存错误 3.1、对NULL指针的解引用操作 3.2、对动态开辟空间的越界访问 3.3、对非动态开辟内存使用free释放 3.4、使用free释放一块动态…