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