|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Сопровождение проектов, внутренний технадзор Регистрация: 05.06.2012
Санкт-Петербург
Сообщений: 46
|
Здравствуйте уважаемые форумчане. Очень нужна помощь по замене одного динамического блока другим. Необходимо заменить один динамический блок отопительного прибора на другой более "легкий" и грамотно сделанный. Блоков несколько сотен в ручную совсем не вариант, а лиспом я не владею. Коды приведенные в теме в моем случае не срабатывают или совсем удаляют заменяемый объект не заменяя его нужным. Помогите пожалуйста, проект горит сдавать надо , а у меня чертежи весят по 15 метров каждый из-за "неправильных" блоков. Чертеж с блоками прикрепляю(формат AutoCad 2010).
Спасибо. |
|||
|
||||
Сопровождение проектов, внутренний технадзор Регистрация: 05.06.2012
Санкт-Петербург
Сообщений: 46
|
Попробовал. Код работает Блоки заменяются. Большое спасибо за помощь. Было бы замечательно если бы замещающий блок принимал от заменяемого атрибут поворота, а то получается, что блок меняется, но становится горизонтально( в моем случае это очень неудобно, так как некоторые приборы у меня установлены под нестандартными углами и заново их настраивать очень не хочется). Ну и в идеале было бы очень удобно если бы было можно заменять сразу несколько блоков и запуск по команде в удобное время . Буду очень признателен, если поможете реализовать эти функции.
Спасибо. |
|||
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813
|
Рад если уже легче, попозже вернусь
Единственное что удалось выжать, не уверен что будет корректно работать, поскольку нужно глубокоо влезать в геометрию Код:
Последний раз редактировалось Олег (jr.), 17.01.2013 в 22:44. Причина: добавлен код |
|||
|
||||
Сопровождение проектов, внутренний технадзор Регистрация: 05.06.2012
Санкт-Петербург
Сообщений: 46
|
|
|||
|
||||
Инженер-строитель Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,988
|
|
|||
|
||||
Сопровождение проектов, внутренний технадзор Регистрация: 05.06.2012
Санкт-Петербург
Сообщений: 46
|
Похоже как раз в точке вставки блока и проблема. После редактирования точки вставки исходного блока я обнаружил картину когда все блоки разлетелись по пространству модели причем довольно хаотично. Моя ошибка в том, что я из-за недостаточного опыта не создал точку вставки блока и теперь это создало кучу проблем.
|
|||
|
||||
Инженер-строитель Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,988
|
Уже обсуждалось тут. Для динамических блоков лиспа не знаю, есть лисп для изменения точки вставки статических блоков
|
|||
|
||||
Сопровождение проектов, внутренний технадзор Регистрация: 05.06.2012
Санкт-Петербург
Сообщений: 46
|
Цитата:
|
|||
|
||||
Как вариант решения проблемы с "разлётом" вхождений после переназначения базовой точки: Вычисли разности по осям X и Y между старым значением координат базовой точки и новым. После смены точки вставки, все вхождения перемести по осям X и Y на соответствующие дельты.
UPD В коде из #44 имеется недостаток: не учтён такой момент, что на заменяемые вхождения блоков в чертеже могут уже иметься ссылки из полей (Fields), например в таблицах... По завершению операции все такие поля превратятся в значения вида #### (поскольку автор кода создаёт новые объекты, с новыми хэндлами и идентификаторами). Это как раз такой случай, когда следует пользоваться DBObject.HandOverTo().
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 19.01.2013 в 21:05. |
||||
|
||||
Сопровождение проектов, внутренний технадзор Регистрация: 05.06.2012
Санкт-Петербург
Сообщений: 46
|
Цитата:
|
|||
|
||||
Разные определения блоков (у тебя их там несколько), имеют разные "кривые" точки вставки, поэтому смещения у вхождений будут отличаться. Кроме того, возможно, что в своём чертеже к каким-то вхождениям блоков ты применял команду _.MIRROR.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Сопровождение проектов, внутренний технадзор Регистрация: 05.06.2012
Санкт-Петербург
Сообщений: 46
|
Именно так блок который мне нужно заменить сделан очень криво. Команда _.MIRROR так же применялась.
|
|||
|
||||
Сама по себе задача по корректной замене определений блоков, как обычных, так и динамических - весьма интересная и полезная. Много нюансов, которые следует учитывать. Из того, что вижу на вскидку:
1. Одно из участвующих в замене определений блоков может быть аннотативным, в то время как другое - не аннотативным (соответственно возникнут проблемы корректного отображения в различных видовых экранах). Новые вхождения блоков, если они аннотативны как и старые, должны получать тот же список аннотативных масштабов. 2. На некоторые свойства "старых" вхождений блоков, в чертеже могут иметься ссылки в виде полей - банальная замена блоков разрушит все связи. 3. Точки вставки в обоих определениях блоков могут размещаться таким образом, что после замены определений блоков, потребуется выполнять программно некоторое смещение позиций вхождений уже имеющихся блоков (на соответствующие дельты) с учётом того, было ли отзеркалено это вхождение (проверяем направление векторов). 4. Исходные вхождения блоков могут иметь подписку (выполненную программным образом, как я показывал выше по ссылке) на различные события - это тоже следует учитывать и корректно "разруливать". Одни юзеры с этим пунктом могут не сталкиваться, в то время как у других может иметься софт, который активно использует эту возможность - поэтому данный момент так же стоит учитывать. 5. Следует учитывать коэффициенты масштабирования "старых" вхождений блоков. 6. Следует учитывать то, на каких слоях размещаются "старые" вхождения блоков 7. Следует учитывать углы поворота "старых" вхождений блоков 8. Следует учитывать текущие параметры видимости "старых" вхождений блоков. 9. Следует учитывать, что в "старых" вхождениях ранее были назначены некоторые значения различных параметров, выбранных либо из списка, либо полученных за счёт манипуляции с "ручками". 10. Возможно в новом определении блока имена параметров, обозначенных в п.8 и п.9 будут иными. Т.о. нужно предоставить юзеру возможность указать соответствия имён. Учитывая все перечисленные выше пункты, GUI для взаимодействия с пользователем должен быть очень гибким.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
|||||||
Сопровождение проектов, внутренний технадзор Регистрация: 05.06.2012
Санкт-Петербург
Сообщений: 46
|
Сразу чувствуется подход профессионала.
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
И после всего вами вышесказанного мне, как человеку не разбирающемуся в программировании на лисп, данная задача кажется очень сложной и трудоемкой. |
||||||
|
||||
Так оно и есть, причём в ходе её решения наверняка вылезут и др. подводные камни, которые я упустил в перечисленном выше списке. В приципе задача решаема, но под это дело нужно выделить достаточно времени и сил. Поставлю себе в планах "зарубку" на её решение - моим пользователям может пригодиться. Если что - на результат дам ссылку. Предупреждаю сразу - это будет не AutoLISP\Visual LISP, а .NET. Т.е. для каждой версии AutoCAD будет своя, отдельная версия библиотеки. Я не компилирую код для AutoCAD, версий ниже чем 2009-й (нет необходимости/желания/возможности).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
подсчет динамических блоков | AAI | Программирование | 37 | 25.06.2012 15:05 |
Тормозит команда расчленения набора блоков | batmax | Программирование | 4 | 31.08.2010 17:37 |
Замена названий блоков, типов линий | АлексЮстасу | Программирование | 9 | 04.06.2010 21:51 |
Замена текстовых блоков | Sputnik-e | AutoCAD | 2 | 11.09.2009 09:22 |
Библиотека динамических блоков | Коробейников Алексей | Динамические блоки | 2 | 05.04.2005 16:08 |