發表文章

目前顯示的是 2019的文章

單曲線定線工具

圖片
平面測量完成後第一步便是定出中心線,當現地佈設的時候需要轉彎可以考慮使用單曲線進行定線,這也是目前最簡單的一種圓弧形定線方式。 在繪製平面圖的過程因為前陣子所發表的"Hank's繪圖資料庫"本身程式設計的限制,我只能夠使用AcadPolyline Object 或者是 AcadLightWeightPolyline Object 去執行橫斷面取樣樁的設定,因此當遇到有轉彎的時候只能很約略地去擬合我想要的位置,引發此次撰寫這篇Side Project的動機。 以下開始介紹本次開發會使用到的工具: 1.繪製CURVE: a.點選第一邊的某點 b.點選IP點 c.點選第二邊的某點 d.輸入半徑 透過點選CAD圖面上的三個點決定偏角後再輸入半徑(Radius)來繪製一個AcadArc Object,當初開發過程遇到正偏角與副偏角的問題會有圓弧出現在反邊的狀況,目前僅用簡單的判斷式去處理,但總覺有更好的寫法。 2.擬合CURVE: a.點選CURVE物件 b.點選尚未擬合前的中心線 c.輸入擬合點位個數 d.輸入是否要刪除舊的中心線 CURVE物件在CADVBA為AcadArc Object可以取得其起點位置、終點位置、圓弧長度、半徑...等有用的資料,在公路設計上常用20公尺為一整樁單位去進行放樣,可以由圓弧長度換算出適合的擬合點位個數,方便日後測量人員進行放樣。 至於是否要刪除舊的中心線端看使用者是否有在同一線段有很多中心線需要做CURVE的動作,若有,可以在第一個圓弧做完後保留其舊的中心線,後續的圓弧都以前一次生成的中心線為基底去做擬合。 3.標註CURVE: a.點選CURVE物件 b.點選IP點 c.輸入標註文字大小(單位為mm) d.點選標註文字的左上角 透過上述第2點所取得的基本資料,可以將單曲線所需要的資料,比如IP點號、IP的座標位置、半徑、圓弧長、切線長...等必要資料給展示於平面圖上,測量人員得以有一個依據去進行放樣的動作。 4.曲線放樣: a.點選CURVE物件 這步驟針對於沒有具備全測站的測量人員使用,可以先由圖面資料將該單曲線的各個點資料先做

水工構造物的參數化設計應用-簡易的BIM實踐專案

圖片
建築資訊模式(BIM) 透過參數化的設計使得每一項構造物都有其特定的尺寸及鋼筋號數、鋼筋間距,日後再使用上就能透過其尺寸去產生相對應的材料數量,像是混凝土、模板、鋼筋...等大宗物資。 筆者所位於的機關比較常用到的只有以下幾類: U型溝 箱涵 重力式擋土牆 懸臂式擋土牆 矩形塊(EX:護欄、板橋、道路修復) 參數化設計的目的除了能夠更精準的取得數量計算表、結構計算也是相當重要的一環,但礙於此次的程式設計時間有限,為求能達到速成完成接下來的設計案,決定將結構計算這部分先暫緩執行(畢竟我也不是專業的)...QQ DEMO: 以下開始介紹有關"水工OrderVBA"使用核心概念: 1.先想好有關本次設計案所需要使用到的項目為何? 2.依照U型溝、箱涵、矩形塊...etc填入基本尺寸 圖一、U型溝基本資料表,可以接受漸變段(如U1的底寬為2~3),繪製CAD時會標示其為漸變。 圖二、箱涵基本資料表,取U型溝值可以將已經存在的U型溝Type的相關資料引入至箱涵成為其底座。 圖三、矩形塊基本資料表,目前有提供4種Mode,差別在於鋼筋繪製方向與模板計算不同。 3.總表填入渠道名稱、起訖點、數量、單位 圖四、總表,有個自訂函數"GETLOCSANDE(range1,range2)"可以將起點跟迄點之間的里程求出。 4.點選"繪製圖塊",於CAD上畫出一系列的標準斷面圖。 圖五、U型溝基本型態,本專案沒有用到雙層筋,如要補強請自行繪製再配上鋼筋數量表。 圖六、箱涵基本型態,就是這樣。 圖七、道路護欄基本型態,繪製後再自行搬移到其他的水工構造物的施設地點放置。 圖八、道路修復基本型態,繪製後再自行搬移到其他的水工構造物的施設地點放置。 圖九、農路板橋基本型態,補強筋跟增強彎折的部分我自己畫的,他一開始畫出來只有單層筋而且沒有彎。 5.繪製過程中鋼筋數量將一併填入到"鋼筋數量表" 圖十、最右邊為鋼筋繪製的時候並留存的參數欄位,紀錄他的長相。 6.檢查各個CAD標準圖上的鋼筋是否有需要補充的部分 如

全測站地籍套疊@GIS

圖片
一般使用GIS進行點位套疊時,引入資料可以是txt或csv之類的文字檔案,因筆者所使用的 WebGIS 所支援的檔案為CSV檔。 點位資料只需要X,Y資料即可,而針對點資料進行處理的過程不外乎就是平移及旋轉,更高深點的會有對齊(Align)的功能。 圖一、繪圖資料庫指令位置。 圖二、依據現地點資料進行套疊(僅供參考) 筆者開發的 Hank's VBA繪圖資料庫 恰好有需要進行點資料套疊地籍圖的過程,原先進行專案的過程都在CAD中進行一系列的套疊,但總有些目標範圍是沒有地籍圖的DXF檔,因此這時候只能夠參考WebGIS嫁接農委會所提供的地籍圖(僅供參考)及農航所提供的航照圖進行,此處須注意的是,嫁接的地籍圖因需要使圖面長的更為契合,通常都會進行編修,而這樣針對破圖區就只能僅供參考,除非能有更大量的點資料來佐證此時所測出的點資料乃趨近於真實座標。 以下介紹上述提到專案中相關的功能: 1.點位微調>>平移: a.輸入X軸位移距離(向右為+) b.輸入Y軸位移距離(向上為+) 2.點位微調>>旋轉: a.輸入點序號(基準點) b.輸入角度(順時針為+) 3.點位微調>>對齊: a.輸入第一點點序號(基準點) b.輸入第一點目標X c.輸入第一點目標Y d.輸入第二點點序號 e.輸入第二點目標X f.輸入第二點目標Y 以上即可達成有關點資料一系列平移、旋轉、對齊等相關步驟。 4.輸出CSV: 輸入CSV檔的名稱後放置於某一位置,進WebGIS中>>座標>>選擇檔案>>全部定位。 圖三、WebGIS套疊指令位置。 P.S: Hank'sVBA繪圖資料庫-0430.xls才有支援"對齊"的方法。

Google Earth 點資料轉換

圖片
前言: 1.透過Google Earth上點選路徑工具,創造一指定路徑後生成.kml檔案 2.將kml檔案丟入TCX converter中選取update height,取得相對應的Alt(高程)後匯出成CSV檔 3.將CSV檔中的LAT與LONG資料丟入WGS84_TWD97.xls即可取得TWD97的GoogleEarth點 請先安裝必要工具: Google earth(PC版) TCX converter WGS84_TWD97.xls Step1:開啟GoogleEarth 在Google Earth中選取好目標範圍,點選"新增路徑",塗滿塗好你要的目標範圍後,點選確定。於左邊的路徑名稱點選"將位置另存為...",把檔案存成kml 圖一、新增路徑停滯視窗 圖二、目標範圍塗的越密資料越精緻 圖三、另存為kml Step2:開啟TCX converter 這是一個可以將GoogleEarth的kml資料透過二次覆核的方式將ALT引入至路徑點資料中,因原本的路徑資料屬於平面資料是不含高程的, 匯出時點選"NO"以","進行分隔 。 圖四、開啟kml檔 圖五、點選Track Aanpassen>>Update Hoogte 圖六、點選Expoteer>>CSV Bestand Opslaan Step3:開啟WGS84_TWD97.xls 感謝 Victor的程式設計遇上小提琴 ,他所參考的公式為Steve Dutch學者的文章,部落格中改寫他的python原始碼為VBA使用而成,同時也感謝 ola的家 將python原始碼改寫為C#使用。 有幸借助兩位的力量,成功的將經緯度(WGS84)轉換成TWD97,爾後將點資料匯入Civil3D就能產生精細的地形了!!並經測試,已經可以從原本的誤差2M多變的非常小,堪用度提高許多。 圖七、CSV檔以Excel打開,因原本有,分隔,它會自行切開。 圖八、貼上於Main工作表中的相對應位置 圖九、點選CONVERT DATA取得twd97點資料

VBA@ 一般渠道疏濬圖

圖片
圖文並茂簡報檔 一份簡易的疏濬CAD檔案應該要包含以下三種內容 a.標準斷面圖(含水理因素表) b.縱斷面圖 c.橫斷面圖 此次的Side Project就是為了簡化以上的繪製過程,將所有的資料都集合在Excel的各個頁籤中,只需要點選 "標準斷面"、"橫斷面"、"縱斷面"、"匯入CAD"(表格使用),即可將所有應該要有的資料給繪製到CAD檔上面。 整體步驟大致上為: 1.填寫工作表("渠道Type") 2.填寫工作表("標準斷面"):點選按鈕"標準斷面"、"匯入CAD" 3.填寫工作表("橫斷面"):點選按鈕"橫斷面"、"土方報告" 4.填寫工作表("縱斷面"):點選按鈕"縱斷面圖" 5.參考視埠出圖之  配置分圖工具  或者模型出圖之  圖框小精靈  進行後續出圖 Step1.填寫工作表("渠道Type") 首先需要建立各種渠道斷面的標準尺寸(單位為公尺),目前提供的有U型溝、內面工兩種資料表,左邊的Type排序隨意(我都用ABCD去排),只要標準斷面對應的到就可以了 以下範例介紹:A.砌石工、B.U型溝、C.內面工、D.土渠、E.有底的砌石工。 Step2.填寫工作表("標準斷面") :點選按鈕"標準斷面"、"匯入CAD" 依照樁號起與樁號迄的順序指定其渠道Type為何,並填寫水理因素表,待日後使用。 填寫完成後點選按鈕"標準斷面" 輸入樁號標題與渠底中心的距離(預設為2500),unit:mm 輸入X位移(預設為5000),unit:mm 輸入Y位移(預設為-4000),unit:mm 輸入當產生渠道斷面幾次後移往下一X位移(預設為4) 移動至CAD點選第一個斷面的渠底中心點 框選要引入CAD的表格範圍,使其為正在使用中 點選按鈕"匯入CAD" 移動至

pictures物件實作(工程登記卡)

圖片
一般的報表常常用Excel實作,但這個報表比較重要的是他需要貼不同型式的渠道示意圖。 有關圖片的部分在填寫竣工資料也有施工照片與查驗照片等等表格,但針對圖片物件的描述並不是那麼豐富,因此本文主要在練習如何使用pictures物件。 pictures物件為picture物件的集合,透過pictures.insert(path)可以將指定的路徑照片給插入,因為有些照片太大或太小,可以使用pictrue物件的width跟height屬性調整,以下先讀取資料庫中的ch_type判斷其為何種型式再用select case去索取需要的照片檔,進而貼上。 圖一、工程登記卡大致長相 圖二、工程登記卡之基本資料庫 Private g_name As String Public ch_name As String Private ch_location As String Public ch_type As Byte Private ch_se As String Public ch_length As Double Private shtModel As Object Private Sub Class_Initialize() Set shtModel = Sheets("工程登記卡(模板)") End Sub Sub CollectData(ByVal r As Double) With Sheets("Main") 'BasicData g_name = .Cells(r, 1) ch_name = .Cells(r, 2) ch_location = .Cells(r, 3) ch_type = .Cells(r, 4) ch_se = Format(.Cells(r, 5), "0+000") & "~" & Format(.Cells(r, 6), "0+000") ch_length = .Cells(r, 6) - .Cells(r, 5) End With End Sub Sub CreatePi

平面圖樁號標註

圖片
平面圖樁號標註是平面圖的定線取完之後必經過程 生成流心的部分是透過設定取樣密度(流心連線距離),去抓兩個邊界的中心點連線取得中心點,再將收集到的中心點連線而成。 圖中的定線(紅色線段)可能是AcadPolyline或者是AcadLWPolyline 兩者的差別僅在於Coordinates是否有Z值 大致上概念是將該多段線先任取兩點取得其"方位角"再用方位角+90度與方位角-90度取出橫斷面樁兩端點,再進行後續處理。 程式碼的概念都是幾何關係,滿滿的都是包括極坐標轉XY、方位角轉正角,XY轉方位角 有興趣者請參考以下程式碼~ UI介面: 圖面成果: 我比較偏愛這款(右樁標註+左樁標註+方向旗標) 程式碼: 'clsCL Private CAD As New clsACAD Private Math As New clsMath Private arrLen() As Variant Private arrLoc() As Variant Private collCLPt As New Collection Private CL As Object Private BL As Object Private pts As Variant Private CO As Byte Private totalLen As Double Public w As Double Public nowLoc As Double Public IsLeftShow As Boolean Public IsRightShow As Boolean Public NeedBox As Boolean Public NeedDir As Boolean Public BLnext As Double Const WIDTH_COE = 1.2 Private Sub Class_Initialize() Set lay = CAD.acaddoc.Layers.Add("橫斷面樁") lay.color = 4 'acCyan Set lay = CAD.acaddoc.Layers.Add(&qu