| 
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册 
     (defun C:GetLength ( / CurEnt CurLgt CurObj CurSet FltLst ObjCnt TmpLgt)
 (if (< (atof (getvar "ACADVER")) 15.0)
  (alert "GetLength requires AutoCAD 2000 or higher. ")
  (progn
   (vl-load-com)
   (setq FltLst '(
                  (0 . "ARC,CIRCLE,ELLIPSE,LINE,LWPOLYLINE,POLYLINE,SPLINE")
                  (-4 . "<NOT")
                   (-4 . "<OR")
                    (-4 . "&=") (70 . 16)  ;3DMesh
                    (-4 . "&=") (70 . 64)  ;PolyFace
                   (-4 . "OR>")
                  (-4 . "NOT>")
                 )
         CurLgt 0.0
   )
   (if (setq CurSet (cond ((ssget "I" FltLst)) ((ssget FltLst))))
    (progn
     (setq ObjCnt (sslength CurSet))
     (while (setq CurEnt (ssname CurSet 0))
      (setq CurObj (vlax-ename->vla-object CurEnt)
            TmpLgt (vlax-curve-getDistAtParam CurObj
                    (vlax-curve-getEndParam CurObj)
                   )
            CurLgt (+ CurLgt TmpLgt)
      )
      (ssdel CurEnt CurSet)
     )
     (alert
      (strcat
       "Total length of "
       (itoa ObjCnt) " object(s): "
       (rtos CurLgt) " units. "
      )
     )
    )
   )
  )
 )
 (princ)
)
 
 |