・ 図形オブジェクトの押出し方向を反転
図形オブジェクトの押出し方向は、エンティティーデータのグループコード210で取得できます。
しかし、このデータ各要素を-1倍して、(entmod) すると、OCSとWCSが異なる場合、押出し方向は反転するが、他の定義点の位置も変わってしまうのです。各定義点もそれぞれ変換して
(entmod) すればよいのですが、めんどくさい (ーー;)
そこで、VLISP の (vla-TransformBy)
でマトリックス変換してみました。
通常 (vla-TransformBy)
では異尺度のマトリックスは受け入れないのですが、絶対値が同じならいいらしい。
(defun Jo_obj_rev ( / n ss en mat v_obj );VLISP用;
(vl-load-com)
(setq mat(vlax-tmatrix '((1 0 0 0)
(0 1 0 0)
(0 0 -1 0)
(0 0 0 1))))
(setq n 0)
(princ "\n押出し方向を反転する図形オブジェクトを選択")
(if (setq ss (ssget))
(while (setq en (ssname ss n))
(setq v_obj (vlax-ename->vla-object en))
(vla-TransformBy v_obj mat)
(vla-Update v_obj)
(setq n (1+ n))
)
)
(princ (strcat "\n" (itoa n) "個のオブジェクトを処理しました"))
(setq ss nil)
(princ)
)