AutoCAD 產(chǎn)品設(shè)計(jì):圖形單位
本文講解 AutoCAD 產(chǎn)品的圖形單位功能產(chǎn)品設(shè)計(jì)。
使用的 AutoCAD 為 2020 版本
圖形單位是什么?
圖形單位是用于設(shè)置 一些屬性數(shù)據(jù)應(yīng)該用什么格式顯示 的命令,命令標(biāo)識(shí)為 un(units)。
舉個(gè)例子。
某個(gè)圓的半徑,在數(shù)據(jù)上是 12.3456,但我們給長(zhǎng)度單位配置為 “科學(xué)計(jì)數(shù)法類(lèi)型”,精度為 2(即保留兩位小數(shù)),在特性面板或其他顯示界面上,它需要顯示為 1.23E+01。
特性面板中的單位:
動(dòng)態(tài)輸入框的單位:
單位分為兩類(lèi):
- 線性單位(長(zhǎng)度單位)
- 角度單位
線性單位(長(zhǎng)度單位)
線性單位(linear units)用于一些長(zhǎng)度、坐標(biāo)等線性數(shù)據(jù)。
用于在 UI 層顯示對(duì)應(yīng)類(lèi)型單位,數(shù)據(jù)層保持原來(lái)的十進(jìn)制小數(shù)格式。另外,UI 層修改對(duì)應(yīng)格式數(shù)據(jù)會(huì)轉(zhuǎn)換回十進(jìn)制小數(shù),寫(xiě)回到數(shù)據(jù)層。
例子
比如設(shè)置線性單位的類(lèi)型設(shè)置為科學(xué)計(jì)數(shù)法(對(duì)應(yīng)值 1),精度為 2。
數(shù)據(jù)是十進(jìn)制的 12.345678,在 UI 上會(huì)轉(zhuǎn)換為 1.23E+01 進(jìn)行顯示。
如果在 UI 層的輸入框?qū)⑵涓臑?nbsp;1.23E+02,在失焦時(shí)會(huì)將這個(gè)字符串轉(zhuǎn)換為十進(jìn)制小數(shù)格式的 123,保存回?cái)?shù)據(jù)層。
需要實(shí)現(xiàn)格式兩大類(lèi)轉(zhuǎn)換算法:
- 十進(jìn)制小數(shù)轉(zhuǎn)其他格式,需要考慮精度。
- 其他格式轉(zhuǎn)小數(shù),不需要考慮精度,但要做校驗(yàn)補(bǔ)正。
需要實(shí)現(xiàn)兩類(lèi)方法:
// 十進(jìn)制轉(zhuǎn)其他格式
convertDecimal(decimal, type, precision)
// 其他格式轉(zhuǎn)小數(shù)
convertToDecimal(str, type)
長(zhǎng)度單位的可選類(lèi)型(linearUnits)
- 1 :科學(xué)。1.2346E+02
- 2: 小數(shù)。123.456
- 3: 工程。123'-4.56"
- 4: 建筑。123'-4 5/8"
- 5: 分?jǐn)?shù)。12 3/4
長(zhǎng)度精度(linearPrecision)
0 到 8 的整數(shù)。
比如對(duì)小數(shù)來(lái)說(shuō),代表保留 0 位到保留 8 位小數(shù)。
具體不同類(lèi)型對(duì)應(yīng)那些格式,可以看去打開(kāi)彈窗看看下拉選項(xiàng)。
角度單位
角度單位(angle units)用于顯示像是旋轉(zhuǎn)之類(lèi)的角度相關(guān)的弧度數(shù)據(jù)。
中文為 “角度”,那只是給用戶(hù)看到。angle 本意為度,不代表具體的格式。其實(shí)更準(zhǔn)確的描述是 “度”,而不是 “角度”。
該配置用于在 UI 層顯示對(duì)應(yīng)類(lèi)型角度單位,數(shù)據(jù)層保持原來(lái)的角度值,并且在 UI 層修改對(duì)應(yīng)格式數(shù)據(jù)也會(huì)轉(zhuǎn)回弧度,保存回?cái)?shù)據(jù)層。
例子
假設(shè)角度單位的類(lèi)型設(shè)置為弧度(對(duì)應(yīng)值 3),精度為 2,旋轉(zhuǎn)方向?yàn)?false(逆時(shí)針),基準(zhǔn)角度為 0。
數(shù)據(jù)是十進(jìn)制的 180,在 UI 上會(huì)轉(zhuǎn)換為 3.14r 進(jìn)行顯示。
如果在 UI 層的輸入框?qū)⑵涓臑?3r,它會(huì)在 onChange 中將這個(gè)字符串轉(zhuǎn)換為角度 171.88733853924697,保存回?cái)?shù)據(jù)層。
同樣需要實(shí)現(xiàn)兩類(lèi)方法,但相比長(zhǎng)度單位多了 “角度方向” 和 “基準(zhǔn)角度” 的參數(shù)。
// 弧度 -> 其他
convertRandian(radian, type, presicion, angleDir, angleBase)
// 其他 -> 弧度
getToDegreeParser(AngleUnitEnum.Radian)(str, type, angleDir, angleBase)
角度單位可選類(lèi)型(angleUnits)
設(shè)定角度單位(AutoCAD 系統(tǒng)變量是 AUNITS)。
- 0:十進(jìn)制度數(shù)。1.2345
- 1:度/分/秒。1d2'3.4
- 2:百分度。1.2345g
- 3:弧度。1.2345r
- 4:勘測(cè)單位。N 88d53'20.2" E(表示以正北為起點(diǎn),向東方向旋轉(zhuǎn) 88d53'20.2" E)
角度精度(anglePrecision)
0 到 8 之間的整數(shù),不同類(lèi)型對(duì)應(yīng)的精度格式不同。
特別注意的是,“度/分/秒” 和 “勘探單位” 的精度 1 和 3 分別等價(jià)于 2 和 4。因?yàn)榉趾兔氲恼麛?shù)部分是不補(bǔ)前導(dǎo)零的。這兩個(gè)類(lèi)型對(duì)應(yīng)的下拉選項(xiàng)中也把 1 和 3 去掉了。
角度方向(angleDir)
角度旋轉(zhuǎn)的正方向,默認(rèn)為逆時(shí)針(false)。
false 表示逆時(shí)針, true 表示順時(shí)針。
二者區(qū)別,其實(shí)就是角度轉(zhuǎn)換成其他單位前,是否要把數(shù)據(jù)源先用 PI * 2 減一下,再標(biāo)準(zhǔn)化。
基準(zhǔn)角度(angleBase)
基準(zhǔn)度數(shù),為弧度值。
其實(shí)就是在角度轉(zhuǎn)換其他單位前,先把角度減一下這個(gè) angleBase。
對(duì)于 AutoCAD,默認(rèn)向東的度數(shù)為 0。
插入時(shí)的縮放單位(insertUnits)
傳入時(shí)的縮放單位有相當(dāng)多,范圍也很廣,小到毫米,大到光年。
首先作為圖紙自己的單位。
當(dāng)我們選中一個(gè)實(shí)體,創(chuàng)建塊時(shí),塊有一個(gè) “塊單位” 屬性。假設(shè)當(dāng)前圖紙單位為 “厘米”,塊為 “毫米”,這個(gè)塊就會(huì)縮小為原來(lái)的 1/10。
這里的縮放比例和數(shù)據(jù)源不相等,是有一層轉(zhuǎn)換的:UI 層 scale = 數(shù)據(jù)層 scale * 單位因子。
單位因子是一個(gè)計(jì)算屬性,是塊單位轉(zhuǎn)圖紙單位的轉(zhuǎn)換比。比如塊單位為 mm,圖紙單位為 cm,那單位因子就是 0.1(1mm 等于 0.1 cm)。
如果設(shè)置的是比較特殊的單位 “無(wú)單位”,圖紙的單位會(huì)使用客戶(hù)端首選項(xiàng)設(shè)置的值,一般都是 “毫米”。
同時(shí)它作為外部參照插入其他圖紙時(shí)的 “塊單位”,效果同塊,只是不能修改單位。
另外外部參照插入時(shí)這個(gè)塊單位就寫(xiě)死了,此時(shí)修改外部參照?qǐng)D紙的單位,是不會(huì)影響的。
結(jié)尾
以上就是圖形單位這個(gè)命令的主要邏輯了。
其中的光源強(qiáng)度單位我不熟,用的也少,就不講了。