Re: [問題] autolisp寫有關面積的程式

看板Cad_Cae (電腦輔助設計)作者 (sjgau)時間19年前 (2006/02/06 13:27), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串3/3 (看更多)
; file: area02.lsp (defun c:area02 (/) (setvar "cmdecho" 0) (setq s1 (getstring "\nfile name for output: ")) (setq s1 (strcat s1 ".txt")) (setq ff1 (open s1 "W")) (princ "\n Create a selection set of Plines: ") (setq ss1 (ssget '((0 . "LWPolyLine")))); 只要 Pline (princ "\n") (princ "\nsslength= "); 一共有幾個 Pline 被選擇到 (princ (sslength ss1)) (princ "\n\n") (setq l1 (sslength ss1)) (setq i1 0 sum 0.0 ) (while (< i1 l1) (setq en1 (ssname ss1 i1));get entiety name from selection set (command "area" "o" en1) (setq aa (getvar "area")) (princ (strcat "area= " (rtos aa 2 3) "\n")) (write-line (strcat (rtos aa 2 3)) ff1) (setq sum (+ sum aa)); 加總到 sum 裡面 (setq i1 (1+ i1)) ) ; end while (princ (strcat "\nsum= " (rtos sum 2 3) "\n")) (close ff1) (setvar "cmdecho" 1) (princ) ) ; end of c:area02() ; end of file: area02.lsp ※ 引述《tsanning (榕園的一隻狗)》之銘言: : ※ 引述《tsanning (榕園的一隻狗)》之銘言: : : 唉 : : 我autolisp忘光了 約末是三年前選修的 : : 請問 : : 面積嘛autocad裡用聚合線畫框完算是最快 : : 這樣是一次一個 : : 我看那個_area指令 : : 好像也只能一次一個 : : 那想一次多個呢(框選或點選多個聚合線都好) : : 能寫出來嗎 : : 不能寫我就不去翻我的筆記本了 : : 老人癡呆 : : 算畸零地真累...進度1/24 : 那個 : 我copy書上光碟的檔案 想結合 1.得面積數值 2.輸出純文字檔 : 這兩項 : 但是串不起來耶 目前只到 1.得面積數值的階段 : 2.的輸出檔案裡 我都無法把從1得到的面積數寫進去... : 單純1是這樣 (效率上有比 _area 快一點) : (defun c:lsp_45() : (setvar "cmdecho" 0) : (setq pt (getpoint "\n快選啊豬頭: ")) : (while pt : (setvar "cecolor" "1") : (command "bpoly" pt "") : (setq en (entlast)) : (if (/= en nil) : (progn : (command "area" "o" en) : (setq aa (getvar "area")) : (redraw en 3) : (alert (strcat "面積=" (rtos aa 2))) : ) : ) : (entdel en) : (setvar "cecolor" "bylayer") : (setq pt (getpoint "\n再選嘛: ")) : ) : (prin1) : ) : 結合失敗的1+2 : (defun c:lsp_45() : (setvar "cmdecho" 0) : (setq pt (getpoint "\n快選啊豬頭: ")) : (while pt : (setvar "cecolor" "1") : (command "bpoly" pt "") : (setq en (entlast)) : (if (/= en nil) : (progn : (command "area" "o" en) : (setq aa (getvar "area")) : ) : ) : (entdel en) : (setvar "cecolor" "bylayer") : (setq pt (getpoint "\n再選嘛: ")) : ) : (setq dat_file (getfiled "寫檔" "c:\d\report\de1\study\lsp" "txt" 1)) : (setq ff (open dat_file "w")) : (write-line "面積一覽" ff) : (write-line "==============" ff) : (write-line aa ff) : (write-line aa ff) : (write-line aa ff) : (close ff) : (prin1) : ) : ...aa不就是面積嗎 : 為啥寫不出來 : 就算我只點一個aa 也寫不出來 : 錯誤訊息不是 : 損壞的引數類型: stringp 119578.0 : 就是 : 損壞的引數類型: fixnump: 119578.0 : (119578.0就是面積 寫不進txt裡) : 可以請仁人君子有空解個答嗎 : 我夢想中的txt檔像這樣 : 119578.0 : 259872.5 : 4956.3 : 108572.8 : 4876.5 : 260276.6 : . : . : . : 這樣最好 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.243.237.65

02/06 15:28, , 1F
非常感謝^^
02/06 15:28, 1F

02/06 15:42, , 2F
不客氣!You are welcomed!
02/06 15:42, 2F
文章代碼(AID): #13vjvNtY (Cad_Cae)
文章代碼(AID): #13vjvNtY (Cad_Cae)