・ 名前のないブロックについて

名前のないブロックとは、AutoCAD自身が作ったブロックで、実際には名前が有ります
「 *Dnnn , *Xnnn , *Unnn 」というのが名前です (nnn は AutoCAD によって生成される数字です)
「 *Dnnn  」 は寸法オブジェクト、「 *Xnnn  」 はハッチングです
「 *Unnn  」 というのが、一般的にいう 名前のないブロックにつけられた名前です
名前のないブロックの名前は一定ではありません
参照された名前のないブロックは永続的に存在しますが、その名前の数字部分は、作図セッションによって変わる可能性があります
名前のないブロックの内、参照されないものは、図面を開いたときに BLOCK 定義テーブルから取り除かれます
また、名前のないブロックは、Insert コマンドで挿入したり、Refedit コマンドで編集したりはできません
(私の作ったツール Jo_bname_ch.lsp でも名前変更できません)
しかし、(entmod) (entmake) 等で編集は可能です

名前のないブロックを作るには、図形タイプ BLOCK オブジェクトに エンティティデータ (70 .1) (2 . "*U") を指定します

;/////////////////////////////////////////////////////////////////////////////////////////////////;
;*** Jo_make_unnamed_blk.lsp   ;名前のないブロックを作る;     By Kamijo   
;/////////////////////////////////////////////////////////////////////////////////////////////////;

(defun Jo_make_unnamed_blk ()
  (entmake)
  (entmake '((0 . "BLOCK")(8 . "0")(70 . 1)(2 . "*U")(10 0 0 0)))    
  (entmake '((0 . "LINE")(8 . "0")(10 0 0 0)(11 10 0 0)(8 . "0")))
  (setq bn (entmake '((0 . "ENDBLK"))));ブロック名 *Unnn が返る
  (entmake (list '(0 . "INSERT") '(8 . "0") '(10 0 0 0) (cons 2 bn)) )
  )
;/////////////////////////////////////////////////////////////////////////////////////////////////;
;*** Jo_naming_unnamed_blk.lsp  ;名前のないブロックに名前をつける;    By Kamijo   
;/////////////////////////////////////////////////////////////////////////////////////////////////;

(defun Jo_naming_unnamed_blk ()
  (setq en (car (entsel)))
  (setq ed (entget en))
  (if (= "INSERT" (cdr (assoc 0 ed)))
    (setq bn (cdr (assoc 2 ed)))
    (exit)
    )
  (setq new_bn (getstring (strcat "\n選択したブロック名:" bn " / 新しいブロック名:")))
  (if (tblsearch "BLOCK" new_bn)
    (progn
      (initget "Y N")
      (setq c_f (getkword (strcat "\n" new_bn "は定義済 再定義しますか: Y or <N>")))
      )
    (setq c_f "Y")
    )  
  (if (= c_f "Y")
    (progn
      (setq ben (tblobjname "BLOCK" bn))
      (setq bed (entget ben))
      (setq bed (subst (cons 70 (1- (cdr (assoc 70 bed)))) (assoc 70 bed ) bed))
      (setq bed (subst (cons 2 new_bn) (assoc 2 bed) bed))
      (entmake)
      (entmake bed)
      (while (setq ben (entnext ben))
	(entmake (entget ben))
	)
      (entmake '((0 . "ENDBLK")))
      (setq ed (subst (cons 70 (1- (cdr (assoc 70 ed)))) (assoc 70 ed ) ed))
      (setq ed (subst (cons 2 new_bn) (assoc 2 ed) ed))
      (entmod ed)
      )
    )
  )