網頁

2010年2月10日 星期三

以 Civil 3D 所處理的半吊子解決對策

對於水土保持計畫熟悉的朋友定對於下面這個附圖不陌生吧!這是依水土保持技術規範第25條坡度分析中以坵塊法處理的結果,再將相關的資訊標示於圖上。當然了,朋友們可跟某家經銷商購買該坵塊法坡度分析的 Civil 3D 外掛,那是 total solution。或者,是自己動手寫 Autolisp程式去處理。(2010/10/18 補充:該外掛程式已由昌漢科技整合並免費提供使用,朋友只需前往註冊登入即可。好不好用則由朋友們自行判斷,建議朋友們先以本文的方法作作看,有助於瞭解 Civil 3D)


若您是跟筆者一樣並未擁有該外掛、不想"動不動就說買它",也暫時沒時間或懶得動腦袋寫程式的話,您可能如筆者般想著 Civil 3D可以在既有耗費人力的工作流程中於何適當時機介入,小顯身手一下!本文就是筆者於工作中所遇到的狀況,並以半吊子解決方案處理完畢的經驗談。
(註:這張示意圖僅作為本文標示說明之用,在水保的坡度計算上是有錯的。至於錯在那兒,就留給有作水土保持的朋友自行發現了。)

先概述一下水土保持技術規範第25條中坵塊法的程序:
1.畫邊長10公尺或25公尺的方格坵塊。
2.標註各邊與地形等高線相交點的點數。
3.合計各方格等高線與方格邊線交點總數 n。(即方格四邊的交點總數)
4.依下列公式求得坵塊內平均坡度 S。
接著一般會再於圖面上標示:
1. 坡度級序。(依水土保持技術規範第23條坡度分級)
2.各方格編號。

好了,開始動腦。在沒有外掛且不寫程式的情境下,人工作業的程度要到那個步驟?可能有些朋友的公司人力資源豐沛、也不趕時間,沒這樣的需求。但若朋友是若筆者所處的中小企業型顧問公司,稍稍動個腦解決這些同事眼中的疑難雜症是挺有趣的。

筆者在處理本案的當時,是請同事先處理至步驟3,即將方格四邊的交點總數 n值以文字標示上即止。接著的坡度、坡度級序、方格編號,均是藉由 Civil 3D 的點群組、點檔案滙出滙入功能及以試算表(OpenOffice.org 的 Calc)作排序編號的處理結果。
(2010/10/1 補充:可以先處理至步驟2,其後方格四邊的交點總數 n值的計算、坡度、坡度級序、方格編號,均藉由 Civil 3D 的點群組、點檔案滙出滙入功能及以試算表(OpenOffice.org 的 Calc)作排序編號處理。)

想法及理由很單純:
1. 各個 n 值的文字轉換為點物件後,即有東距E、北距N的資訊。
2. 將滙出的點檔案於試算表中作排序後,即可得所需的方格編號(先行再列或先列再行、遞增或遞減等)。
3. 於試算表中按公式以 n 值計算 S、坡度級序%。
4. 將計算得的 S 視為高程Z,坡度級序%視為點描述。
5. 重整為符合 PNEZD (或 PENZD等)格式的點檔案。
6. 剩下的就是 Civil 3D 的點檔案再次滙入,以點群組的點標示內容去控制各個物件標示文字的位置及大小而已。

半吊子解決方案完成。The End.

2 則留言:

匿名 提到...

https://www.youtube.com/watch?v=BOcMvI1JPKY
https://www.youtube.com/watch?v=XknvHjJeu90

林冠宏 (Guan-Horng Lin) 提到...

沒想到這篇四年半前的文章還有朋友回應。
Youtube影片的作者 Lin Money 是那位仁兄,我也不知道。
但是那個影片內容希望各位先別去看,因為那不符合本篇文章的目的:傷透腦筋想解法,使用 Civil 3D 的工具。
之所以稱半吊子解決對策的理由,當然是另有一較好的解決方案存在,不過就得動手寫些程式,Autolisp、VBA等均可行。但是半吊子解決對策,則是讓使用者能不受Civil3D 程式設計的框架限制,思索有效的解決方法的練習而已。