Настройки размерного стиля

Автор Тема: Настройки размерного стиля  (Прочитано 16826 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
- AutoCAD 2015 x86 Enu.

В настройках размерного стиля программно назначено значение "Default" для некоторых опций LineWeight:
Код - C# [Выбрать]
  1. dimStyle.Dimlwd = LineWeight.ByLineWeightDefault; // -3 value
  2. dimStyle.Dimlwe = LineWeight.ByLineWeightDefault; // -3 value
  3.  
Однако по факту в диалоговом окне редактирования настроек для этих опций отображается значение "ByBlock" вместо "Default" (это не удивляет) и даже вместо значения 0.25 (а вот это уже настораживает).



Переменные Dimlwd и Dimlwe содержат верные значения: -3 (что соответствует варианту Default). В диалоговом окне "Lineweight Settings" в качестве Default назначено 0.25 mm.

Вопрос 1: почему в диалоговом окне "Modify Dimension Style" отображается значение "ByBlock" вместо ожидаемого мною 0.25, хотя назначено Default?

=======================================

Как программно изменить указанные настройки?





Сравнивая стили (до изменения и после) вижу разницу в следующем:





Однако ни переменных, ни свойств DIMMZF, DIMMZS, DIMALTMZF, DIMALTMZS не существует.

Вопрос 2: Как добраться до обозначенного контента, дабы изменить его программно?

===================================



Сравнение настроек до и после изменений не находят никаких различий:



Вопрос 3: Как добраться до обозначенных настроек дабы изменить их?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Настройки размерного стиля
« Ответ #1 : 14-05-2014, 22:50:59 »
Пока по Вопрос 2:
Однако ни переменных, ни свойств DIMMZF, DIMMZS, DIMALTMZF, DIMALTMZS не существует.
Есть начиная с AutoCAD 2010 (в документации не нашел):
Код - C++ [Выбрать]
  1.     virtual double           dimmzf   () const;        // new to 2010
  2.     virtual const ACHAR *    dimmzs   () const;        // new to 2010
  3.     virtual double           dimaltmzf() const;        // new to 2010
  4.     virtual const ACHAR *    dimaltmzs() const;        // new to 2010
Аналогичные свойства должны быть и в AutoCAD .NET API (в 2015 точно есть)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Настройки размерного стиля
« Ответ #2 : 14-05-2014, 22:53:41 »
я проверял как раз в 2015-м. Может уже к вечеру глаз замылился и очепятался... Завтра ещё раз проверю (сейчас нет возможности).

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Настройки размерного стиля
« Ответ #3 : 14-05-2014, 23:09:15 »
Судя по всему в AutoCAD .NET API не все свойства перенесли из ObjectARX. Я обратил внимание, что метод/свойство dimmzf в ObjectARX есть и для AcDbDatabase, и для AcDbDimension, и для AcDbDimStyleTableRecord, а в .NET только Autodesk.AutoCAD.DatabaseServices.Dimension.Dimmzf
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Настройки размерного стиля
« Ответ #4 : 14-05-2014, 23:12:14 »
я пробовал даже вручную, в консоли автокада, назначить значение переменной, но автокад писал, что мол "в первый раз слышу о таком".

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Настройки размерного стиля
« Ответ #5 : 15-05-2014, 00:09:06 »
Command: DIM
Dim: dimmzf
Enter new value for dimension variable <100.0000>: 100
Dim: exit
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Настройки размерного стиля
« Ответ #6 : 15-05-2014, 00:11:56 »
Хм... Я обычно напрямую вбиваю имя переменной в консоль. Т.е. в данном случае вбивал, насколько помню, dimmzf. Сейчас проверить не могу. Так же пробовал Application.SetVariable("dimmzf", 200) - исключение возникало.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Настройки размерного стиля
« Ответ #7 : 15-05-2014, 00:14:22 »
Как видишь часть размерных переменных не имеет аналога в системных переменных и управляется только через команду _DIM. Даже через _SETVAR это сделать нельзя:
Command: SETVAR Enter variable name or [?]: dimmzf
Unknown variable name.  Type SETVAR ? for a list of variables.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Настройки размерного стиля
« Ответ #8 : 15-05-2014, 00:15:11 »
я как раз выше об этом нацарапал. Так, и как тогда через .NET всё это хозяйство инициализировать? Не хочется к командной строке обращаться, честно говоря...

P.S. и там ещё пара вопросов "потерялось" по дороге... :)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Настройки размерного стиля
« Ответ #9 : 15-05-2014, 00:24:04 »
Ну и если всё резюмировать, то в AutoCAD .NET API можно изменить эти переменные только через P/Invoke соответствующих методов из ObjectARX
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Настройки размерного стиля
« Ответ #10 : 15-05-2014, 00:25:02 »
Ну и если всё резюмировать
Все три вопроса?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Настройки размерного стиля
« Ответ #11 : 15-05-2014, 00:47:49 »
Только второй.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Настройки размерного стиля
« Ответ #12 : 15-05-2014, 01:53:23 »
По третьему вопросу должна помочь эта картинка:

(это расширенные данные, т.е. Xdata, размерного стиля)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Настройки размерного стиля
« Ответ #13 : 15-05-2014, 02:14:06 »
По первому вопросу я так и не понял почему ты решил, что у тебя будет значение 0.25 Или ты думаешь, что если изменишь значение веса линии по-умолчанию, и он сразу изменится в окне размерного стиля? Если так думал - то неправ. В тот момент, когда ты выбираешь из списка значение, если это неявное значение (типа Default, Bylayer и т.д.) AutoCAD вычисляет это значение (в твоём случае это 25) и выполняет что-то типа
Код - C# [Выбрать]
  1. dimStyle.Dimlwd = LineWeight.kLnWt025;
Ты можешь в этом убедится сам, если посмотришь значение соответствующей размерной переменной в размерном стиле.
Если ты сам назначил
Код - C# [Выбрать]
  1. dimStyle.Dimlwd = LineWeight.ByLineWeightDefault;
то при запуске команды _DIMSTYLE  AutoCAD находит ближайшее значение и показывает его. В данном случае Default и ByBlock скорее всего одинаковы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Настройки размерного стиля
« Ответ #14 : 15-05-2014, 09:42:35 »
По первому вопросу я так и не понял почему ты решил, что у тебя будет значение 0.25
Я же там объяснил почему:
Цитировать
В диалоговом окне "Lineweight Settings" в качестве Default назначено 0.25 mm.
Т.е. LWDEFAULT == 0.25.

Или ты думаешь, что если изменишь значение веса линии по-умолчанию, и он сразу изменится в окне размерного стиля?
Я наблюдаю несколько различное поведение в AutoCAD 2009 и 2015 по данному вопросу.

Если опции Lineweight назначить значение Default, то в DIMLWD будет сохранено именно значение -3, а не скопировано то значение, которое хранится в LWDEFAULT. Если после этогоизменить LWDEFAULT на 60 (к примеру),  то при очередном открытии окна настроек размерного стиля эта опция будет показывать не слово Default, но слово ByBlock, что в корне неправильно, ибо  Default и ByBlock - это не одно и тоже: у них разное предназначение и значения разные!

Т.о. если я назначу DIMLWD значение -3, затем создам размер и изменю LWDEFAULT на 60, то толщины линий размера изменятся.

Цитировать
В данном случае Default и ByBlock скорее всего одинаковы.
Нет, не одинаковы. ByBlock равен -2 и указывает на то, что толщина линии должна каждый раз считываться из толщины линии, назначенной блоку, в состав которого входит примитив. Значение -3 указывает на то, что значение нужно каждый раз считывать из переменной LWDEFAULT.
« Последнее редактирование: 15-05-2014, 10:46:06 от Андрей Бушман »