Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Atomohod от 26-12-2019, 23:39:52

Название: Как исправить сброс значения в свойстве динамического блока
Отправлено: Atomohod от 26-12-2019, 23:39:52
Здравствуйте!

Столкнулся с проблемой: есть динамический блок со списком предустановленных значений и возможностью задания произвольного значения для того же свойства, при этом Lookup переключается в значение Custom. При вставке в другой чертеж где уже есть такие блоки, значение установленное в свойстве блока не сохраняется и сбрасывается до произвольного из предустановленного списка выбора.
Как можно исправить такое поведение? Я пока не догадался.
(https://i.postimg.cc/vcQPQ7B0/2019-12-26-233436.jpg) (https://postimg.cc/vcQPQ7B0)
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 26-12-2019, 23:48:24
Вопрос задан в правильном разделе форума?
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Atomohod от 27-12-2019, 00:19:46
Вопрос задан в правильном разделе форума?
Нужна идея для кода - таких блоков много и править руками очень трудоемко, кроме того сбрасываемые значения разные-как их потом контролировать.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 27-12-2019, 10:03:27
Как вставляются блоки в чертеж? Вручную и программно?
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Atomohod от 27-12-2019, 19:19:12
Как вставляются блоки в чертеж? Вручную и программно?
Руками - либо ctrl+c либо, через copy в самом Автокаде
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 27-12-2019, 21:10:00
Atomohod,
Тогда я не понимаю каким образом сбиваются значение Lookup. При таком копировании внутри одного чертежа проблем в принципе быть не должно, а при копировании из другого чертежа проблема может возникнуть если с одним именем имеются не 100% идентичные блоки.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Atomohod от 27-12-2019, 22:18:56
Тогда я не понимаю каким образом сбиваются значение Lookup.
Они не совсем сбиваются - допустим в блоке есть предустановленный набор ширин 500,600,700 и не заблокирована возможность ввода в поле произвольного значения ширины. Пользователь его пишет вручную, например 750 - в его чертеже все нормально. Потом этот блок приходит в сводный чертеж где уже есть точно такие блоки и вот тут его значение сбрасывется на какое-то из предустановленных в Loookup'e. То есть значение не из LookUp вообще исчезает. Вот в чем проблема.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 27-12-2019, 22:21:00
Atomohod,
Давай пример двух таких чертежей. Оставь в них по одной-две вставки таких блоков. Я на досуге посмотрю.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Atomohod от 27-12-2019, 22:59:45
Файл
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 27-12-2019, 23:16:37
Atomohod,
Я посмотрел чертежи - если есть одноимённые блоки, то именно так оно и работает. Так что тебе перед вставкой следует переименовывать блоки в сводном чертеже. Или пользоваться внешними ссылками, что правильнее.
Альтернативный вариант - програмно менять параметры динамического блока.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Atomohod от 27-12-2019, 23:27:16
Я посмотрел чертежи - если есть одноимённые блоки, то именно так оно и работает
Можно подробнее-в чем причина такого поведения? Может нужно как-то по хитрому создавать блоки?
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 27-12-2019, 23:31:02
Можно подробнее-в чем причина такого поведения? Может нужно как-то по хитрому создавать блоки?
Тут я не подскажу. Что мне сразу не понравилось - это то, что чертежи сохранены в формате AutoCAD 2004. Динамические блоки в AutoCAD появились только в версии 2006 (формат dwg-файла как у AutoCAD 2004). Вполне возможно, что причина в этом.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Atomohod от 27-12-2019, 23:43:44
сохранены в формате AutoCAD 2004
Конвертировал в 2007 - не помогло. Такой формат стандарт предприятия - тут я бессилен. Можете подсказать где можно почитать чем один формат лучше другого по версиям Автокад? Может попытаюсь объяснить начальству. Пока я не знаю какой лучше.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Atomohod от 27-12-2019, 23:45:09
Альтернативный вариант - програмно менять параметры динамического блока.
А в какой момент-перед вставкой блока? Но пользователь вставляет его руками когда захочет. В чем суть подхода, что нужно сменить?
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 27-12-2019, 23:57:44
Можете подсказать где можно почитать чем один формат лучше другого по версиям Автокад?
Работать нужно с той версией dwg-файла, в которой по-умолчанию сохраняет установленная версия AutoCAD. Если версии AutoCAD разные, то нужно выбирать формат сохранения младшей. Если вы действительно до сих пор используете AutoCAD 2004...2006, то это единственная причина по которой следует сохранять в формате dwg-2004. Но тут я вам не помогу.

Из спортивного интереса я создал пустой файл и скопировал в него по очереди блоки с Lookup = Custom. Всё скопировалось нормально с сохранением Distance:



Проверял в AutoCAD 2020 со всеми обновлениями - в более ранних проверять нет смысла, т.к. если и был когда-то баг, то он уже исправлен.
Такое чувство, что начинка (не примитивы, а динамическая часть) у блоков Passage в твоих двух файлах разная.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 27-12-2019, 23:58:46
Но пользователь вставляет его руками когда захочет. В чем суть подхода, что нужно сменить?
Или пользователя или метод вставки.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Atomohod от 28-12-2019, 00:14:06
Если вы действительно до сих пор используете AutoCAD 2004...2006,
большая часть конторы -нет. Разброс версий от 2009 до 2015, но есть староверы из пенсионеров, упорно не желающие слезать со своих 2006-типа а мне и тут все рисует. Из-за них приходится работать в старье. И все же где то же должны быть описаны различия между версиями форматов. Как-то автодеск должен обосновать переход на новый формат (меньше места занимает, стабильнее работает и т.п.)? Вот что интересно.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 28-12-2019, 00:16:28
И все же где то же должны быть описаны различия между версиями форматов.
Нет.
Как-то автодеск должен обосновать переход на новый формат (меньше места занимает, стабильнее работает и т.п.)?
Нет. Формат закрытый и Autodesk периодически его меняет. Он ничего не обязан обосновывать.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Atomohod от 28-12-2019, 00:21:28
периодически его меняет. Он ничего не обязан обосновывать.
Я немного не про это - они разрабы и меняют его по своему усмотрению- это понятно, но причины для такого на Ваш взгляд в чем? Они же не просто так переписывают уже рабочий формат, чтобы вылавливать новые баги и прочее?
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 28-12-2019, 00:28:34
но причины для такого на Ваш взгляд в чем?
У меня есть очень обоснованное предположение, но я не буду его озвучивать. Отчасти это связано с необходимостью поддерживать новые возможности новых версий AutoCAD, но мне кажется, что не это самое главное.
Название: Re: Как исправить сброс значения в свойстве динамического блока
Отправлено: Александр Ривилис от 28-12-2019, 00:32:56
Atomohod,
Из спортивного интереса выполнил сброс блоков в исходном чертеже, а затем установил те динамические параметры, которые у них были до сброса. Что интересно - блок при этом сдвинулся. После это блоки прекрасно копируются в сводный чертеж с сохранением своих параметров. В этот раз поверь на слово - видео записывать не буду.