概要 - 図形データ関数とグラフィックス スクリーン(AutoLISP)

図形データ関数を使用して行った図面への変更は、削除、削除解除、変更、作成などの対象となった図形が、現在表示されている領域内および画層上にある限り、グラフィックス スクリーンに反映されます。

これには、1 つ例外があります。entmod が従属図形を変更した場合、entmod はその(複合化)図形全体のイメージを更新しません。たとえば、アプリケーションが entmod を 100 回呼び出して旧形式のポリラインの 100 個の頂点を変更する場合、そのポリライン全体を再計算、再表示するには非常に長い時間がかかります。このように時間のかかる処理を行うより、アプリケーションが従属図形に一連の変更を加えた後で、entupd 関数を 1 回呼び出して図形全体を再表示するほうが効率的です。

次の場合を考えてみます。現在の図面における最初の図形が複数の頂点を持つ旧形式のポリラインである場合、次のコードはポリラインの 2 番目の頂点を変更し、その表示を再作図します。

(setq e1 (entnext))    ; Sets e1 to the polyline's entity name.
(setq v1 (entnext e1)) ; Sets v1 to its first vertex.
(setq v2 (entnext v1)) ; Sets v2 to its second vertex.
(setq v2d (entget v2)) ; Sets v2d to the vertex data.
(setq v2d
  (subst
    '(10 1.0 2.0 0.0)
    (assoc 10 v2d)     ; Changes the vertex's location in v2d
    v2d                ; to point (1,2,0).
  )
)
(entmod v2d)           ; Moves the vertex in the drawing.
(entupd e1)            ; Regenerates the polyline entity e1.

entupd の引数には、主図形または従属図形を指定できます。どちらの場合も、entupd は図形全体を再作図します。この関数は主に複合化図形に使用しますが、entupd は現在の図面内のどの図形でも再作図できます。

注: ブロック参照のすべてのインスタンスが確実に更新されるようにするには、command を使用して AutoCAD の REGEN[再作図]コマンドを呼び出すことにより図面を再作図する必要があります。変更された図形がブロック定義の場合は、entupd 関数を呼び出すだけでは不十分です。