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.mzph.cn/news/93429.shtml

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

相关文章

WebGL笔记:绘制多个点,三角形,以及画各种不同的线条,面

绘制多点 1 ) WebGL 缓冲区 我们在用js定点位的时候,肯定是要建立一份顶点数据的,这份顶点数据是给着色器的,因为着色器需要这份顶点数据绘图然而,我们在js中建立顶点数据,着色器肯定是拿不到的&#xff…

基于SpringBoot的反诈宣传平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

SpringBoot注册web组件

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

【Spring】Spring 创建和使用

Spring 创建和使用 一. 创建 Spring 项目1. 创建⼀个 Maven 项目2. 添加 Spring 框架⽀持3. 添加启动类 二. 存储 Bean 对象1. 创建 Bean2. 将 Bean 注册到容器 三. 获取并使⽤ Bean 对象1. 创建 Spring 上下文2. 获取指定的 Bean 对象3. 使用 Bean Spring 就是⼀个包含了众多⼯…

【vue3】wacth监听,监听ref定义的数据,监听reactive定义的数据,详解踩坑点

假期第二篇,对于基础的知识点,我感觉自己还是很薄弱的。 趁着假期,再去复习一遍 之前已经记录了一篇【vue3基础知识点-computed和watch】 今天在学习的过程中发现,之前记录的这一篇果然是很基础的,很多东西都讲的不够…

python复习

1.python属于解释型语言,解释器逐行解释每一句代码,然后执行 编译型语言需要由编译器生成最终可执行文件再执行 2. #单行注释""" 多行注释 """ 注释快捷键ctrl/ 3.变量是在计算机语言中能储存计算结果或表示某个数据…

Docker介绍与安装

目录 一、Docker 概述 1、什么时Docker 2、Docker的设计宗旨 4、Docker的优点 5、Docker容器和虚拟机的区别 6、 namespace的隔离(命名空间) 7、 Docker的三个核心概念 7.1 镜像 7.2 容器 7.3 仓库(Docker Hapu) 二、D…

Sentinel-2波段合成

Sentinel-2波段合成 在上一篇博客中下载了Sentinel-2数据,他有13个波段的.jp2文件,下面选取需要使用的波段进行合成。 导入了B2(蓝色)、B3(绿色)、B4(红色)、B8(近红外&…

Linux--网络编程-字节序

进程间的通信: 管道、消息队列、共享内存、信号、信号量。 特点:都依赖于linux内核。 缺陷:无法多机通信。 一、网络编程: 1、地址:基于网络,ip地址端口号。 端口号作用: 一台拥有ip地址的主机…

Windows11安装MySQL8.1

安装过程中遇到任何问题均可以参考(这个博客只是单纯升级个版本和简化流程) Windows安装MySQL8教程-CSDN博客 到官网下载mysql8数据库软件 MySQL :: Download MySQL Community Server 下载完后,解压到你需要安装的文件夹 其中的配置文件内容了如下 [mysqld]# 设置3306端口po…

(c++)类和对象 下篇

目录 1.再次了解构造函数 2. Static成员 3. 友元 4. 内部类 5.匿名对象 6.拷贝对象时的一些编译器优化 1.再次了解构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date { pub…

WARNING:tensorflow:Your input ran out of data; interrupting training. 解决方法

问题详情: WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least steps_per_epoch * epochs batches (in this case, 13800 batches). You may need to use the repeat() funct…

1.7.C++项目:仿muduo库实现并发服务器之Poller模块的设计

项目完整在: 文章目录 一、Poller模块:描述符IO事件监控模块二、提供的功能三、实现思想(一)功能(二)意义(三)功能设计 四、封装思想五、代码(一)框架&#…

Springboo整合Sentinel

Springboo整合Sentinel 1.启动Sentinel java -jar sentinel-dashboard-1.8.6.jar2.访问localhost:8080到Sentinel管理界面(默认账号和密码都是sentinel) 3.引入依赖(注意版本对应) <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spr…

stm32 - 中断/定时器

stm32 - 中断/定时器 概念时钟树定时器类型基准时钟&#xff08;系统时钟&#xff09;预分频器 - 时基单元CNT计数器 - 时基单元自动重装寄存器 - 时基单元基本定时器结构通用定时器计数器模式内外时钟源选择 定时中断基本结构时序预分频器时序计数器时序 概念 时钟树 https:…

Vue中如何进行多语言处理

Vue中的多语言处理 在开发多语言Web应用程序时&#xff0c;处理文本翻译和国际化是一个重要的任务。Vue.js提供了多种方法来实现多语言处理&#xff0c;以确保您的应用程序能够支持不同语言的用户。本文将深入探讨在Vue中进行多语言处理的方法&#xff0c;并提供示例代码来帮助…

WebSocket基础——WebSocket的基本概念 VS Http SpringBoot整合WebSocket vue前端代码和效果展示

前言 WebSocket是一种在Web浏览器和服务器之间进行全双工通信的协议。它允许在单个TCP连接上进行双向通信&#xff0c;而不需要通过多个HTTP请求-响应循环来实现。相比传统的HTTP请求&#xff0c;WebSocket提供了更低的延迟和更高的实时性。 本篇博客介绍WebSocket的基本概念…

Linux shell编程学习笔记6:查看和设置变量的常用命令

上节我们介绍了变量的变量命名规则、变量类型、使用变量时要注意的事项&#xff0c;今天我们学习一下查看和设置变量的一些常用命令&#xff0c;包括变量的提升&#xff0c;有些命令在之前的实例中已经使用过了。 一、 echo &#xff1a;查看变量的值 语法格式&#xff1a;ech…

计算机毕业设计 基于SSM的垃圾分类管理系统(以医疗垃圾为例)的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

《发现的乐趣》作者费曼(读书笔记)

目录 一、书简介 二、作者理查德•费曼 费曼式思维 教育与传承 三、个人思考 四、笔记 科学家眼中的花之美 关于偏科 父亲教育我的方式 知道一个概念和真正懂得这个概念有很大区别 我没有义务去成全别人对我的期望 诺贝尔奖——够格吗&#xff1f; 探究世界的游戏规…