發表文章

目前顯示的是有「AutoCADVBA」標籤的文章

鋼筋CAD圖面撿料與彎折示意圖

圖片
流程:配筋圖→鋼筋撿料→鋼筋數量表→鋼筋彎折示意圖。 最近在畫一個設計案,為了簡化上述流程所遇到的問題: 1.配筋圖已經畫過一次鋼筋形狀,彎折示意圖仍重複描繪一次。 2.鋼筋撿料過程中,若編碼過多,常忘記編碼到幾號以及文字顯示的置中問題還有圓形外框。 呈上所述,乾脆將近期發展的AutoCAD資料庫中的鋼筋數量表拿來操作看看,沒想到有意外的好用,與各位分享一下。 圖一、配筋結果圖(若為圓形的會再加外框) 使用有包含四種功能: 1.SteelNumMain:點選鋼筋(線或多段線),快捷鍵:ST 2.SteelNumTemp:點選鋼筋(垂直紙面的部份,只呈現一個圓形的狀況),快捷鍵:STC 3.ExcelToCAD:單純將鋼筋數量表貼到CAD,請參考  Excel表轉出到CAD 4.StShow:透過資料庫將已存資料自動描繪至CAD,並依據各鋼筋"形心"放置於指定編號下方固定距離,快捷鍵:STSHOW P.S有關快捷鍵設定LISP請參考  LISP自訂函數呼叫VBA 圖二、從資料庫透過ExcelToCAD的鋼筋數量表。 圖三、鋼筋彎折示意圖結果。 ------- 2019/08/30 Update ------- 新增功能"PLOTTMPST":點選CAD圖面上某一POLYLINE,可以將該POLYLINE上繪製類似ARRAY功能的溫度筋。

LISP自訂函數呼叫VBA巨集

圖片
身為一名工程人員,繪圖時能夠 精簡步驟 ,節省時間是最好不過的事情。 即便已經會使用VBA,但操作的過程還是需要 點選"執行VBA巨集"→選擇要執行的VBA 。 當很多的SUB一一被寫出來,要從一整排的VBA找到正確功能的去點擊,也是很不容易的事情(當VBA執行視窗無法完整顯示巨集名稱的時候)。 此時, 如果VBA的執行能夠像是從一般介面去點擊或者是指令操作,那就太完美了! 為達成上述功能有以下方式可供嘗試: 1. 使用者介面(CUI)新增自訂方法編寫CAD巨集語言指定VBA。 2. VBA操作menu物件去指定VBA。 3. 透過LISP語言去新增自訂函數 。 其中,最為方便的乃為LISP,日後只需要設定指令即可達成VBA的效果,相關步驟如下: 1.開啟筆記本(notepad),將以下代碼貼上後,存檔並將副檔名更改為.lsp。  (defun c:bk() ;自訂函數名稱     (vl-load-com)     (setvar "cmdecho" 0)     (command "-vbarun" )     (command "BreakLine" ) ;要執行的sub名稱     (setvar "cmdecho" 1) ) P.S:更改副檔名的方式,先至資料夾選項中,將隱藏副檔名取消勾選即可更改。 2.開啟CAD後,點擊"載入應用程式"→選取已編寫完成的.dvb檔案。 3.點擊"載入應用程式"→載入此lsp檔案。 4.如果需要常駐也可以加入至啟用套件,就省得每次重開圖面就要再執行一次了。 之後在圖面上只要打入 bk 就會自動執行Sub BreakLine() ....End Sub 該程序的內容了!!!!

AutoCAD VBA 橫斷面繪製自動化(疏濬用)

圖片
新版本請參考  VBA @ 一般渠道疏濬圖 前言: 因應筆者所在的灌溉給水區域為濁水系統,外加上坡度比較緩和,常需要有疏濬的工作要執行,每次在計算疏濬土方量的時候,畫一下縱橫斷面也是不可避免的。現地的狀況由該擔當區的人員最能理解土方分布情況,但又受限於繪製CAD斷面也是一門學問,因而引發我寫了一個side project將原本在CAD中設定斷面高程的部分以Excel表的形式代替,爾後再由CAD中的dvb檔去連結設定檔,達到參數化製圖的目的。 使用方法: 1. 設定該灌溉系統的起訖點、渠道形式(U型溝、內面工)及尺寸(Unit:M)。 圖一、排序必須由上到下遞增,不能有空白。 2. 點選 " 斷面填寫 " 後依照指示填寫。(會先偵測前次的最後樁號,填入樁號需比它 後面 ) 圖二、Buttom位於工作表1:橫斷面繪製資料。 P.S:如左側有剩餘資料,請先點選 " 刪除資料 "。 3. 填寫時若是板橋、箱涵等較難疏濬的地方,請在樁號填寫上or下,代表上斷面or下斷面 4. 填寫左右環境參數後、各點高程以及是否為結束點(END?),如已知下一個的樁號可填寫 下      一個間距 ,點按OK後不會再進行詢問。 圖三、Excel VBA中的userform。 P.S2:結束點代表為板橋或箱涵的上斷面,在土石方計算表中會多安插一列空白行隔開。 5.如果要更改已經填寫的最後一道樁號資料,可以透過 " 上一動 " 將其引入。 6.填寫完後點按 " 結束 " 再進行檢查各項資料後即可儲存備用。 7.進入AutoCAD中,將dvb檔引入後並且將該Excel開啟中,即可繪製一連續的斷面。 8.回到Excel中,點擊 " 土石報表 " ,即可得到老大們需要的土石方報表。 ' 'This project is to solve the complex and boring things in dredge event 'Made by Hank Lin 2018/3/19 @ MelinStation ...

AutoCADVBA 圖紙小精靈_Ver1.0

圖片
前言: 有鑑於大部分前輩的圖都建立於模型空間(ModelSpace)之下,每次畫圖完畢發現少(多)某一張圖,當要插入或者是刪除時,就會需要在圖框內的頁次欄位進行更動,這點可以說是相當麻煩(尤其是對於超過30頁的圖檔來說),因而引發筆者寫這篇Side Project供參考使用。 Demo影片: 使用方法: 1.程式介面建立於VBA之下,為一個dvb檔,有關如何開啟請參考( 如何使用dvb檔 )。 2.請檢查頁次項目部分為: 第OO頁共OO頁。 3.請檢查圖框圈選線是否為聚合線(連續線段):偵測(LowerLeftPoint,UpperRightPoint)使用。 4.請檢查圖框圈選線所處圖層是否為 ( 出圖圖框 ):過濾圖框項目。 5.執行VBA巨集→點選第一個module(ShowUserForm)→執行。 圖一、紅色部分為圖框圈選線。 按鈕介紹: 1.創造圖框:若需要創建一連串的圖框們,可先在Excel檔中定義圖框內容後批次輸出。 圖二、圖框內容定義 2.新增圖紙:框選所有圖框,輸入要插入的頁次,會把所有框選起來的頁次及>=插入頁次的                           部分批次增加。 3.去除圖紙:框選所有圖框,輸入要刪除的頁次,會把所有框選起來的頁次及>=插入頁次的                           部分批次減少。 4.批次列印:必須先設定列印配置,請參考 ( AutoCAD顧問-批次出圖  ) 圖三、列印配置 注意事項 :先選擇要輸出的印表機→出圖內容改為視窗(要求圈選時先隨意圈選)→置中出圖→比例為1:1→圖面方位(橫式)→如有需要再更改出圖型式表→套用至配置。 檔案下載: 本機端執行環境 AutoCAD2016 x64,Excel2016 x64,下載點:  Frame.dvb 原始碼: UserFrom比較沒...

Excel表轉出至CAD

圖片
在進行施工設計時,常使用Excel來進行數據的運算,常見有: 主結構配筋的時候要試算鋼筋數量、長度、重量 → 鋼筋數量表 主結構重要數量核算 → 材料數量表 渠道使用明渠水理試算 → 水理因素表 當然需要的表格不僅有這些,還有拉力強度、彎距強度...等等的試算(在一些重要的結構物上),但我也沒碰過故不清楚這部分。 在CAD中畫圖時,將Excel表轉至CAD檔方法有: 利用AutoCAD插入表格,然後導入Excel檔。 複製/貼上,將Excel要得區域複製,到AutoCAD中貼上。 利用第三方軟體,做AutoCAD與Excel橋接。 詳細圖片說明請參考 :  營建的馬克與電腦 筆者認為第三方軟體也是需要花錢的,故寫了個VBA供大家參考使用: 下載連結:  ExcelToCAD_ConverceData.dvb 程式使用方法展示:       1.   輸入你要前往的工作表位置 ( 請輸入名稱索引 , 最前方的數字 ) ,按下 Enter          ※如果偵測到工作表的頁數超過一頁的話才會啟動詢問 2.  直接選擇你要轉換的連結區域後,按下 Enter 20190307更新: 上述的原始碼還是有一點寫太麻煩了,這次直接實作一個clsExcelToCAD物件並同時引用clsACAD物件,執行主要程序為ExportToCAD,偵測的內容是被框選到的儲存格,如果為合併儲存格則強迫畫外框,如果為單一儲存格則偵測是否上下左右邊界有無畫線,有畫線則有外框。 Private MyACAD As New clsACAD Const TXT_COE = 0.8 Const ROW_COE = 0.335 Const COL_COE = 2.1 Public lupt As Variant Private rng_start As Range Private rng_end As Range Private rng_first As Range Sub ExportToCAD() For Each rng In Selection ...

AutoCADVBA學習資源

圖片
學習AutoCADVBA的資源在國內來說大多都是全英為主,因此在學習過程中若英文能力不足會有一到跨不過的牆,但大抵來說,只要掌握VBA的程式撰寫過程以及掌握物件使用就能在AutoCADVBA中遊刃有餘囉~ 筆者目前有接觸過且比較常見的物件有以下: line polyline circle arc text mtext leader mleader hatch 例如: 在模型空間中(ModelSpace)的(0,0,0)~(10,10,0)中畫個直線(line) Sub test() Dim lineobj as aAcadLine  '必須先宣告lineobj是一個"線" dim spt(2) as double dim ept(2) as double spt(0)=0 'X spt(1)=0 'Y spt(2)=0 'Z ept(0)=10 'X ept(1)=10 'Y ept(2)=0   'Z Set lineobj=thisdrawing.modelspace.addline(spt,ept) '在(0,0,0)~(10,10,0)畫條直線 End Sub spt只是我設定的一個代號,要取什麼高興就好,我只是用 S tart P oin t 來代表我的起點。 同理,ept就是 E nd P oin t 。 thisdrawing   代表這個圖面 modelspace   代表模型空間 addline(point1,pointt2)   為新增線段的方法 沒有錯,VBA就是如此簡單,其實只要懂他的語法你就能好好愛上它了~!! 學習這些物件的資源在哪裡? 1. 在google中打入關鍵字 "Autocadvba 你要幹嘛 "  就會出現一些的範例給你參考著用,有時候可能要打成英文的,就會有很多Autodesk knowledge的範例跳出來給你看,因此一點簡單的英文也是必須的!!! 2. 在VBA 編輯器中的物件類別(F2)或者是點圖中的那個圖打入關鍵字modelspace(模型空間)就會出現很多跟他有關的指令,慢慢挑,慢慢選,挑一個喜...

AutoCAD VBA 縱斷面繪製自動化-1

圖片
範例影片: 成果圖: 是否呈現高程數字的部分可以在對話時將其關掉 緣由: 一般在設計小型工程時(尤其是筆者所接觸的水利工程方面,高程資料是非常重要的),必須將樁號、單距、地盤高、挖填高or其他繪製成縱斷面圖,以往都是將前人留下的舊圖,一個一個慢慢編輯,但這實在不太方便,故透過AutoCADVBA去循序讀取Excel中的資料,達成在AutoCAD圖檔中縱斷面自動生成。 方法: 本次實作將分為在Excel中以及AutoCAD兩個部分。Excel中主要是要獲得樁號、單距、相關高程、坡度、長度、樁號說明、施工建議等項目。 Run的按鈕僅是提供首次接觸該VBA的人避免填錯資料的一個引導輸入介面。 Step1:決定設計起始點,輸入S,E or S,C,E S代表開始的樁號、C代表變換坡度的樁號、E代表結束的樁號 Step2:是否需要清除Excel中的計畫高的欄位。 如果偵測到 該設計起始點編碼上的計畫高的欄位還有保留數字 ,會依據這個數字來給予最適坡度。 Step3:輸入原先設定為起點的計畫高 Step4:由取得參考坡度,請求輸入一較接近為整數的坡度(1:XXX) 通常最適坡度都是抓計畫高到下一樁號的地盤高來計算,除非是在Step2有保留數字則會依據計畫高到下一樁號的計畫高來計算。 P.S:下一樁號為設計起始點的部分為"C"或者"E"的樁號 Step5.於該工作表的名稱後方 刮弧內更改工程名稱(還沒寫進去...可忽略第5點) Step6.如有需要再新增自己需要的判斷高度(如右田高、路面高...ETC) 如要新增自己的判斷高度,該 欄位的名稱最後一定要是 "***高" 才能被判斷 Step7. 打開AutoCAD並開啟到為可以畫圖的圖面 ,點擊"畫圖" 請注意!!!這裡如果發現錯誤的話請檢查引用項目 (  VBA引用項目問題  ) 或者是打開工作管理員 將所有的 "acad.exe" 結束工作(可能是開啟後隱藏在後台) 因為我的是AutoCAD 2016,所以是引用 AutoCAD...

淺談VBA

VBA全名為Visual Basic for Application,建立在如excel、word、ppt、outlook、access甚至是Autocad也可以透過指令使其運作,因為工作的緣故無意間接觸到此項工具,意外發現VBA在excel上可以做到的事情相當廣泛,不必再透過人工的手段處理一些繁瑣的動作,故開設此版供有需要的先進作為參考使用,如有任何錯誤的地方歡迎指教。 學習VBA的優點: 快速又正確的達成原本應當很重複的動作。 比如:彙整資料、數量計算、產生報表、甚至在AutoCAD圖面上的小工具也能自行開發。 學習VBA的缺點: 屬於二次開發的程式語言,必須要附著在excel或autocad的應用程式下運作,無法直接包成.exe檔供人使用,比較容易有版本問題限制。 學習心得: 大學時曾接觸過一點Java,但因為沒有實作經驗,不太能理解老師到底想要幹嘛,後來也就不了了之。 出社會後因為對於重複性的動作感到很無聊,後來透過MSDN、Excel麻辣鮮師、土師傅的ExcelVBA教學,慢慢的了解一些屬性跟方法的用途為何以及最重要的是 嘗試去套用在我要解決的問題上面 ,當問題可以被很迅速解決就建立起莫大的成就感,也是我會踏入這條不歸路的原因,至少到目前為止,我很開心,因為我的確可以解決比平常人更多的問題。 每解決一項專案,並且實際運用在工作上,就可以節省更多時間,節省下來的時間又可以去解決另外一項專案,這是一個相當良好的正向循環,也很推崇在工作中找到問題,從問題中學到解決方法,然後keep cycling,我希望能把我當初所擁有的資源再次回饋給有需要的人們。