|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Хранение определения блока в отдельном файле. Динамические изменения вхождений
C, C++, C#
С-Пб.
Регистрация: 07.10.2009
Сообщений: 2,762
|
||
Просмотров: 9375
|
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,174
|
ну, если программирование и надо, то совсем простое. в автозагрузку поставить код типа
Код:
Всевозможные проверки ошибок по вкусу ![]() При добавлении этого кода в автозагрузку обновление будет происходить каждый раз при открытии файла, куда вставлен блок |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408
|
Если вставка блока выполняется с палитры инструментов, то можно попытаться кликнуть правой кнопкой на инструменте и выбрать "Redefine". Не оно?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Если выполнить эту команду, то файле происходит переопределение блока. и новые вхождения имеют откорректированный вид. однако те вхождения блока, которые были вставлены в чертеж до выполнения "Redefine" у меня не изменили вид в соответствие с переопределённым блоком.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408
|
_.regenall не помогает?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
пробовал конечно же - но не помогло. )))
я выделил оба варианта вхождений блока (до "Redefine" - тот что слева, и после - тот что справа). В окне свойств видим, что имя у определения блока одно и то же. Т.е. теоретически, вхождения должны были бы выглядеть одинаково (скрин в конце сообщения). Цитата:
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 25.01.2010 в 11:13. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408
|
По-моему, они одинаковые. Покажи поближе
__________________
Моя библиотека 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,408
|
Точно, "слона-то я и не приметил". Хотя я специально проверил на нескольких дин.блоках из комплекта поставки AutoCAD 2010 Eng + SP1, вроде все работает корректно. Пользовательские блоки не проверял.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Т.е. у тебя обновлялись вхождения блоков после того, как вызывал "Redefine" из контекстного меню блока, находящегося на палитре инструментов с последующей регенерацией графической части?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408
|
Именно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
вопрос снят. я понял почему у меня не обновлялись вхождения...
У меня ведь в примере блоки с атрибутами. Я думал, что вызывать команду "_battman" с последующим указанием нужного блока нужно только тогда, когда в составе блока обновлены атрибуты. Оказывается нет. В моём примере блок имеет атрибуты. Изменив определение блока я добавил примитив, не затрагивая атрибуты. Однако если вызвать выше указанную команду - все вхождения обновятся, как того и требуется. Если же блок не содержит атрибутов - то такие вхождения обновляеюся сразу же после выполнения контекстного "redefine" (даже регенерация не требуется)...
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 25.01.2010 в 13:24. |
||||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,174
|
Цитата:
А если в файле один блок, почему бы не вставлять его полностью? (возможно, перед этим надо wblock применить один раз) "Redefine" из контекстного меню блока, находящегося на палитре инструментов надо НЕ ЗАБЫВАТЬ нажимать. А я так понял, что синхронизировать копии блока с эталоном НАДО АВТОМАТИЧЕСКИ. Или не надо? |
|||
![]() |
|
||||
в идеале - нужно автоматически. но это значит нужно мониторить файлы на их изменение. В случае наличия изменения - синхронизировать изменения с определением блока в файле с последующим обновлением вхождений. Это можно сделать только программно (как я понимаю). Например Добавить каждой записи определения блока дополнительную информацию с именем внешнего файла и блока в его составе, который нужно проверять на наличие изменений. И запускать проверку на эти изменения при каждом открытии файла чертежа, содержащего вхождения этого блока, а при желании юзер должен иметь возможность выполнить проверку принудительно вручную.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 25.01.2010 в 15:56. |
||||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,174
|
Цитата:
Если соблюден принцип "один блок - один файл", то имя блока и есть имя внеш. файла (полный путь прописывается в настройках Акада). Этот файл не должен включать в себя нужный блок, он сам должен быть определением блока. Может, сумбурно объяснил, пример тут И тогда все получится, как я написал в посте №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,408
|
4ydik, а что в расширении файла делает знак "="?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер Регистрация: 08.10.2009
Красноярск
Сообщений: 16
|
|
|||
![]() |
|
||||
Насчёт "гуру" не знаю. Если будет время - может сегодня напишу решение. Весь нужный код собственно уже имеется, нужно только протестировать его как следует и написать графическую оболочку, дабы юзеру было удобно пользоваться этим (через диалоговое окно).
Принцип работы такой: 1. В графическом режиме юзер указывает чертёж с определением блоков и выставляет галочки напротив определений, подлежащих импорту/синхронизации. 2. Юзер указывает какие именно чертежи следует обрабатывать: 2.1. Все чертежи в подшивке (тогда он указывает файл подшивки, которую нужно анализировать). 2.2. Конкретные файлы чертежей (ставит галочки напротив них). 2.3. Все файлы определённых каталогов, с указанием того, следует ли выполнять рекурсивную проверку (т.е. следует ли обрабатывать и все чертежи во вложенных подкаталогах). Во всех целевых файлах произойдёт синхронизация определений блоков с одноимённым определением из указанного исходного файла, а так же будет выполнена синхронизация всех вхождений блоков с их определениями. Offtop: п.с. Код буду компилировать под AutoCAD 2009. Компилировать под др. версии пока нет ни возможности, ни времени, ни желания.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Инженер Регистрация: 08.10.2009
Красноярск
Сообщений: 16
|
На сегодняшний день появился такой вопрос: Как с помощью lisp добавить значение в Сервис >> Настройка>> Переходим на закладку Файлы и раскрываем список Путь доступа к вспомогательным файлам. Путь к определенной папке где лежат файлы с динамическими блоками?
|
|||
![]() |
|
||||
Счастливые обладатели AutoCAD 2009 SP3 x86 могут взять на тестирование обозначенную мною выше софтину здесь. Те, у кого AutoCAD др. версий - дружно курят бамбук до тех пор, пока какой-нибудь альтруист не перекомпилирует исходники (выложенные мною там же) под нужную версию AutoCAD. У меня сейчас установлен только AutoCAD 2009, потому и компилировал только под него.
Для работы плагина на компьютере должны быть установлены: - AutoCAD 2009 SP3 x86 (под x64 не тестировал) - .Net Framework 3.5 SP1 Как запускать плагин - написано в файле ReadMe.txt. Как установить нужную локализацию - написано в комментариях файла PluginSettings.xml (по умолчанию устанавливается та, которую указывает AutoCAD).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Есть ненужные документы. Посмотрите, кому что нужно | Дмитрий832 | Поиск литературы, чертежей, моделей и прочих материалов | 73 | 18.12.2010 22:55 |