cslr2012 发表于 2010-5-5 19:28

统计长度的lsp

;
;==============================================================================
;功能:计算所有选择对象的总长,可是是非直线。
;==============================================================================
(defun c:n()
    (setq tleng 0)
    (setq s (ssget))
    (setq n (sslength s))
    (setq index (- n 1))
    (repeat n
      (vl-load-com)
      (setq ent (ssname s index))
      (setq index (- index 1))
      (setq curve-obj (vlax-ename->vla-object ent))
      (setq leng (vlax-curve-getDistAtParam
                     curve-obj
                     (vlax-curve-getEndParam curve-obj)
                   )
      )
      (setq tleng (+ tleng leng))
      (princ leng)
      (princ "\n")
    )
    (setq prscreemtext (strcat "\n总共计算" (itoa n) "个对象,总长度为 " (rtos tleng 2 1)))
    (princ prscreemtext)
    (princ)
)


使用方法:将代码另存为la.lsp,然后加载,使用的时候运行命令n,可统计l和pl

cslr2012 发表于 2010-5-5 19:28

快捷键是n,可统计l和pl

hjliyue 发表于 2010-5-6 10:32

我试了好几遍,都没有成功,我正需要这个东东,请楼主帮帮我,不胜感激!

fxq314159 发表于 2010-5-6 23:04

不错!真是个好东西!感谢楼主!
我是将它在LISP编辑器下另存为zc.lsp   
                              (defunc:n()改为(defunc:zc() 以区分我的另外小工具,
      列入自定义菜单,自动加载,
      效果很好,对直线、圆、圆弧、样条曲线等都能用上。

[ 本帖最后由 fxq314159 于 2010-5-6 23:06 编辑 ]

fxq314159 发表于 2010-5-6 23:18

楼主:不好意思!纠正一下您功能介绍中的一点疏忽,应是:可以是非直线。谢谢!

YOUNGXIAOWEI 发表于 2010-5-11 23:14

很好。。。。。。。。。。。。。。

zw0643 发表于 2010-5-11 23:46

新手,请问楼主的代码是不是相当于自己写的一个CAD功能程序呢
页: [1]
查看完整版本: 统计长度的lsp