Заменить эскиз с помощью Rule

Средства работы с базами знаний.

Заменить эскиз с помощью Rule

Сообщение browser1 » 04 авг 2011 17:52

Я только что начал изучать правила и практически ничего не знаю, но рассчитываю на Вашу помощь.
Есть простой пример. Я построил парт как Rib или "ребро" (в русском переводе катии) с помощью сечения и направляющей. (см рисунок) Синий профиль и синяя направляющая. Неожиданно, по "зеленому свистку" (по приказу руководства :-) ), надо поменять сечение и направляющую на зеленый контур и направляющую, а по "красному свистку" вернуться обратно.
Можно ли написать какое нибудь правило, для замены профилей и направляющих. В ручную неохота. Я так понимаю, надо создать некий параметр исполняющий роль зеленого и красного "свистков". и в правиле прописать, если параметр один, то набор профилей один (синий), если другой, то другой (зеленый). Хорошо бы параметр мог иметь и 3 значение, когда к примеру берем синие сечение , а направляющая зеленая.
Да на правило 1, не обращайте внимание. Это я развлекался с толщиной стенки
Вложения
Change.rar
(35.33 КБ) Скачиваний: 415
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение zerganalizer » 04 авг 2011 18:41

Два года назад я про то же спрашивал... Если выполнить задачу в точности, как написано, то это Automation...

Сейчас у меня есть методика через UDF, когда можно в набор сложить все ваши кривые и эскизы парами или еше как и кормить модель любой их конфигурацией по порядковому номеру в наборе, но методика платная и уже готовится к продаже в составе общей методики, очень дорого даже для фирмы, про простых работников молчу...
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 04 авг 2011 18:59

Кисло, хотя задачка на первый взгляд простая.
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение zerganalizer » 04 авг 2011 19:39

Смотри сам, в нолиджах нет доступа к объектам-родителям, есть доступ к параметрам объекта. Либо макросом делать, создавая все с указанием "куда поставить", либо менять входы, но не нолиджами. Проще сказать руками "замена это на то" в контекстном меню.
Вложения
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 04 авг 2011 20:32

Я не знаю, но когда при попытке написать правило, я тыкаю мышкой в Rib , так там среди ввоных, есть эскиз 1 и эскиз 2.
Я только начал разбираться я не знаю, что такое обозреватель языков в правилах, но там да, скетчеров не видно. Зачем эта кнопка (обозреватель языков) нужна и в чем смысл, если набор вводных неодинаков
Вложения
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение ExtraRight » 04 авг 2011 22:59

Решение простое. Создаётся датум кривая (я это обычно делаю с помощью команды Joint при включённой команде Create datum (по русски Создание базы отсчёта). Затем в правиле указывается, что при таком-то значении параметра эта датум-кривая равна такому-то эскизу, в остальных случаях - другому эскизу.
Это называется generative knowledge - честно говоря, мне это в своё время показали мои тогдашние коллеги - выходцы из АНТК (один из них многоуважаемый Gringo).

PS к сожалению сама модель в R20
Вложения
Change_R20.rar
(37.59 КБ) Скачиваний: 416
Аватара пользователя
ExtraRight
Forum Manager
 
Сообщения: 1575
Зарегистрирован: 11 сен 2007 18:50
Откуда: Нижний Новгород
Blog: View Blog (8)

Re: Заменить эскиз с помощью Rule

Сообщение [PTM] » 05 авг 2011 07:38

да, но к сожалению, при таком подходе постоянно меняются идентификаторы образующих поверхностей... и в последвствии можно словить очень неприятный глюк)
Изображение
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2139
Images: 40
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Заменить эскиз с помощью Rule

Сообщение Dmitrysvoboda » 05 авг 2011 09:41

ExtraRight совершенно right. Я лишь предложу альтернативу методики создания datum кривой. Можно создать параметр Кривая - создастся такая же datum кривая.
А вообще, ув. browser1, ваша задача решится просто - смотрите скриншоты:
- Сначала создаете все необходимые профили и центральные кривые: (см. рис.1, позиции: [1] и [2])
- Затем создаете 2 параметра типа Кривая: (см. рис.3 и рис.1, позиция [3])
- Далее создаете еще один параметр, который и будет определяющим в выборе исполнения - к примеру, это может быть параметр типа Строка (см. рис.1, поз.4) Создается он так же как и любой другой параметр - только в списке параметров надо выбрать Строка (третий сверху), а в поле значение - Несколько значений. И указать эти значения - design_1 и design_2.
- Затем создаем правило и прописываем в него 2 условия If (см. рис.2 и рис.1, поз.5). Первое из них говорит, что если Параметр Строка.1 имеет значение (или равен) design_1, то надо выполнить все, что находится между фигурными скобками { и }. А там у нас используются 2 оператора присваивания (=), которые можно грубо интерпретировать так: присвоить значение Эскиз.1 параметру Кривая.1. И следующая строка: присвоить значение Эскиз.2 параметру Кривая.2. В следующем операторе If проверяется равенство параметра Строка.1 и значения design_2. И если это равенство истинно, то выполняется соответствующий блок между { и }. Там опять два оператора присваивания (=). Первый оператор позволяет нам под Кривой.1 подразумевать Эскиз.3, а второй - под Кривой.2 подразумевать Эскиз.4.
- Ну а на завершающем этапе надо создать ребро. В качестве профиля и направляющей надо выбрать Кривая.1 и Кривая.2 (см. рис.1, поз. 6).
P.S. в условиях операторов If значения параметра Строка.1 указаны в двойных кавычках ("design_1" и "design_2"). Сделано это потому, что это строковые значения - строки.
P.S. у параметра Строка.1 может быть более 2-х параметров (свистков) - то есть "design_1" , "design_2" , "design_3" , "design_4" и т.д.
В условии if может быть все что угодно. Общая форма записи оператора if выглядит так:
if (условие)
{
набор операторов1
}
Если условие истинно, то будет выполняться набор операторов1, а затем все то, что указано после } оператора if. Если условие ложно, то набор операторов1 выполняться не будет. Будет выполняться все то, что указано после } оператора if - если там пусто - то значит ничего не будет выполняться.
В условии может быть все что угодно, что может вернуть значение Правда (true) или Ложь (false). Все операторы сравнения (<) (<=) (>) (>=) (==) (!=) возвращают такое значение. Поэтому в качестве условия можете написать a > b. И если а будет больше b - то вернется значение Истина, если a < b, то Ложь. Если a будет равно b - то вернется тоже Ложь. a и b это существующие параметры, созданные вами или Катей. Только помните - сравнивать надо сравниваемые величины. То есть не надо пытаться сравнить 15 градусов и 15 мм - будет ошибка.
Вложения
Dmitrysvoboda
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 24 апр 2011 23:09

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 05 авг 2011 13:04

ExtraRight писал(а):Создаётся датум кривая (я это обычно делаю с помощью команды Joint при включённой команде Create datum (по русски Создание базы отсчёта).


Очень прошу ткнуть пальцем где это и как создается эта кривая. Если можно сделайте пару картинок, и что это такое базовая кривая (если правильно перевел), для чего нужна и где используется? Очень прошу не откажите в просьбе.
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 05 авг 2011 13:28

Dmitrysvoboda писал(а): Затем создаете 2 параметра типа Кривая: (см. рис.3 и рис.1, позиция [3])

Не получается. Когда создаешь параметр типа кривая, то надо по видимому создавать формулу, без этого получается изолированная кривая, а вот что указывать в качестве формулы? Образующий эскиз? Объясните пожалуйста.
Вложения
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение Dmitrysvoboda » 05 авг 2011 14:28

Правильнее наверное будет сказать не изолированная, а Datum. Хотя это не принципиально. Datum это и есть та самая база отсчета - геометрия, которая ни к чему не привязана, она просто есть.
В качестве формулы ничего не надо указывать. Просто создайте 2 параметра с типом Кривая. Либо как сказал ExtraRight, создайте 2 Datum кривых. Формулы вы им позже присвоите, когда Rule создадите.
Для входа в режим создания Datum'ного объекта надо нажать:
Вложения
datum.jpg
datum.jpg (8.65 КБ) Просмотров: 17801
Dmitrysvoboda
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 24 апр 2011 23:09

Re: Заменить эскиз с помощью Rule

Сообщение keeper » 05 авг 2011 15:49

Ему думаю так сложно не нужно было
Вложения
Part1.rar
(22.09 КБ) Скачиваний: 411
Аватара пользователя
keeper
Постоянный участник
Постоянный участник
 
Сообщения: 614
Зарегистрирован: 15 дек 2008 13:28
Откуда: Дд

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 05 авг 2011 19:14

Уважаемый Dmitrysvoboda , пытался построить как Вы, но ничего не получилось. При создании правила катия выдает ошибку в 4 строке, хотя все делалось как у Вас. Я даже переименовал сеты на английский, хотя не хотелось бы. Изначально катия выдавала ошибку во второй строке, не принимала значение 'G1', а вот , "G1" проглотила. Я не понял в чем разница, но для неё это видимо важно.
Да и ещё глупый вопрос, как быстро ставить в правиле фигурные скобки :-[
Вложения
Change with error.rar
(20.85 КБ) Скачиваний: 405
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 05 авг 2011 19:48

Спасибо уважаемому keeper . Разобрался с Вашей моделькой, жаль сечение она не меняет, но я думаю её поправить. Только я не понял одного, зачем Вы публиковали параметр? Спасибо еще раз
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 05 авг 2011 20:12

Вот поправил модельку уважаемого keeper -а. Теперь она умеет менять не только направление но и сечение. А вот публикация для меня загадка.
Вложения
Part1 (New).rar
(24.34 КБ) Скачиваний: 410
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение Dmitrysvoboda » 05 авг 2011 21:13

browser1 писал(а):Уважаемый Dmitrysvoboda , пытался построить как Вы, но ничего не получилось. При создании правила катия выдает ошибку в 4 строке, хотя все делалось как у Вас. Я даже переименовал сеты на английский, хотя не хотелось бы. Изначально катия выдавала ошибку во второй строке, не принимала значение 'G1', а вот , "G1" проглотила. Я не понял в чем разница, но для неё это видимо важно.
Да и ещё глупый вопрос, как быстро ставить в правиле фигурные скобки :-[

Открыл вашу модель, запустил правило, нажал применить - и все заработало без внесения каких-либо корректировок. Основываясь на своем скромном опыте, рискну сделать предположение, что вы переименовывали или производили еще какие-то лишние манипуляции с эскизами или кривыми.
Геометрические сеты переименовывать не обязательно. Моя ошибка - я сделал пример, в котором названия сетов совпали со значениями строкового параметра Строка.1 - design_1 и design_2. Обращаю ваше внимание - геометрические сеты могут иметь любое название.
Я повторюсь - в двойных кавычках пишутся строки. "G1" - это значение строкового параметра - строка. 'G1' - это обозначение параметра. Поэтому Катя и выдавала вам ошибку во второй строке. Вы пытались сравнить значение строкового параметра с несуществующим параметром.
Насчет операторных скобок { } - я не могу придумать ничего быстрее, чем нажать shift+[ и shift+]. На моей клавиатуре по крайней мере так.
Я вам настоятельно рекомендую разобраться со всеми примерами по knowledge, которые вам сделали. Основываясь только на запоминании алгоритмов реализации решения поставленных задач, без понимания механизма работы операторов, вы не сможете самостоятельно писать правила и уж тем более находить в них ошибки. Начните с простого - с призмы. Сделайте, к примеру, правило, при котором призма будет менять предел выдавливания, если одна из ее сторон будет < 50 мм. Но только самостоятельно - без помощи со стороны. А потом переходите к более интересным задачам - смена эскиза призмы, если предел ее выдавливания больше какого-то фиксированного значения (мм).
Вложения
Dmitrysvoboda
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 24 апр 2011 23:09

Re: Заменить эскиз с помощью Rule

Сообщение zerganalizer » 05 авг 2011 22:08

А созданная UDF не парила бы мозги совсем, кликнул в нее дважды, сменил ей сечение, указав новое или вторым входом в UDF еще и траекторию - и все. Одна фича в дереве с 2-мя входами - профиль и сечение, и они сменные... И при этом сечение может лежать совсем не на траектории... и при этом все пропустили реплику РТМ, а она ключевая... так вот, эта реплика со сменяемыми ID и ID граней/ребер решается, если, конечно, число доменов во входящих кривых одинаковы...

Пример для общего изучения, но юзабилити такой модели неважное будет, если подобные решения применять многократно...
Автоматизирую все, что логично.
Аватара пользователя
zerganalizer
Moderator
 
Сообщения: 901
Зарегистрирован: 20 май 2008 15:20

Re: Заменить эскиз с помощью Rule

Сообщение Dmitrysvoboda » 05 авг 2011 22:12

zerganalizer писал(а):А созданная UDF не парила бы мозги совсем, кликнул в нее дважды, сменил ей сечение, указав новое или вторым входом в UDF еще и траекторию - и все. Одна фича в дереве с 2-мя входами - профиль и сечение, и они сменные... И при этом сечение может лежать совсем не на траектории... и при этом все пропустили реплику РТМ, а она ключевая... так вот, эта реплика со сменяемыми ID и ID граней/ребер решается, если, конечно, число доменов во входящих кривых одинаковы...

Пример для общего изучения, но юзабилити такой модели неважное будет, если подобные решения применять многократно...

Ну так может поделитесь?
Dmitrysvoboda
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 24 апр 2011 23:09

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 11 авг 2011 13:52

Решил не создавать новой ветки. Но у меня вопрос опять про правила. Думаю для людей опытных совсем не сложный.
Есть эскиз, в нем 2 отрезка, один, продолжение другого. Они могут быть под углом друг к другу, а могут быть параллельны. Это определяется параметром "Угол". Из этого эскиза сделал выдавливание. При условии что если есть угол, есть скругление этого выдавливания с радиусом 100мм.
Вопрос, как сделать так, чтобы скругления не было (было деактивировано) при условии, что угол = 0 грд.
Я пробовал сделать правило, при углах меньше ,5 и 0 радиус скругления равен 0мм. Правило работает, но скругление остается и ругается, что оно невозможно (даже с 0 радиусом) т.к нет острых кромок. Вот мне и нужно условие, что при углах меньше ,5 и при 0 грд. скругление было неактивно, но при углах больше ,5, оно "просыпалось". Такое возможно?
Я прикрепил модель, но она простая.
Вложения
Angle low.rar
(18.98 КБ) Скачиваний: 405
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение Dmitrysvoboda » 11 авг 2011 14:40

Я вам предложу немного иной подход к решению задачи. Надо не радиус скругления в 0 уменьшать, а деактивировать само скругление, если оно не имеет смысла. У каждого примитива есть такой параметр - 'Операция', который принимает 2 логических значения - true и false. Если значение этого параметра true, то значит примитив активен. Если false - деактивирован. Соответственно, в правиле надо записать условие, при котором скругление не будет иметь смысла (когда прямые в эскизе выстроены в одну линию и угол между ними равен 180 градусов (ну или 0 как у вас)). Решение задачи на скриншотах. Специально их сделал - так как у меня угол откладывается напрямую между линиями и как следствие, то что у вас 0 градусов - у меня 180. Но это не суть - главное - само правило.
Вложения
Dmitrysvoboda
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 24 апр 2011 23:09

Re: Заменить эскиз с помощью Rule

Сообщение keeper » 11 авг 2011 15:12

а не проще ли было в эскиз все затащить
Вложения
Part1.rar
(16.82 КБ) Скачиваний: 403
Аватара пользователя
keeper
Постоянный участник
Постоянный участник
 
Сообщения: 614
Зарегистрирован: 15 дек 2008 13:28
Откуда: Дд

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 11 авг 2011 17:26

Dmitrysvoboda писал(а):Я вам предложу немного иной подход к решению задачи. Надо не радиус скругления в 0 уменьшать, а деактивировать само скругление, если оно не имеет смысла.

Именно это я и спрашивал, правда коряво. Я это и имел в виду когда говорил, скругление деактивировать - активировать или включить - выключить.
Спасибо
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 11 авг 2011 19:28

Я немного усложнил задачу. Я ввел еще один параметр длина, он регулирует положение горизонтального отрезка к оси Y. Я хотел что бы при 2 параметрах равных 0 (угол и длина), операция скругления должна быть неактивна. Не получилось. Получается только при параметре угол (равно 0), то поверхность неактивна, если ввести значение угла 1, а длина по прежнему 0, то скругление активируется (смотрите картинку). Я же хочу, чтобы при любом из параметров равных 0, скругление оставалось неактивном
Вот пример кода, что не так?
Код: Выделить всё
if (`Угол.1` ==0deg) or (`Длина.1` ==0 mm)
{
   `Геометрический набор .1\Скругление кромки.1\Операция` =false

if(`Угол.1` >0deg) or (`Длина.1` >1mm)
{
   `Геометрический набор .1\Скругление кромки.1\Операция` =true
   }

Вложения
Angle low 2.rar
(19.51 КБ) Скачиваний: 369
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

Re: Заменить эскиз с помощью Rule

Сообщение Dmitrysvoboda » 11 авг 2011 19:48

когда вы пишите if(условие1 or условие2), то if выполнится, когда истинно либо условие1, либо условие2. Если вы хотите, чтобы if выполнялся только когда оба условия истинны, то надо вместо or использовать and.
Dmitrysvoboda
Новичок
Новичок
 
Сообщения: 49
Зарегистрирован: 24 апр 2011 23:09

Re: Заменить эскиз с помощью Rule

Сообщение browser1 » 11 авг 2011 20:04

Ура заработало, но я пока не разобрался почему. Я поменял в последнем условии, последний оператор с or на and и оно (правило) заработало. Вот как выглядит код сейчас
Код: Выделить всё
if (`Угол.1` ==0deg) or (`Длина.1` ==0 mm)
{
   `Геометрический набор .1\Скругление кромки.1\Операция` =false
}
if(`Угол.1` >0deg) and (`Длина.1` >1mm)
{
   `Геометрический набор .1\Скругление кромки.1\Операция` =true
   }
Аватара пользователя
browser1
Участник
Участник
 
Сообщения: 184
Зарегистрирован: 17 сен 2007 11:44

След.

Вернуться в Knowledge

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1