Re: [問題] autolisp寫有關面積的程式
; 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
02/06 15:42, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Cad_Cae 近期熱門文章
PTT數位生活區 即時熱門文章