寸法矢印の設定は、entgetで取得できるオブジェクトデータだけではちょっと難しいです。
以前談話室で教えてもらったのですが、(以下要約)
オブジェクトデータの拡張データを確認
そこに(1070 . 343)が無ければ、そのオブジェクトは両端の矢印は寸法スタイルに従っている
寸法スタイル設定から変更している場合は、(1070 . 343)(1070 . 344)が存在し、それぞれの後に続く、(1005 . 図形名)が矢印ブロック
どちらか片方だけ変更している場合でも、(1070 . 343)(1070 . 344)の両方が発生する
格納されているのは図形名なので改めてブロック名を取得する必要あり
拡張データに上記がない場合は、オブジェクトデータから寸法スタイルを確認して、その寸法スタイルテーブルを検索して寸法スタイルの中身を確認
dxfコードの342が存在したら両端共同じ矢印
342が存在せず343,344が存在するなら、矢印1が343、矢印2が344
342,343,345に格納されているのは図形名なので、(cdr (assoc 2 (entget 図形名)))で矢印のブロック名が取得できる
というわけで、
https://totthi.bbs.fc2bbs.net/?act=reply&tid=16929687#24917491
こちらの投稿で作成した、矢印の表示・非表示をちょっと変更してみました。
クリックした側の寸法線の矢印が30度開矢印の場合だけ、黒丸に変更します。
(defun C:BLKOTD () (BLKTGLSEL))
(defun BLKTGLSEL (/ obj objName objData pickPoint)
(graphscr)
(while (setq obj (entsel))
(setq objName (car obj)
objData (entget objName '("ACAD"))
pickPoint (cadr obj)
)
(if (equal "DIMENSION" (cdr (assoc 0 objData)))
(BLKOPNTODOT objName objData pickPoint)
)
)
)
(defun BLKOPNTODOT (objName objData pickPoint /
distance1 distance2 side t_blk)
(setq distance1 (distance pickPoint (cdr (assoc 10 objData)))
distance2 (/ (cdr (assoc 42 objData)) 2)
)
(setq side '("Arrowhead2Type" "Arrowhead1Type"))
(if (> distance1 distance2)
(setq side (reverse side))
)
(setq t_blk (getpropertyvalue objName (car side)))
(if (eq t_blk "_Open30")
(setpropertyvalue objName (car side) "_Dot")
)
)
「片方だけ黒丸にしたい」というのが、常に矢印1側であるとかなら、その旨返信してください。