2026年3月23日 星期一

[AutoTower] 基點與基線

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

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


鐵塔設計資料

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

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

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


主基點、子基點、腳基點與作用基點

用來區分不同的基線樣式,所以區分為主基點、子基點與腳基點。主基點用來產生鐵塔主結構,子基點用來產生繼塔結構、腳基點用來產生塔腳結構。

主基點圖塊名稱      at_BpMain.dwg

子基點圖塊名稱      at_BpSub.dwg

腳基點圖塊名稱      at_BpFoot.dwg

橫擔基點圖塊名稱  at_BpArm.dwg


可以有許多的主基點、子基點、腳基點與橫擔基點,由於需要區分它們之間的不同,所以其屬性裡會有基點名稱與基點類型。

但「作用」基點只有 1 個。


在茫茫線條海中要如何識別基點並找到作用基點?

在建立基點時,會將基點圖塊的 Handle 儲存到「 字典 」裡面,透過內部程式

(at_BpMainSet  "<Handle>")         指定主基點

(at_BpSubSet  "<Handle>")           指定子基點

(at_BpFootSet  "<Handle>")          指定腳基點

(at_BpArmSet  "<Handle>")          指定腳基點

(at_BpCurSet  "<Handle>")           指定作用基點

也可以透過外部程式指定

atBpMainSet    指定主基點

atBpSubSet      指定子基點

atBpFootSet     指定腳基點

atBpArmSet     指定橫擔基點

atBpCurSet      指定作用基點


取得想要的基點,則可以透過

(at_BpMainGet)    取得主基點物件

(at_BpSubGet)      取得子基點物件

(at_BpFootGet)     取得腳基點物件

(at_BpArmGet)     取得橫擔基點物件

(at_BpCurGet)      取得作用基點物件


上面內部程式都會傳回物件的 Handle

可以用 

(handent  <Handle>)   取得元體

(at_bpGetAtts)             取得作用基點物件所有屬性

(at_bpGetPoint)           取得作用基點座標

(at_bpMainPoints)       取得作用主基點梯形的 9 個座標點

(at_bpSubPoints)         取得作用子基點梯形的 6 個座標點

(at_bpCurPoints)         取得作用基點梯形的座標點


主基點梯形的 9 個座標點:

p0---p1---p2

p3---p4---p5

p6---p7---p8


子基點梯形的 6 個座標點

p0---p1---p2

p3---p4---p5


與基點有關的:對稱作圖

(at_BpMirrorSet Boolean)    指定是否要自動畫出鏡射物件

(at_BpMirrorGet)                  取得是否要畫出鏡射物件

atBpMirrorSet                        指定是否要畫出鏡射物件

(at_MirrorPt 原始點p0 鏡射點ps 鏡射角度rot)    計算出鏡射點

(at_bpMirrorPt 原始點p0)       計算出以作用基點為垂直鏡射面的另一側座標點


繪圖

atBpMainAdd    新增主基點與基線,並將它指定為作用基點。

atBpMainMod    選取主基點產生基線,並將它指定為作用基點。

atBpSubAdd      新增子基點與基線,並將它指定為作用基點。繪出主基線


節號、節距與節型


多種高度的下塔身


多種高度的繼塔


多種高度的塔腳

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


鐵塔的戶口名簿

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

本人姓名

父母姓名

兄姊姓名

子女姓名

弟妹姓名


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

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


塔體圖塊  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 = "中軸線, 頂端線, 右端線, 左端線"


內部指令

(at_bpSetC handle)   指定作用基點

(at_bpGetC)               取得作用基點  RETURN <圖元名稱: 7ff4561618f0>

(at_bpGetAtts)           取得作用基點物件所有屬性

(at_bpGetPoint)         取得作用基點座標

(at_bpGetPoints)       取得作用基點梯形的6個座標點  RETURN  lstPt 


(at_bpGetPoint4)       取得作用基點梯形的4個座標點  RETURN  lstPt

(at_isInPt4 pt p1 p2 p3 p4)   判斷點pt是否在四邊形(梯形)內部

(at_isInTower pt)       判斷點pt是否在四邊形(梯形)內部

(at_bpMirrorPt pt)    求出以基點為鏡射面的另一側座標點

(at_IsBothSet  "1")    指定是否要畫出鏡射物件

(at_IsBothGet)    取得是否要畫出鏡射物件



外部指令

c:atBpMainAdd    新增主基點與基線,並將它指定為作用基點。

c:atBpMainMod    選取主基點產生基線,並將它指定為作用基點。

c:atBpSubAdd      新增子基點與基線,並將它指定為作用基點。

c:atBpSetC           指定作用基點。

c:atBpShow          顯示作用基點位置。

c:atBpMirror          指定是否要畫出鏡射物件




沒有留言:

張貼留言