Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Atomohod от 26-12-2019, 23:39:52
-
Здравствуйте!
Столкнулся с проблемой: есть динамический блок со списком предустановленных значений и возможностью задания произвольного значения для того же свойства, при этом Lookup переключается в значение Custom. При вставке в другой чертеж где уже есть такие блоки, значение установленное в свойстве блока не сохраняется и сбрасывается до произвольного из предустановленного списка выбора.
Как можно исправить такое поведение? Я пока не догадался.
(https://i.postimg.cc/vcQPQ7B0/2019-12-26-233436.jpg) (https://postimg.cc/vcQPQ7B0)
-
Вопрос задан в правильном разделе форума?
-
Вопрос задан в правильном разделе форума?
Нужна идея для кода - таких блоков много и править руками очень трудоемко, кроме того сбрасываемые значения разные-как их потом контролировать.
-
Как вставляются блоки в чертеж? Вручную и программно?
-
Как вставляются блоки в чертеж? Вручную и программно?
Руками - либо ctrl+c либо, через copy в самом Автокаде
-
Atomohod,
Тогда я не понимаю каким образом сбиваются значение Lookup. При таком копировании внутри одного чертежа проблем в принципе быть не должно, а при копировании из другого чертежа проблема может возникнуть если с одним именем имеются не 100% идентичные блоки.
-
Тогда я не понимаю каким образом сбиваются значение Lookup.
Они не совсем сбиваются - допустим в блоке есть предустановленный набор ширин 500,600,700 и не заблокирована возможность ввода в поле произвольного значения ширины. Пользователь его пишет вручную, например 750 - в его чертеже все нормально. Потом этот блок приходит в сводный чертеж где уже есть точно такие блоки и вот тут его значение сбрасывется на какое-то из предустановленных в Loookup'e. То есть значение не из LookUp вообще исчезает. Вот в чем проблема.
-
Atomohod,
Давай пример двух таких чертежей. Оставь в них по одной-две вставки таких блоков. Я на досуге посмотрю.
-
Файл
-
Atomohod,
Я посмотрел чертежи - если есть одноимённые блоки, то именно так оно и работает. Так что тебе перед вставкой следует переименовывать блоки в сводном чертеже. Или пользоваться внешними ссылками, что правильнее.
Альтернативный вариант - програмно менять параметры динамического блока.
-
Я посмотрел чертежи - если есть одноимённые блоки, то именно так оно и работает
Можно подробнее-в чем причина такого поведения? Может нужно как-то по хитрому создавать блоки?
-
Можно подробнее-в чем причина такого поведения? Может нужно как-то по хитрому создавать блоки?
Тут я не подскажу. Что мне сразу не понравилось - это то, что чертежи сохранены в формате AutoCAD 2004. Динамические блоки в AutoCAD появились только в версии 2006 (формат dwg-файла как у AutoCAD 2004). Вполне возможно, что причина в этом.
-
сохранены в формате AutoCAD 2004
Конвертировал в 2007 - не помогло. Такой формат стандарт предприятия - тут я бессилен. Можете подсказать где можно почитать чем один формат лучше другого по версиям Автокад? Может попытаюсь объяснить начальству. Пока я не знаю какой лучше.
-
Альтернативный вариант - програмно менять параметры динамического блока.
А в какой момент-перед вставкой блока? Но пользователь вставляет его руками когда захочет. В чем суть подхода, что нужно сменить?
-
Можете подсказать где можно почитать чем один формат лучше другого по версиям Автокад?
Работать нужно с той версией dwg-файла, в которой по-умолчанию сохраняет установленная версия AutoCAD. Если версии AutoCAD разные, то нужно выбирать формат сохранения младшей. Если вы действительно до сих пор используете AutoCAD 2004...2006, то это единственная причина по которой следует сохранять в формате dwg-2004. Но тут я вам не помогу.
Из спортивного интереса я создал пустой файл и скопировал в него по очереди блоки с Lookup = Custom. Всё скопировалось нормально с сохранением Distance:
Проверял в AutoCAD 2020 со всеми обновлениями - в более ранних проверять нет смысла, т.к. если и был когда-то баг, то он уже исправлен.
Такое чувство, что начинка (не примитивы, а динамическая часть) у блоков Passage в твоих двух файлах разная.
-
Но пользователь вставляет его руками когда захочет. В чем суть подхода, что нужно сменить?
Или пользователя или метод вставки.
-
Если вы действительно до сих пор используете AutoCAD 2004...2006,
большая часть конторы -нет. Разброс версий от 2009 до 2015, но есть староверы из пенсионеров, упорно не желающие слезать со своих 2006-типа а мне и тут все рисует. Из-за них приходится работать в старье. И все же где то же должны быть описаны различия между версиями форматов. Как-то автодеск должен обосновать переход на новый формат (меньше места занимает, стабильнее работает и т.п.)? Вот что интересно.
-
И все же где то же должны быть описаны различия между версиями форматов.
Нет.
Как-то автодеск должен обосновать переход на новый формат (меньше места занимает, стабильнее работает и т.п.)?
Нет. Формат закрытый и Autodesk периодически его меняет. Он ничего не обязан обосновывать.
-
периодически его меняет. Он ничего не обязан обосновывать.
Я немного не про это - они разрабы и меняют его по своему усмотрению- это понятно, но причины для такого на Ваш взгляд в чем? Они же не просто так переписывают уже рабочий формат, чтобы вылавливать новые баги и прочее?
-
но причины для такого на Ваш взгляд в чем?
У меня есть очень обоснованное предположение, но я не буду его озвучивать. Отчасти это связано с необходимостью поддерживать новые возможности новых версий AutoCAD, но мне кажется, что не это самое главное.
-
Atomohod,
Из спортивного интереса выполнил сброс блоков в исходном чертеже, а затем установил те динамические параметры, которые у них были до сброса. Что интересно - блок при этом сдвинулся. После это блоки прекрасно копируются в сводный чертеж с сохранением своих параметров. В этот раз поверь на слово - видео записывать не буду.