・ 名前のないブロックについて
名前のないブロックとは、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)
)
)
)