请问大佬下面的代码只能再CAD2012里面运行,高版本就错误了。要怎么改啊?
请问大佬下面的代码只能再CAD2012里面运行,高版本就错误了。要怎么改啊?(defun c:ss()
(setq ss (ssget)
n 0
sum 0)
(repeat (sslength ss)
(setq en (ssname ss n))
(command "lengthen" en "")
(setq sum (+ sum (getvar "perimeter"))
n (+ n 1))
)
(ALERT (STRCAT "总长度:" (rtos sum 2)))
)
(command "lengthen" en "")CAD2024运行不了,需要手动输入参数,尽量不要调用command 本帖最后由 vitalgg 于 2023-5-2 13:05 编辑
求曲线图元的长度
(defun curve:length (curve)
"参数curve:曲线,直线、圆弧、圆、多段线、优化多段线、样条曲线等图元"
"曲线的长度"
"(curve:Length (car (entsel)))"
(if (= 'ename (type curve))
(setq curve (e2o curve)))
(vlax-curve-getdistatparam curve (vlax-curve-getendparam curve)))
https://gitee.com/atlisp/atlisp-lib/blob/main/src/curve/length.lsp
@lisp函数库,开源共享,随时可调用(CAD内安装 @lisp,即可享用 上百了持续维护的函数)。
随时可查询: 支持 CAD 内查询 ,公众号查询 ,VSCode 语法提示和悬停提示。
http://bbs.mjtd.com/data/attachment/forum/202304/24/090927kgttnctnggnvhggf.png
公众号内查询:
CAD命令行查询
VSCode 内查询
command 改 command-s 看看。 本帖最后由 x_s_s_1 于 2023-5-2 16:26 编辑
应该是command的问题,改vl-cmdf吧
提供另一个方法,对spline,circle,ellipse无效
(defun c:ss(/ en n ss sun)
(setq ss(ssget)
n 0
sum 0)
(repeat (sslength ss)
(setq en (ssname ss n))
(setq sum (+ sum (getpropertyvalue en "length"))
n (+ n 1)))
(ALERT (STRCAT "总长度:" (rtos sum 2))))
页:
[1]