・ 属性 (ATTRIB) を従属図形に持つ INSERT 図形を削除する

属性 (ATTRIB) を従属図形に持つ INSERT 図形を削除したい場合、次の方法が有効です

1.ATTRIB の図形名で  (comannd "ERASE" 図形名)   >>> INSERT 図形も消えちゃいます

2.INSERT の図形名で (comannd "ERASE" 図形名)  >>> 当然 ATTRIB も消えます

3.INSERT の図形名で (entdel 図形名)    >>> ATTRIB の図形名で entdel は不可

 

また、 属性 (ATTRIB) を従属図形に持つ INSERT 図形がネストされていて、ブロック定義をしなおしてそのオブジェクトのみ削除したい場合は、INSERT 図形と 従属するすべての ATTRIB 図形を除いて再定義しないと 消えてくれません >>> めんどくさ〜 (ーー;)

 

;/////////////////////////////////////////////////////////////////////////////////////////////////;
;*** Jo_att_del.lsp   ネストされた ATTRIBをもつINSERT図形の削除     By Kamijo                     ;
;/////////////////////////////////////////////////////////////////////////////////////////////////;
(defun Jo_att_del( / ent en att Jof_ien Jos_del )
  ;***********************************************************************************************;
  ; サブルーチン ATTRIB の 主図形の図形名を取得する;
  (defun Jof_ien ( en / ed ien )
    (while en
      (setq ed (entget (setq en (entnext en))))
      (if (= "SEQEND" (cdr (assoc 0 ed)))
        (progn
          (setq ien (cdr (assoc -2 ed)))
          (setq en nil)
          )
        )
      )    
    ien
    )
  
  ;***********************************************************************************************;
  ; サブルーチン ネストされている場合(ブロック再定義) ;
  (defun Jos_del ( att ien / att_l ped ent bn ben )
    (setq att_l (list att))
    (while att
      (setq att (entnext att))
      (setq att_l (append att_l (list att)))
      (if (= "SEQEND" (cdr (assoc 0 (entget att))))
        (setq att nil)
        )
      )
    
    (setq ped (entget ien))
    (setq bn (cdr (assoc 2 ped)))
    (setq ben (tblobjname "BLOCK" bn))
    (entmake)
    (while ben
      (if (not (member ben att_l))
        (entmake (entget ben))
        )
      (setq ben (entnext ben))
      )
    (entmake '((0 . "ENDBLK")))
    (command "REGEN")
    )

  ;***********************************************************************************************;
  ; メインルーチン ;
  (while (not att)
    (setq en (car (setq ent (nentsel "\nネストされた属性文字選択"))))
    (if (= (length ent) 4)
      (if (= "ATTRIB" (cdr (assoc 0 (entget en))))
        (setq att (Jof_ien en))
        (princ "\n属性文字を選んでね")
        )
      (progn
        (if (= "ATTRIB" (cdr (assoc 0 (entget en))))
          (setq att (Jof_ien en))
          (princ "\n属性文字を選んでね")
          )
        )	  
      )
    )
  (if (= (length ent) 4)
    (Jos_del att (car (last ent)))
    (entdel att)
    )
  (princ)
  )