hiviki 发表于 2023-5-2 10:46:07

请问大佬下面的代码只能再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)))
)

liuhe 发表于 2023-5-2 12:01:37

(command "lengthen" en "")CAD2024运行不了,需要手动输入参数,尽量不要调用command

vitalgg 发表于 2023-5-2 12:59:43

本帖最后由 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 内查询





mokson 发表于 2023-5-2 13:55:04

command 改 command-s 看看。

x_s_s_1 发表于 2023-5-2 16:23:51

本帖最后由 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]
查看完整版本: 请问大佬下面的代码只能再CAD2012里面运行,高版本就错误了。要怎么改啊?