Q1:平均長を求める/AvgLen
■autocadをマクロで実行させるコマンドです
マクロは、メニュー>管理>ユーザーインターフェース(コマンド:CUI)を入力
^C^C(load "avglen.lsp") (c:AvgLen)
■平均長を求める(AvgLen)
(defun c:AvgLen ( / ss i ent vlaObj len total count avg min max)
(vl-load-com)
(setq ss (ssget '((0 . "LINE,LWPOLYLINE,POLYLINE")))) ; 対象オブジェクト選択
(if ss
(progn
(setq total 0.0
count 0
i 0
min nil
max nil)
(repeat (sslength ss)
(setq ent (ssname ss i))
(setq vlaObj (vlax-ename->vla-object ent))
(if (vlax-property-available-p vlaObj 'Length)
(progn
(setq len (vlax-get vlaObj 'Length))
(setq total (+ total len))
(setq count (1+ count))
(if (or (not min) (< len min)) (setq min len))
(if (or (not max) (> len max)) (setq max len))
)
)
(setq i (1+ i))
)
(if (> count 0)
(progn
(setq avg (/ total count))
(prompt
(strcat
"\n平均長=" (rtos avg 2 0)
"、最小長=" (rtos min 2 0)
"、最大長=" (rtos max 2 0)
"、本数=" (itoa count)
)
)
)
(prompt "\n長さを取得できるオブジェクトがありません。")
)
)
(prompt "\nオブジェクトが選択されていません。")
)
(princ)
)
直接実行する場合
上記コードを avglen.lsp に保存←保存箇所は以下※1)
AutoCADで APPLOAD → avglen.lsp を読み込む
コマンドラインに:
AvgLen
として実行
※1)
C:\Users\user\AppData\Roaming\Autodesk\AutoCAD 2024\R24.3\jpn\Support

