精華區beta Cad_Cae 關於我們 聯絡資訊
我用lisp程式碼完成了這個要求 讀取檔案後出現程式使用說明 請打指令 aa3d 後enter(這個一定要是aa3d,除非將程式首行c:aa3d改掉) enter後 出現提示與參數要求輸入 請輸入數字鍵 1 或 2 然後enter決定選取模式,或直接enter即為1的自行選取 自行選取的話請框,窗,籬,單或連選圖面上要加總的面域 執行完畢後按下[F2]鍵看執行過程找最後一個總面積那行的答案即所求 ~下面基礎說明給沒碰過lisp的站友參考~ 請將下列程式碼存成aa3d.lsp(以任何文字編輯軟體來弄都可以) 並置放該檔於安裝目錄下的acad200x資料夾或預設讀取lisp檔的任何目錄 下 於指令行鍵入(load "aa3d.lsp") 或 (load "aa3d")並enter 若當初檔名不是存成aa3d那就請將aa3d存成自己改的檔名 這是簡易版,沒有特別注重執行效能和多功能 就請自由發揮修改吧 ;aa3d.lisp ;=============Copyright============= ;此為簡易面域加總程式 ;用於2d,3d面域面積之加總 ;作者為台大BBS站PTT Egriawei ;歡迎使用及添改,惟請註明參考出處 ;若有問題請來信討論,請多指教 ;=================================== (defun c:aa3d (/ ss ssa e en en_data entype i mode ) ;===環境設定=== (graphscr) ;叫出圖框 (setvar "cmdecho" 0) ;指令執行過程不回應 ;;;物件鎖點等設定請視個人情況調整添改 ;===提示與參數輸入=== (princ "********************************************************\n") (princ " 框選或連(單)選欲加總面積的面域(欲加總元體需為region)\n") (princ "********************************************************\n") (setq mode (getint"選取模式:[1-自行選取;2-全選圖面]<預設自行選取>:") mode (if mode mode 1) ) ;===程式執行=== (if (= mode 1) ;=mode a自行選取= (progn (setq ss (ssget) ;圖元集合 ssa (ssadd) ;面域圖元蒐集 i 0 ;起始值變數 ) (repeat (sslength ss) (setq en (ssname ss i) ;取集合第一個圖元 en_data (entget en) ;圖元資料 entype (cdr (assoc 0 en_data)) ;圖元種類 ) (if (= entype "REGION") (progn ;(princ (strcat "No" (itoa i) "圖元:region->蒐集\n")) ;此行可略 (setq ssa (ssadd en ssa)) ;蒐集入ssa選擇集 );region圖元處理 (progn ;(princ (strcat "No" (itoa i) "圖元:" entype "->略過\n")) ;此行可略 );非region圖元處理 ) (setq i (1+ i)) ) ) ;=mode b整個圖面= (setq ssa (ssget "X" (list (cons 0 "REGION")))) ) ;=加總面域面積= (command "area" "a" "o") (setq i 0) (repeat (sslength ssa) (setq e (ssname ssa i) i (1+ i) ) (if (not (= (sslength ssa) i)) (command e)) ) (setvar "cmdecho" 1) ;指令執行過程回應(只列印最後一次加總結果) (command e "" "") ;===程式結束=== (princ "\n計算完畢!請鍵入[F2]找最後一個總面積即為所求!\n") (princ) ) ;================================ (princ "面域加總用副程式aa3d.lsp\n") (princ "<c:aa3d>\n") (princ) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.26.134
s9122405:感謝大大, 我試試看~~ 01/02 13:45
Egriawei:指令行打(*****)是call函數,直接打****是指令,不要弄錯喔 01/02 15:04
Egriawei:直接打load enter會變成去找字形檔載入 01/02 15:05
※ 編輯: Egriawei 來自: 61.230.26.134 (01/02 21:02)