2026年4月6日 星期一

[AutoTower] 文字型式

舉凡鐵塔設計尺寸,構件編號、規格、長度、尺寸標註,鐵板編號、規格,螺栓規格、數量和其它註解...等,都跟文字型式有關。


建立標準文字型式

大原則,依需求建立。

分析、歸納與定義。

利用AutoCAD原有的指令建立文字型式。


在實務上,字型寬度有可能設定到 0.7,所以同一種字型似乎可以如下這樣建立:

尺寸線-大

尺寸線-中

尺寸線-小

構件編號

構件規格

構件長度

單線10

單線09

單線08

單線07


利用程式將繪圖區內已建立之許多文字型式儲存到外部檔案,作為標準字型。


如何使用

程式需要使用到字型時,先偵測特定字型是否存在,如果不存在,則從外部檔案讀入字型。


自訂變數

構件編號字型  --  "StlNoTextStyle" "構件-編號" "STR" "RW" "構件編號字型")

規格  --  ("StlSpecTextStyle" "構件-規格" "STR" "RW" ""構件規格字型")

長度  --  ("StlLenTextStyle" "構件-長度" "STR" "RW" "構件長度之字型")

尺寸標註

鐵板編號

規格

螺栓規格

數量

其它註解


文字型式管理員

1. c:atTxtStyExport 可以將目前圖面內的文字型式匯出成 "_varTextStyle.txt " 檔,其內容格式如下:

; AutoTower 自動生成,請勿手動編輯此文件

; 字型名稱  字體檔名  長寬比

("標準-07" "Arial.ttf" 0.7)

("單線-1"  "simplex.shx,chineset.shx" 1.0)


2. (at_TxtStyImport) 可以讀取外部 "_varTextStyle.txt " 檔,將文字型式匯入到目前圖面內。


系統開發與管理建議

在處理鐵塔2D佈樣與各種構件標註時,這套解決方案有幾個可以進一步優化或考量的面向:

1. 建立字體缺失的防呆機制 (findfile) 在匯入字體時,如果使用者電腦缺少特定的 .shx.ttf 檔案,AutoCAD 會彈出警告或自動以替代字體取代,這可能會導致斜率標註或構件編號的排版跑位。您可以在 entmake 之前,加入 (findfile fontFile) 的檢查。如果找不到字體,可以透過警示訊息提醒使用者,或者在程式內部自動降級(Fallback)使用如 txt.shx 等系統預設字體。

2. 與您現有的 DCL 介面整合 您可以將匯入文字型式的功能整合到參數輸入介面(DCL)中。例如,在啟動 AutoTower 佈樣程式時,自動在背景讀取這個 .txt 檔並載入必要的文字型式;或者在 DCL 面板中提供一個下拉選單,讓使用者根據不同業主(例如台電或其他客戶)的規範,一鍵切換整套「標註配置檔」。

3. 考慮註解性文字 (Annotative Text) 不同於一般的機械圖,鐵塔佈樣圖面中常會有大量極微小的細節與巨觀視圖的切換。如果您未來希望在不同的視埠(Viewport)比例下,構件編號與規格文字都能保持一致的列印字高,可以考慮在建立文字型式時加入註解屬性(Annotative)。不過這會牽涉到延伸字典(Extension Dictionary)的建立,會比上述純 DXF 碼複雜一些,通常搭配樣板檔(.dwt)會是比較簡單的作法。

4. 擴充文字對齊與圖層屬性 目前的 .txt 格式只記錄了「名稱、字體、長寬比」。未來若有需要,您的格式還可以擴充加入「預設圖層 (Layer)」與「文字高度 (TextHeight)」。例如:標註構件編號時,程式不僅幫使用者切換到正確的字型,還同時將該文字鎖定於指定的圖層中,這會大幅提升出圖管理的效率。

2026年3月31日 星期二

[AutoTower] 可用資源

VisualLISP IDE

VisualLISP教學影片

VisualLISP教學

LEE MAC

AfraLISP

AutoCAD 2022 Help(英文)

AutoCAD 2022 Help (簡體中文)

在 VsCode 裡發展 AutoLISP





[AutoTower] 關於塔身

 


名稱定義



塔身截面

塔身截面型式

從塔身截取斷面寬度

插入塔身截面基點



[AutoTower] 橫擔



橫擔型式

橫擔有多種型式,如果要考慮到每一種型式都做到完善,需要耗費不少時間,可選擇幾款比較常見的型式來「操練」,進而從其中了解相關知識。

橫擔三面:平面、立面和斜面。


名稱定義



從塔身到橫擔

橫擔可以視為塔身的手,以這個概念來規劃橫擔該如何寫程式。


橫擔需要哪些資料從塔身傳遞過來

塔身截面寬度

主柱規格、Gauge

橫擔主材鐵板厚度


橫擔基本資料

橫擔型式

橫擔寬度



橫擔基點

每一個橫擔平面都需要一個基點作為繪圖的依據。

橫擔截面基點名稱:GW、C1、C2...

橫擔平面東、南、西、北側基點名稱:GW-PE、GW-PS、GW-PW、GW-PN

橫擔立面東、南、西、北側基點名稱:GW-EE、GW-ES、GW-EW、GW-EN


橫擔立截面



圖層規劃

南北向的橫擔,在放樣時可能線條會重疊,或許可以利用圖層來區別它們,或是將整個橫擔平面移動到旁邊。然而,如果上述兩者都做,應該會讓繪圖者更加方便。

圖層規劃需同時考慮到放樣圖、詳細圖、裝建圖和鐵板圖之使用。


圖層名稱        顏色

GW-放樣

GW-詳細圖

GW-裝建圖

GW-編號球

GW-構件規格

-


2026年3月23日 星期一

[AutoTower] 斜率與基線

正確的斜率可以將空間中鐵塔側面 '攤平' 在地表或是 2D 繪圖面,以利於放樣出實際長度。

基線是鐵塔放樣的依據,一切尺寸都從這裡開始,基線一旦錯了就一切前功盡棄。


鐵塔設計資料

梯形有上寬、下寬、垂高、主柱彎曲點偏移距離,就可以計算出斜率。

若像是繼塔或塔腳,只知道梯形上寬和垂高,該如何計算出下寬和斜率? 

由基點的塔體部位屬性值,就可知道這個基點是UPPER、LOWER、幾米塔身或幾米繼塔!


問AI:

輸配電鐵塔的塔身是一個3D楔形體,然而在AutoCAD實施鐵塔放樣時需要把這個楔形體的立面側邊「放倒貼平」到地面,才能進行2D放樣。

我需要你幫我寫一個Autolisp DCL程式,可以輸入塔身資料,例如

頂部偏移

垂直高度

底部偏移

頂部寬度

底部寬度

鐵塔斜率(button)+(editbox)


程式產生之資料

        以下由程式產生之所有圖形物件皆放置於圖層「基線」。

基線名稱

一次斜率

基準點

中軸線

上寬線

下寬線

左斜線

右斜線


名稱唯一與多個名稱之間的關聯性

一個基線梯形一個唯一的名稱。

上塔身、下塔身、繼塔們與塔腳們都有其各自的基線梯形。

需要定義他們之間的關聯性。


作用基線

雖然有多個基線,但「作用」基線只有1個。


基線與 'Handle'

記住基線的每一根線的 Handle,有利於讓程式運算相對位置。 

變數 at$BLHandle

值    '(("基線名稱" "N/A")

          (" 一次斜率" "1000.438")

          ("基準點Handle"  "N/A")

          ("中軸線Handle"  "N/A")

          ("上寬線Handle"  "N/A")

          ("下寬線Handle"  "N/A")

          ("左斜線Handle"  "N/A")

          ("右斜線Handle"  "N/A"))


節號、節距與節型


多種高度的下塔身


多種高度的繼塔


多種高度的塔腳

塔腳的節型與塔身不同,需要另外處理。


鐵塔的戶口名簿

        鐵塔各部位的組合關係應該可以參考戶口名簿記載的方式來處理。上下位置可視為兄弟姊妹關係,內外位置可視為父母子女關係。

本人姓名

父母姓名

兄姊姓名

子女姓名

弟妹姓名


在圖塊屬性內有一欄位「關係」,其值為 "本人姓名,父母姓名,兄/姊姓名,子/女姓名,弟/妹姓名"

上述概念是否適合於用來表述塔體各部位之關係?


塔體圖塊  BlockName = "BasePoint_Body"   (圖層 = "基線")

屬性名稱       值    (圖層 = "Defpoints")

鐵塔名稱 = "PP-4JP"

塔體名稱 = "Lower"

接續自 = "Upper"

居內於 = "  "

低降垂距 = "  "

梯形資料 = "頂端寬度, 底端寬度, 垂直高度, 彎曲偏移, 一次斜, 二次斜"

基線Handle = "中軸線, 頂端線, 底端線, 左端線, 右端線"

節距 = "起始編號, 節距1, 節距2, 節距3, ..."

節型 = "   "

主柱規格 = "L90x7,L100x7..."

接續方式 = "(無),外搭,外搭,內搭,對接..."


塔腳圖塊  BlockName = "BasePoint_Foot"   (圖層 = "基線")

屬性名稱       值    (圖層 = "Defpoints")

鐵塔名稱 = "PP-4JP"

塔體名稱 = "10M FT"

接續自 = "  "

梯形資料 = "頂端寬度, 底端寬度, 垂直高度, 彎曲偏移, 一次斜, 二次斜"

左米數 = "3,4,5,6"

左基線Handle = "中軸線, 頂端線, 左端線, 右端線"

右米數 = "4,5,6,7,8"

右基線Handle = "中軸線, 頂端線, 右端線, 左端線"


================================================

我們來一步步推導這個「放倒貼平」的幾何公式。為了方便討論,我們假設鐵塔的這個節間(Section)是一個正方形截面的對稱截角方錐體。

1. 定義已知變數(來自圖面上的資訊)

在看鐵塔的正視圖或側視圖時,我們通常能直接取得以下數據:

  • $H$:該節間的垂直高度 (Vertical Height)。

  • $W_b$:該節間的底部寬度 (Bottom Width)。

  • $W_t$:該節間的頂部寬度 (Top Width)。

從這些已知數據,我們可以先算出單側的水平內縮量 ($\Delta W$)

$$\Delta W = \frac{W_b - W_t}{2}$$

在傳統的正立面圖上,主腳材的投影斜率 ($m_{proj}$) 就是水平內縮量與垂直高度的比值:

$$m_{proj} = \frac{\Delta W}{H}$$


2. 計算關鍵轉換參數:斜面實高 ($H_s$)

這是「放倒貼平」最核心的一步。

鐵塔的側立面是一個向內傾斜的等腰梯形。當你把它以底邊為軸心,往下「放倒」並與地面平行時,這個梯形的底邊 $W_b$ 和頂邊 $W_t$ 長度都不會改變。唯一改變的是這個梯形的「高度」。

在 3D 空間中,這個面的實際高度(也就是沿著傾斜面量測的中心線長度,我們稱為斜高 $H_s$)會大於垂直高度 $H$。根據畢氏定理,斜面實高是由垂直高度與單側內縮量構成的:

$$H_s = \sqrt{H^2 + \Delta W^2}$$


3. 推導「放倒貼平」後的 2D 幾何公式

現在,我們已經把那個傾斜的 3D 側面,轉換成了一個平躺在 2D 平面上的等腰梯形。

在這個放平的梯形中:

  • 底邊寬度 = $W_b$

  • 頂邊寬度 = $W_t$

  • 梯形高度 = $H_s$

  • 單側水平內縮量 = $\Delta W$ (放平後,橫向的內縮量並未改變)

這時候,我們就可以推導出放樣所需要的實面斜率真實夾角了:

A. 實面放樣斜率 ($m_{true}$)

在 2D 放樣圖面上,主腳材的斜率變成了橫向內縮量與「斜高」的比值:

$$m_{true} = \frac{\Delta W}{H_s} = \frac{\Delta W}{\sqrt{H^2 + \Delta W^2}}$$

(你會發現,$m_{true}$ 必定小於立面圖上的 $m_{proj}$,這代表放倒後的主腳材看起來會「稍微沒那麼斜」)

B. 主腳材與垂直中心線的真實夾角 ($\theta_{true}$)

這決定了斜材與主材交會時的真實角度:

$$\theta_{true} = \arctan\left(\frac{\Delta W}{H_s}\right)$$

C. 主腳材與水平構件的真實夾角 ($\alpha_{true}$)

這通常用於角鋼端部的切角加工:

$$\alpha_{true} = \arctan\left(\frac{H_s}{\Delta W}\right)$$


💡 驗證:這樣推導出來的主腳材長度是對的嗎?

我們可以用 3D 空間的距離公式來驗證這個 2D 推導是否正確。

在 3D 空間中,鐵塔角落的主腳材會同時在 X 軸和 Y 軸內縮 $\Delta W$,並在 Z 軸上升 $H$。所以主腳材的 3D 空間實長 ($L_{3D}$) 為:

$$L_{3D} = \sqrt{\Delta W^2 + \Delta W^2 + H^2} = \sqrt{2\Delta W^2 + H^2}$$

現在看我們剛剛「放倒貼平」的 2D 梯形。這個梯形的斜邊(也就是主腳材)長度 ($L_{2D}$),是由水平內縮量 $\Delta W$ 和梯形高度 $H_s$ 構成的直角三角形斜邊:

$$L_{2D} = \sqrt{\Delta W^2 + H_s^2}$$

把前面推導的 $H_s = \sqrt{H^2 + \Delta W^2}$ 代入:

$$L_{2D} = \sqrt{\Delta W^2 + (H^2 + \Delta W^2)} = \sqrt{2\Delta W^2 + H^2}$$

$L_{2D} = L_{3D}$

數學完美地吻合了。這證明了只要把原本立面圖的高度 $H$ 替換成斜高 $H_s$,畫出來的 2D 梯形,其斜邊長度就是主腳材真正的長度,而在這個 2D 梯形裡面畫出的任何斜材(Diagonal members),量出來的長度與角度,也都會是百分之百準確的加工實長與實角。

有了這些公式,下一步無論你是要在 AutoCAD 裡手動輸入相對座標畫圖,還是準備寫 Python 腳本讓它自動讀取 $W_b$$W_t$$H$ 然後生成 2D 展開圖,邏輯都已經打通了!


2026年3月22日 星期日

[AutoTower] 關於螺栓

 

定義

怎樣的圖形物件,才能被程式識別為螺栓?

註冊的螺栓圖塊

位於特定圖層內?


螺栓規格(公制與英制)


螺栓數量與長度


引線


腳踏釘




[AutoTower] 關於鐵板

 

鐵板的外觀沒有固定的形狀,需等待設計放樣後才能裁切出板型。


定義


鐵板規格



鐵板厚度



鐵板編號

因材料表將鐵板編號與扁鐵編號放在一起,所以這兩者需要同時討論。


型板

鐵板上有螺栓孔,在製作型板時,須把螺栓比例回復為1:1。