hiviki 发表于 2025-4-20 15:46:48

请教大佬下面的代码在2024里面运行有结果,但是点击确认后还有其他命令

请教大佬下面的代码在2024里面运行有结果,但是点击确认后还有其他命令(附图),不能像在低版本上正常结束:

或者大佬们有其他LSP能快速或者长度并弹窗的,要能获取所有类型的长度,万分感谢,用了ChatGPT,写的代码不能运行。

===============以下是代码=====================

(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)))
)

===============以上是代码=====================

统一网名 发表于 2025-4-20 17:36:26

(defun c:tt (/ en n ss sum)
(setq ss (ssget))
(if (not ss)
    (alert "未选择对象。")
    (progn
      (setq n 0 sum 0.0)
      (repeat (sslength ss)
      (setq en (ssname ss n))
      (setq sum (+ sum (vla-get-length (vlax-ename->vla-object en)))) ; 直接获取长度
      (setq n (1+ n))
      )
      (alert (strcat "总长度:" (rtos sum 2)))
    )
)
(princ)
)

hiviki 发表于 2025-4-20 17:59:33

统一网名 发表于 2025-4-20 17:36
(defun c:tt (/ en n ss sum)
(setq ss (ssget))
(if (not ss)


感谢大佬,貌似圆、弧线,样条曲线都不能获取长度

统一网名 发表于 2025-4-20 18:58:40

hiviki 发表于 2025-4-20 17:59
感谢大佬,貌似圆、弧线,样条曲线都不能获取长度

(defun get-dxcd (ename / dxcd obj)                                                                                                                        
        (setq obj (vlax-ename->vla-object ename));对象转换为 Vla对象                       
        (setq dxcd (vlax-curve-getdistatparam obj (vlax-curve-getendparam obj)))                                                               
dxcd
)

(defun c:tt (/ en n ss sum)
(setq ss (ssget))
(if (not ss)
    (alert "未选择对象。")
    (progn
      (setq n 0 sum 0.0)
      (repeat (sslength ss)
      (setq en (ssname ss n))
      (setq sum (+ sum (get-dxcd en))) ; 直接获取长度
                                (setq n (1+ n))
                        )
                        (alert (strcat "总长度:" (rtos sum 2)))
                )
        )
        (princ)
)

hiviki 发表于 2025-4-21 17:45:14

感谢大佬,可用非常感谢
页: [1]
查看完整版本: 请教大佬下面的代码在2024里面运行有结果,但是点击确认后还有其他命令