・ 寸法オブジェクトまたはその構成要素を entmake で複製する場合の注意点

寸法オブジェクトは、さまざまなシステム変数や xdata 等によって制御されていて、普段使ってない機能がいっぱいあるので、検証が難しいオブジェクトです。

寸法オブジェクトを entmake で複製する

寸法オブジェクトは内部的にブロック図形として扱われており、その構成要素とエンティティデータのdxf330を通して相互に関連づけされています。
ですから、(setq ed (entget (car (entsel)))) で寸法オブジェクトを選択して取得したエンティティデータをそのまま (entmake ed) として複製してしまうと、その関連づけまで複製されます。
結果として、寸法オブジェクトは2つあるのに、その構成要素は1つづつしかないといった不具合が発生します。(entmake ed) の直後は正常に複製されたように表示されますが、再作図(regen)してみると寸法オブジェクトは1つしかなくなってしまいます。正確には、定義点のみのお化けのような寸法オブジェクトがひとつ出来てしまいます。
これを避けるには、関連づけを解除してやる必要があります。
寸法オブジェクトのエンティティーデータの dxf330 dxf2 を削除して(entmake)すれば大丈夫みたいです。

ブロックにネストされた寸法オブジェクトを複製する際には問題ないようですが、気持ち悪いので一応削除したほうが良いかと思います。

さらにAutoCAD2002から、さらに自動調整寸法なるものが追加されました。
システム変数DIMASSOCを2にすると作成される、図形オブジェクトと関連づけされて、図形が変形すると寸法が伸び縮みするあれです。
(σ(^^)は使ってないのですが・・・・)
これは、寸法オブジェクトのエンティティーデータの dxf360 で関連付けの情報を保持しているらしい。

(102 "{ACAD_XDICTIONARY") (360 . <図形名: 40218e50>) (102 . "}")

そしてそのデータの前後には dxf102 も存在する。
これを、削除せずに複製すると、保存する段になって警告をうけてしまう。

*警告* 所有されたオブジェクトを増加, ハンドル "139A"

警告だけで、図形オブジェクトとして問題はないようだが、保存するたび警告されるのは気持ち悪い。
しかも図面の修復などしても警告は続く・・・・(~_~;)
これも、寸法オブジェクトのエンティティーデータの dxf360 dxf102 を削除して(entmake)すれば大丈夫みたいです。

結論
寸法オブジェクトを entmake で複製するには、エンティティーデータから、dxf2 dxf330 dxf102 dxf360 を削除しましょう。

寸法の構成要素を entmake で複製する

同様に、寸法オブジェクトの構成要素(寸法線や、寸法の文字)を複製する際にも、構成要素のエンティティーデータから、dxf330を削除してから entmake しないとお化けオブジェクトが出来上がってしまうので注意してください。

また、寸法がさらに、ブロック図形にネストされている場合は、寸法の構成要素をそのまま複製しても、外観上問題なく見えるのですが、複製直後には、構成要素を (nentsel) 等で正常に取得できないなどの障害が起きることがあるようです。