|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Хранение определения блока в отдельном файле. Динамические изменения вхождений
C, C++, C#
С-Пб.
Регистрация: 07.10.2009
Сообщений: 2,762
|
||
Просмотров: 9365
|
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,171
|
ну, если программирование и надо, то совсем простое. в автозагрузку поставить код типа
Код:
Всевозможные проверки ошибок по вкусу ![]() При добавлении этого кода в автозагрузку обновление будет происходить каждый раз при открытии файла, куда вставлен блок |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Если вставка блока выполняется с палитры инструментов, то можно попытаться кликнуть правой кнопкой на инструменте и выбрать "Redefine". Не оно?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Если выполнить эту команду, то файле происходит переопределение блока. и новые вхождения имеют откорректированный вид. однако те вхождения блока, которые были вставлены в чертеж до выполнения "Redefine" у меня не изменили вид в соответствие с переопределённым блоком.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
_.regenall не помогает?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
пробовал конечно же - но не помогло. )))
я выделил оба варианта вхождений блока (до "Redefine" - тот что слева, и после - тот что справа). В окне свойств видим, что имя у определения блока одно и то же. Т.е. теоретически, вхождения должны были бы выглядеть одинаково (скрин в конце сообщения). Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 25.01.2010 в 11:13. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
По-моему, они одинаковые. Покажи поближе
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
кликни мышью по изображению - оно увеличится. На скрине видно, что одно вхождение имеет в своём составе окружность, а второе - нет.
однако если я выберу из контекстного меню вхождения блока "reset block" - то изображение обновится (что собственно мне и требуется) в соответствии с произведёнными изменениями. Пока, как вариант можно последовательно выполнить два действия: 1. "Redefine" из контекстного меню блока, находящегося на палитре инструментов 2. вызов команды _resetblock _all (закину её на панель инструментов). Но на самом деле вариант плохой, поскольку вхождения динамических блоков настроены каждый по своему, а reset сбросит все настройки...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 25.01.2010 в 11:42. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Точно, "слона-то я и не приметил". Хотя я специально проверил на нескольких дин.блоках из комплекта поставки AutoCAD 2010 Eng + SP1, вроде все работает корректно. Пользовательские блоки не проверял.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Т.е. у тебя обновлялись вхождения блоков после того, как вызывал "Redefine" из контекстного меню блока, находящегося на палитре инструментов с последующей регенерацией графической части?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Именно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
вопрос снят. я понял почему у меня не обновлялись вхождения...
У меня ведь в примере блоки с атрибутами. Я думал, что вызывать команду "_battman" с последующим указанием нужного блока нужно только тогда, когда в составе блока обновлены атрибуты. Оказывается нет. В моём примере блок имеет атрибуты. Изменив определение блока я добавил примитив, не затрагивая атрибуты. Однако если вызвать выше указанную команду - все вхождения обновятся, как того и требуется. Если же блок не содержит атрибутов - то такие вхождения обновляеюся сразу же после выполнения контекстного "redefine" (даже регенерация не требуется)...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 25.01.2010 в 13:24. |
||||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,171
|
Цитата:
А если в файле один блок, почему бы не вставлять его полностью? (возможно, перед этим надо wblock применить один раз) "Redefine" из контекстного меню блока, находящегося на палитре инструментов надо НЕ ЗАБЫВАТЬ нажимать. А я так понял, что синхронизировать копии блока с эталоном НАДО АВТОМАТИЧЕСКИ. Или не надо? |
|||
![]() |
|
||||
в идеале - нужно автоматически. но это значит нужно мониторить файлы на их изменение. В случае наличия изменения - синхронизировать изменения с определением блока в файле с последующим обновлением вхождений. Это можно сделать только программно (как я понимаю). Например Добавить каждой записи определения блока дополнительную информацию с именем внешнего файла и блока в его составе, который нужно проверять на наличие изменений. И запускать проверку на эти изменения при каждом открытии файла чертежа, содержащего вхождения этого блока, а при желании юзер должен иметь возможность выполнить проверку принудительно вручную.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 25.01.2010 в 15:56. |
||||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,171
|
Цитата:
Если соблюден принцип "один блок - один файл", то имя блока и есть имя внеш. файла (полный путь прописывается в настройках Акада). Этот файл не должен включать в себя нужный блок, он сам должен быть определением блока. Может, сумбурно объяснил, пример тут И тогда все получится, как я написал в посте №2 Последний раз редактировалось kp+, 25.01.2010 в 16:47. |
|||
![]() |
|
||||
Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 08.10.2009
Красноярск
Сообщений: 16
|
Цитата:
|
|||
![]() |
|
||||
Инженер Регистрация: 08.10.2009
Красноярск
Сообщений: 16
|
Цитата:
Команда: (command "_-insert" (strcat iterator ".dwg=") (command)) _-insert Имя блока или [?] <dcclpdata>: ; ошибка: неверный тип аргумента: stringp nil Имя блока или [?] <dcclpdata>: * *Неверно* вот что выдает! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
4ydik, а что в расширении файла делает знак "="?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Есть ненужные документы. Посмотрите, кому что нужно | Дмитрий832 | Поиск литературы, чертежей, моделей и прочих материалов | 73 | 18.12.2010 22:55 |