Ограничение диапазона вводимых данных пользовательского параметра.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Ограничение диапазона вводимых данных пользовательского параметра.

Ограничение диапазона вводимых данных пользовательского параметра.

Ответ
Поиск в этой теме
Непрочитано 16.06.2025, 16:11 #1
Ограничение диапазона вводимых данных пользовательского параметра.
Mozgolom
 
Регистрация: 19.06.2012
Сообщений: 96

Всем привет. У динамического блока присутствует один параметр, который можно задавать произвольно в свойствах блока. Данный параметр участвует в расчете другой величины. В формуле есть корень квадратный. Так вот, при определенных значениях пользовательского параметра другая величина получается отрицательной и Автокад ругается на попытку извлечь корень квадратный из отрицательного числа. А к этому числу привязана длинна полилинии через размерную зависимость.
Есть ли возможность ограничить диапазон ввода пользовательского параметра через свойства блока , чтобы ввод некорректных значений был исключен? Верхний порог пользовательского параметра рассчитывается по определенной формуле и зависит от других параметров.
Просмотров: 823
 
Непрочитано 16.06.2025, 16:20
#2
elovkov

ПОС наше всё
 
Регистрация: 06.08.2009
Симферополь
Сообщений: 287


А что за параметр? Линейному можно просто задать минимальное и максимальное значение. И тогда при вводе менее или более будут записываться крайние
__________________
Умное лицо это еще не признак ума. Все глупости на земле делаются именно с этим выражением лица
elovkov вне форума  
 
Автор темы   Непрочитано 16.06.2025, 16:24
#3
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 96


Цитата:
Сообщение от elovkov Посмотреть сообщение
А что за параметр? Линейному можно просто задать минимальное и максимальное значение. И тогда при вводе менее или более будут записываться крайние
У меня размерная зависимость "выравнивание" наложена на полилинию.
Mozgolom вне форума  
 
Непрочитано 16.06.2025, 18:35
#4
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,962


Считать корень из модуля?
engngr вне форума  
 
Автор темы   Непрочитано 16.06.2025, 18:43
#5
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 96


Цитата:
Сообщение от engngr Посмотреть сообщение
Считать корень из модуля?
Думал об этом. Но тогда возникает следующая проблема. При постепенном увеличении пользовательского параметра, размерная зависимость уменьшается. И так продолжается до тех пор, пока значение под квадратным корнем не станет отрицательным. Но мы его берём по модулю и у нас все выражение при переходе через ноль переворачивается, становится положительным и при дальнейшем увеличении пользовательского параметра снова начинает расти.
Нужен такой алгоритм: пока пользовательский параметр увеличивается, размерная зависимость уменьшается вместе с длиной полилинии. Но как только размерная зависимость дошла до нуля, а пользовательский параметр продолжает увеличиваться, размерная зависимость должна остаться равной нулю. То есть размерная зависимость не должна опускаться ниже 0. Ее нужно ограничить нулем снизу. Сверху ограничений нет.
Mozgolom вне форума  
 
Непрочитано 17.06.2025, 12:18
#6
engngr

сети
 
Регистрация: 03.11.2008
Московия*
Сообщений: 5,962


Ты бы файл приложил.
engngr вне форума  
 
Непрочитано 17.06.2025, 15:15
#7
Demonakor


 
Регистрация: 28.11.2022
Сообщений: 153


Например был параметр А1, который не должен быть меньше 10.
Можно создать А2, и задавать любые значения ему. А1=max(10;А2).
В итоге формула будет зависеть от значений, которые нужно исключить. Если параметр A1 учитывается только в одной формуле - второй параметр можно и не создавать, а прописать ограничение прямо в ней.
Demonakor вне форума  
 
Автор темы   Непрочитано 17.06.2025, 15:35
#8
Mozgolom


 
Регистрация: 19.06.2012
Сообщений: 96


Цитата:
Сообщение от Demonakor Посмотреть сообщение
Например был параметр А1, который не должен быть меньше 10.
Можно создать А2, и задавать любые значения ему. А1=max(10;А2).
В итоге формула будет зависеть от значений, которые нужно исключить. Если параметр A1 учитывается только в одной формуле - второй параметр можно и не создавать, а прописать ограничение прямо в ней.
Я нашел несколько иное решение.
А = SQRT(В + |B|)/2
Здесь В это мой параметр, который в результате вычислений может иногда принимать отрицательные значения, а А - это параметр зависимости. В итоге любые положительные значения В так и остаются положительными, а любые отрицательные обнуляются.
Mozgolom вне форума  
 
Непрочитано 17.06.2025, 15:49
#9
Demonakor


 
Регистрация: 28.11.2022
Сообщений: 153


Цитата:
Сообщение от Mozgolom Посмотреть сообщение
Я нашел несколько иное решение.
А = SQRT(В + |B|)/2
Да, это тоже должно сработать, как и А=sqrt(max(0;B))
Только надо внимательно быть со скобками, а то записано, как будто на 2 делится корень, а не выражение в нём.
Demonakor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Ограничение диапазона вводимых данных пользовательского параметра.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рассылка в word - получение данных из нескольких вкладок excel zenija2007 Прочее. Программное обеспечение 3 21.11.2016 17:54
Правильное оформление Общих данных отдельным документом Ilez Организация проектирования и оформление документации 12 24.08.2016 12:50
VBA. Многократный ввод данных и изменение положения объектов Markiza-2010 Программирование 6 28.06.2010 02:30