本文講解 AutoCAD 產品的圖形單位功能產品設計。
使用的 AutoCAD 為 2020 版本
圖形單位是用于設置 一些屬性數據應該用什么格式顯示 的命令,命令標識為 un(units)。
舉個例子。
某個圓的半徑,在數據上是 12.3456,但我們給長度單位配置為 “科學計數法類型”,精度為 2(即保留兩位小數),在特性面板或其他顯示界面上,它需要顯示為 1.23E+01。
特性面板中的單位:
動態(tài)輸入框的單位:
單位分為兩類:
線性單位(linear units)用于一些長度、坐標等線性數據。
用于在 UI 層顯示對應類型單位,數據層保持原來的十進制小數格式。另外,UI 層修改對應格式數據會轉換回十進制小數,寫回到數據層。
比如設置線性單位的類型設置為科學計數法(對應值 1),精度為 2。
數據是十進制的 12.345678,在 UI 上會轉換為 1.23E+01 進行顯示。
如果在 UI 層的輸入框將其改為 1.23E+02,在失焦時會將這個字符串轉換為十進制小數格式的 123,保存回數據層。
需要實現格式兩大類轉換算法:
需要實現兩類方法:
// 十進制轉其他格式convertDecimal(decimal, type, precision)// 其他格式轉小數convertToDecimal(str, type)
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)
設定角度單位(AutoCAD 系統(tǒng)變量是 AUNITS)。
0 到 8 之間的整數,不同類型對應的精度格式不同。
特別注意的是,“度/分/秒” 和 “勘探單位” 的精度 1 和 3 分別等價于 2 和 4。因為分和秒的整數部分是不補前導零的。這兩個類型對應的下拉選項中也把 1 和 3 去掉了。
角度旋轉的正方向,默認為逆時針(false)。
false 表示逆時針, true 表示順時針。
二者區(qū)別,其實就是角度轉換成其他單位前,是否要把數據源先用 PI * 2 減一下,再標準化。
基準度數,為弧度值。
其實就是在角度轉換其他單位前,先把角度減一下這個 angleBase。
對于 AutoCAD,默認向東的度數為 0。
傳入時的縮放單位有相當多,范圍也很廣,小到毫米,大到光年。
首先作為圖紙自己的單位。
當我們選中一個實體,創(chuàng)建塊時,塊有一個 “塊單位” 屬性。假設當前圖紙單位為 “厘米”,塊為 “毫米”,這個塊就會縮小為原來的 1/10。
這里的縮放比例和數據源不相等,是有一層轉換的:UI 層 scale = 數據層 scale * 單位因子。
單位因子是一個計算屬性,是塊單位轉圖紙單位的轉換比。比如塊單位為 mm,圖紙單位為 cm,那單位因子就是 0.1(1mm 等于 0.1 cm)。
如果設置的是比較特殊的單位 “無單位”,圖紙的單位會使用客戶端首選項設置的值,一般都是 “毫米”。
同時它作為外部參照插入其他圖紙時的 “塊單位”,效果同塊,只是不能修改單位。
另外外部參照插入時這個塊單位就寫死了,此時修改外部參照圖紙的單位,是不會影響的。
以上就是圖形單位這個命令的主要邏輯了。
其中的光源強度單位我不熟,用的也少,就不講了。
本文鏈接:http://www.tebozhan.com/showinfo-26-16527-0.htmlAutoCAD 產品設計:圖形單位
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com