📄 circle_data_2xls.lsp
字号:
;;;选择多个圆,然后取得圆的xy值,半径,面积,周长。
;;;取得物件特性对应的组码的值组成的列表
(defun get_value_list (ss code / slen i na data n ptlist)
(setq slen (- (sslength ss) 1))
(setq i 0)
(while (<= i slen)
(setq na (ssname ss i))
(setq data (entget na))
(setq value (cdr (assoc code data)))
(foreach n data
(if (= code (car n))
(setq ptlist (cons (cdr n) ptlist))
)
)
(setq i (+ i 1))
)
(reverse ptlist)
)
;;;由点的列表获取XY的值组成的列表
(defun getptxlist (ptlst / k ptxlst)
(setq k 1)
(setq len (length ptlst))
(while (<= k len)
(setq pt (nth (1- k) ptlst))
(setq ptxlst (cons (car pt) ptxlst))
(setq k (1+ k))
)
(reverse ptxlst)
)
(defun getptylist (ptlst / k ptylst)
(setq k 1)
(setq len (length ptlst))
(while (<= k len)
(setq pt (nth (1- k) ptlst))
(setq ptylst (cons (cadr pt) ptylst))
(setq k (1+ k))
)
(reverse ptylst)
)
;;;由面积组成的列表
(defun GetArea (ss / na arealst)
(setq slen (- (sslength ss) 1))
(setq i 0)
(while (<= i slen)
(setq na (ssname ss i))
(command "_.area" "object" na)
(setq arealst (cons (/ (getvar "area") 1000000) arealst))
(setq i (+ i 1))
)
(reverse arealst)
)
;;;由长度组成的列表
(defun GetLen (ss / na lenlst)
(setq slen (- (sslength ss) 1))
(setq i 0)
(while (<= i slen)
(setq na (ssname ss i))
(command "_.area" "object" na)
(setq lenlst (cons (/ (getvar "Perimeter") 1000) lenlst))
(setq i (+ i 1))
)
(reverse lenlst)
)
(defun inputstr2xls (lst column startrow / k)
(setq k 1)
(setq totalrow (length lst))
(while (<= k totalrow)
(vlxls-put-row-value
*xlapp*
(list column (+ k startrow))
(rtos (nth (1- k) lst))
)
(setq k (1+ k))
)
)
(defun c:circle_data_2xls ()
(vlxls-app-init)
(vl-load-com)
(setvar "cmdecho" 0)
(setq ss (ssget '((0 . "circle"))))
(setq centlst (get_value_list ss 10))
(setq ptxlst (getptxlist centlst))
(setq ptylst (getptylist centlst))
(setq radlst (get_value_list ss 40))
(setq arealst (GetArea ss))
(setq lenlst (GetLen ss))
(setq *xlapp* (vlxls-app-new T))
(vlxls-put-row-value *xlapp* (list 1 1) "X坐标")
(vlxls-put-row-value *xlapp* (list 2 1) "Y坐标")
(vlxls-put-row-value *xlapp* (list 3 1) "半径")
(vlxls-put-row-value *xlapp* (list 4 1) "面积")
(vlxls-put-row-value *xlapp* (list 5 1) "周长")
(inputstr2xls ptxlst 1 1)
(inputstr2xls ptylst 2 1)
(inputstr2xls radlst 3 1)
(inputstr2xls arealst 4 1)
(inputstr2xls lenlst 5 1)
;;; (vlxls-app-save *xlapp*) 保存表格到默认路径
(princ)
)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -