NC23.1 – ну дома только оно и установлено…
Все проверки буду делать через лисп, поскольку это тупо, просто, и достаточно быстро.
Создаю lsp файл, в котором для начала прописываю команду, которая просто выведет в ком.строку имена всех определений блоков (на тот мусор, который будет выводиться в ком.строку при загрузке lsp, пока что плевать с высокой колокольни):
1 2 3 4 5 6 7 8 9 10 11 12
| (vl-load-com)
(defun c:get-all-blocks (/ adoc def_list)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for def (vla-get-blocks adoc)
(setq def_list (cons (vla-get-name def) def_list))
)
(foreach item (vl-sort def_list (function <))
(princ (strcat "\n" item))
)
(princ)
) |
Запуск NC, загрузка lsp, вызов команды:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Команда: GET-ALL-BLOCKS
GET-ALL-BLOCKS - GET-ALL-BLOCKS
*Model_Space
*Paper_Space
*Paper_Space6
*Paper_Space7
*Paper_Space8
_ARCHTICK
_DOT
_NONE
_OPEN30
_Oblique |
Теперь дополню код парой команд: одна просто создаст анонимный блок с отрезком внутри, вторая – создаст анонимный блок с окружностью, и вставит его в пространство модели. Для начала первая, загрузка, запуск, проверка имен блоков:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| (defun c:create-unnamed-block (/ adoc def)
(vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
(setq def (vla-add
(vla-get-blocks adoc)
(vlax-3d-point '(0. 0. 0.))
"*U"
)
)
(vla-addline def
(vlax-3d-point '(0. 0. 0.))
(vlax-3d-point '(10. 10. 0))
)
(vla-endundomark adoc)
(princ)
) |
Ну и лог выполнения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Команда: CREATE-UNNAMED-BLOCK
CREATE-UNNAMED-BLOCK - CREATE-UNNAMED-BLOCK
Команда: GET-ALL-BLOCKS
GET-ALL-BLOCKS - GET-ALL-BLOCKS
*Model_Space
*Paper_Space
*Paper_Space6
*Paper_Space7
*Paper_Space8
*U13
_ARCHTICK
_DOT
_NONE
_OPEN30
_Oblique |
*U13 появился – запомню. Ну ок, теперь сохранение файла, закрытие и повторное открытие. Ну и проверка имен блоков:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| SAVE,БСОХРАНИТЬ,СОХРАНИТЬ,УРЛСОХРАНИ - Сохранить
CLOSE,ЗАКРЫТЬ,ПОКИНУТЬ - Закрыть
OPEN,ИМПОРТА,ОТКРЫТЬ,УРЛОТКРОЙ - Открыть...
Команда: GET-ALL-BLOCKS
GET-ALL-BLOCKS - GET-ALL-BLOCKS
*Model_Space
*Paper_Space
*Paper_Space6
*Paper_Space7
*Paper_Space8
_ARCHTICK
_DOT
_NONE
_OPEN30
_Oblique |
Где *U131? А нету его, снесен.
Теперь команда с созданием анонимного блока со вставкой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| (defun c:create-and-insert-unnamed-block (/ adoc def)
(vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
(setq def (vla-add
(vla-get-blocks adoc)
(vlax-3d-point '(0. 0. 0.))
"*U"
)
)
(vla-addcircle
def
(vlax-3d-point '(0. 0. 0.))
20.
)
(vla-insertblock (vla-get-modelspace adoc)
(vlax-3d-point '(0. 0. 0.))
(vla-get-name def)
1.
1.
1.
0.
)
(vla-endundomark adoc)
(princ)
) |
Ну и лог выполнения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| APPLOAD,ЗАГПРИЛ - Загрузка приложения...
C:CREATE-AND-INSERT-UNNAMED-BLOCK
Команда: GET-ALL-BLOCKS
GET-ALL-BLOCKS - GET-ALL-BLOCKS
*Model_Space
*Paper_Space
*Paper_Space6
*Paper_Space7
*Paper_Space8
_ARCHTICK
_DOT
_NONE
_OPEN30
_Oblique
Команда: CREATE-UNNAMED-BLOCK
CREATE-UNNAMED-BLOCK - CREATE-UNNAMED-BLOCK
Команда: CREATE-AND-INSERT-UNNAMED-BLOCK
CREATE-AND-INSERT-UNNAMED-BLOCK - CREATE-AND-INSERT-UNNAMED-BLOCK
Команда: GET-ALL-BLOCKS
GET-ALL-BLOCKS - GET-ALL-BLOCKS
*Model_Space
*Paper_Space
*Paper_Space6
*Paper_Space7
*Paper_Space8
*U11
*U12
_ARCHTICK
_DOT
_NONE
_OPEN30
_Oblique |
Отлично, сохраняю, закрываю, переоткрываю…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| SAVE,БСОХРАНИТЬ,СОХРАНИТЬ,УРЛСОХРАНИ - Сохранить
CLOSE,ЗАКРЫТЬ,ПОКИНУТЬ - Закрыть
OPEN,ИМПОРТА,ОТКРЫТЬ,УРЛОТКРОЙ - Открыть...
Команда: GET-ALL-BLOCKS
GET-ALL-BLOCKS - GET-ALL-BLOCKS
*Model_Space
*Paper_Space
*Paper_Space6
*Paper_Space7
*Paper_Space8
*U12
_ARCHTICK
_DOT
_NONE
_OPEN30
_Oblique |
Т.е. анонимный блок, у которого не было вхождений (*U11), помахал ручкой.
Интересно, а что будет, если поставить размер?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Команда: DIMLINEAR
DIMLINEAR,РЗМЛИНЕЙНЫЙ - Линейный
Укажите начало первой выносной линии или <выбрать объект>:
Укажите начало второй выносной линии:
Укажите местоположение размерной линии или [Мтекст/Текст/Угол/Горизонтальный/Вертикальный/Повернутый]:
Команда: GET-ALL-BLOCKS
GET-ALL-BLOCKS - GET-ALL-BLOCKS
*D13
*Model_Space
*Paper_Space
*Paper_Space6
*Paper_Space7
*Paper_Space8
*U12
_ARCHTICK
_DOT
_NONE
_OPEN30
_Oblique |
Видно, что появился *D блок. Даже если снести размер как сущность, блок никуда не девается:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Укажите противоположный угол:
E,ERASE,С,СТЕРЕТЬ - Удаление
1 найдено
Команда: GET-ALL-BLOCKS
GET-ALL-BLOCKS - GET-ALL-BLOCKS
*D13
*Model_Space
*Paper_Space
*Paper_Space6
*Paper_Space7
*Paper_Space8
*U12
_ARCHTICK
_DOT
_NONE
_OPEN30
_Oblique |
Переоткрываю файл (естественно, с сохранением):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| CLOSE,ЗАКРЫТЬ,ПОКИНУТЬ - Закрыть
OPEN,ИМПОРТА,ОТКРЫТЬ,УРЛОТКРОЙ - Открыть...
Команда: GET-ALL-BLOCKS
GET-ALL-BLOCKS - GET-ALL-BLOCKS
*Model_Space
*Paper_Space
*Paper_Space6
*Paper_Space7
*Paper_Space8
*U12
_ARCHTICK
_DOT
_NONE
_OPEN30
_Oblique |
Как видно, *D-блок был уничтожен автоматически.
Ну, с таблицами ACAD уже играться не буду )))