;;; 変数ネーミング規則 ;;; LIST:& STRING:$ NUM:# ;;; PointLIST:% ;2001.05.16 by ash ;2001.05.30 by ash ;2001.06.05 by ash ; (defun C:Lth ( / &ss ;選択セット #snum ;選択したオブジェクト数 #Xnum ;長さがカウントされないオブジェクト数 i ;カウンタ &elist ;エンティティ $ename ;図形名 $etype ;図形タイプ &p1 ;始点 &p2 ;終点 #LnLth ;LINE長さ #Lnalth ;LINE長さ合計 &cen ;中心点 &r ;半径 &sang ;開始角度 &eang ;終了角度 &ang ;円弧角度 #Alth ;ARC長さ #Aalth ;ARC長さ合計 #Clth ;CIRCLE長さ #Calth ;CIRCLE長さ #PLlth ;*PLINE #PLalth ;*PLINE ) (initget 15) (setq &ss (ssget)) (setq #snum (sslength &ss)) (setq i 0) (setq #Lnalth 0) (setq #Aalth 0) (setq #Calth 0) (setq #PLalth 0) (setq #Xnum 0) (while (< i #snum) (setq &elist (entget (ssname &ss i))) (setq $ename (cdr (assoc -1 &elist))) (setq $etype (cdr (assoc 0 &elist))) (cond ((= $etype "LINE") (setq &p1 (cdr (assoc 10 &elist))) (setq &p2 (cdr (assoc 11 &elist))) (setq #LnLth (distance &p1 &p2)) (setq #Lnalth (+ #Lnalth #Lnlth)) );LINE ((= $etype "ARC") (setq &cen (cdr (assoc 10 &elist))) (setq &r (cdr (assoc 40 &elist))) (setq &sang (cdr (assoc 50 &elist))) (setq &eang (cdr (assoc 51 &elist))) (if (> &eang &sang) ;円弧の角度を求める (setq &ang (- &eang &sang)) (setq &ang (+ (- (* 2 pi) &sang) &eang)) );if (setq #Alth (* 2 &r pi (/ &ang (* 2 pi)))) (setq #Aalth (+ #Aalth #Alth)) );ARC ((= $etype "CIRCLE") (setq &cen (cdr (assoc 10 &elist))) (setq &r (cdr (assoc 40 &elist))) (setq #Clth (* 2 &r pi)) (setq #Calth (+ #Calth #Clth)) );CIRCLE ((= $etype "LWPOLYLINE") (command ".area" "o" $ename) (setq #PLlth (getvar "PERIMETER")) (setq #PLalth (+ #PLalth #PLlth)) );PLINE (T ; (princ "\n選択した図形は") ; (prin1 $etype) ; (princ "です\n長さ合計に加算できません") (redraw $ename 3) (setq #Xnum (+ #Xnum 1)) );T );cond (setq i (+ i 1)) );while (setq #ALL (+ #Lnalth #Aalth #Calth #Plalth)) (princ (strcat "\nLINEの長さ合計は" (rtos #Lnalth) "です")) (princ (strcat "\nARCの長さ合計は" (rtos #Aalth) "です")) (princ (strcat "\nCIRCLEの長さ合計は" (rtos #Calth) "です")) (princ (strcat "\nPLINEの長さ合計は" (rtos #PLalth) "です")) (princ (strcat "\nLINE・ARC・CIRCLE・PLINEの長さ総計は" (rtos #ALL) "です")) (princ (strcat "\n長さ総計に含まれない図形が" (rtos #Xnum) "個あります−ハイライト表示")) (princ) );defun