⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 circle_data_2xls.lsp

📁 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 + -