作者sjgau (sjgau)
看板Cad_Cae
标题Re: [问题] autolisp写有关面积的程式
时间Mon Feb 6 13:28:37 2006
; 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
1F:推 tsanning:非常感谢^^ 02/06 15:28
2F:推 sjgau:不客气!You are welcomed! 02/06 15:42