自制AutoCAD实用工具
程序员文章站
2024-02-27 18:04:09
...
对于一个设计院工作的人,在设计完成后要算工程数量,要计算很多线条的长度总和,我们往往会安装很多插件,很麻烦,个人觉得还是自己写几行代码比较方便:
将本段代码 复制到记事本,然后将后缀改为xxx.lsp,打开cad2012及以前版本,输入APPload——>选择xxx.lsp——>点击加载——>关闭。在CAD中输入LL,便可以统计线条长度。以下截图帮助小白理解。
(defun c:LL()
(setvar "cmdecho" 1)
(setq en (ssget (list '(0 . "spline,arc,line,ellipse,LWPOLYLINE"))))
(setq i 0)
(setq ll 0)
(repeat (sslength en)
(setq ss (ssname en i))
(setq endata (entget ss))
(command "lengthen" ss "")
(setq dd (getvar "perimeter"))
(setq ll (+ dd ll))
(setq i (1+ i))
)
(print (strcat "TZY_The total length: " (rtos ll 2 5)))
(princ)
)
顺便粘贴下标注面积的代码
;; write area value of a close polygon to drawing
(DEFUN C:EA(/ OLDOS PT STA QAREA)
;;
(setq olderr *error*)
(setq *error* myerr)
(SETVAR "CMDECHO" 0)
(SETQ OLDOS (GETVAR "OSMODE"))
;;
(SETVAR "OSMODE" 0)
(SETQ STA (CAR (ENTSEL)))
(COMMAND "AREA" "E" STA)
(SETQ QAREA (RTOS (GETVAR "AREA") 2 2))
(SETQ PT (GETPOINT"\nPick the point you want to write area:"))
(COMMAND "TEXT" PT "" "" QAREA)
;;
(SETVAR "OSMODE" OLDOS)
(SETVAR "CMDECHO" 1)
(setq *error* olderr)
(PRINC)
)
更多好玩的请看:计算机技巧
上一篇: 利用Redis实现延时处理的方法实例