Jump to content

параметрические объекты СПДС


Recommended Posts

так будет пограмотнее

Использование идентификаторов объектов

Каждый объект MechaniCS имеет уникальный идентификатор (аналог Microsoft GUID). Здесь под объектом понимается конкретный экземпляр класса, а не класс объектов. Наличие такого идентификатора легко решает проблему подключения объекта одного класса к нескольким объектам другого, например, трубы к двум угольникам. Функции по установке и сбросу зависимостей, использованные нами ранее, неявно включали в себя идентификаторы объекта в виде имени obj и параметра по умолчанию (см. описание функций для работы с зависимостями). При подключении объекта можно сохранить его идентификатор с помощью функции setWorkId, а затем можно в любой (!) момент восстановить его с помощью функции getWorkId и получить его текущие public-параметры с помощью функции getObjData.

 

 

см в справке "Функции для работы с идентификаторами объектов"

Edited by doctorraz
  • Like 1
Link to comment
Share on other sites

При непараметрическом распознавании вида вылезает надпись "Размер вида превысил допустимое значение и не будет записан".

От чего зависит это размер?

При 1100 отрезках он распознаётся, при 250 полилиниях - нет. Т.е. дело не в количестве примитивов, а в чём? В количестве отдельных линий в примитивах?

Link to comment
Share on other sites

При непараметрическом распознавании вида вылезает надпись "Размер вида превысил допустимое значение и не будет записан".

От чего зависит это размер?

При 1100 отрезках он распознаётся, при 250 полилиниях - нет. Т.е. дело не в количестве примитивов, а в чём? В количестве отдельных линий в примитивах?

 

232 Это никак нельзя перевести в примитивы или в количество.

Link to comment
Share on other sites

так будет пограмотнее
Использование идентификаторов объектов Каждый объект MechaniCS имеет уникальный идентификатор (аналог Microsoft GUID). Здесь под объектом понимается конкретный экземпляр класса, а не класс объектов. Наличие такого идентификатора легко решает проблему подключения объекта одного класса к нескольким объектам другого, например, трубы к двум угольникам. Функции по установке и сбросу зависимостей, использованные нами ранее, неявно включали в себя идентификаторы объекта в виде имени obj и параметра по умолчанию (см. описание функций для работы с зависимостями). При подключении объекта можно сохранить его идентификатор с помощью функции setWorkId, а затем можно в любой (!) момент восстановить его с помощью функции getWorkId и получить его текущие public-параметры с помощью функции getObjData.
см в справке "Функции для работы с идентификаторами объектов"

 

1) Верно ли я понимаю, что функция setWorkId актуальна только при коннекте к чему-либо и только для плоскости, которая присоединяется в данном rPart?..

Т.е. я вставляю в чертёж воздуховод, автоматически присоединяю в OnConnect его (воздуховода) начало, к примеру, к существующему отводу, запоминаю идентификатор и впоследствии могу внутри объекта мониторить данное соединение, грубо говоря, путём:

 

if (getObjData(getWorkId(5),obj))

id1=1;

 

Затем геометрически задаю воздуховоду длину и всё, операции с ним закончились.

 

Вопрос: а как мне дать понять ОТВОДУ, что к его второму концу что-то присоединилось? Или если на данном же примере, как дать понять воздуховоду, что я к его концу что-то впоследствии приконнектил?

 

2) Откуда ваша цитата, если не секрет? В справке всё это написано несколько более сжато вроде как...

Link to comment
Share on other sites

в конце статьи ссылка

не совсем понимаю, для чего такие сложности???

все прекрасно коннектится без танцев с бубном, и определяется что к чему должно, а что не должно и каким образом в OnConnect

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

Учите матчасть. все сделано до нас))

там есть еще видео по теме.

  • Like 1
Link to comment
Share on other sites

все прекрасно коннектится без танцев с бубном, и определяется что к чему должно, а что не должно и каким образом в OnConnect

 

Это, к сожалению, не ответ на мой вопрос.... А меня интересует не то, как мне присоединить одну деталь к другой, вставить объект в цепь, поменять сечение во всей цепочке от перехода до перехода, установить зависимость на кучу параметров в обе стороны, навертеть красивую форму и прочие свистелки. Это я вполне могу сделать.

 

Вопрос был весьма конкретный:

Если на вопрос что "к объекту что-то присоединено и оно изменилось" отвечает функция if( IsFixedParam(param), то есть ли что-то отвечающее просто за "к объекту что-то присоединено"..?

 

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

Ибо в разделе set/getWorkId, насколько я понимаю, его нет.

Edited by Mитька
  • Like 1
Link to comment
Share on other sites

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

Ибо в разделе set/getWorkId, насколько я понимаю, его нет.

тыкаю

страница 59

getObjectConnectedTo(idOut, objToSerch, strExpression, ParamName);

Производит поиск объектов соединенных зависимостью с переменной ParamName объекта objToSerch, удовлетворяющих условию strExpression.

Условие может быть пустым.

Вам надо больше читать

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

Пример показать где взять??? Или сами знаете??

Edited by doctorraz
  • Like 1
Link to comment
Share on other sites

тыкаю

страница 59

getObjectConnectedTo(idOut, objToSerch, strExpression, ParamName);

Производит поиск объектов соединенных зависимостью с переменной ParamName объекта objToSerch, удовлетворяющих условию strExpression.

Условие может быть пустым.

А вот это уже гораздо больше походит на ответ. Благодарю. А предыдущее, уж простите, за исключением ссылки сводится к "всё и так ништяк, смотрите, как я могу". Крайне информативно.

Если интересны мои выводы по видео:

1. "Круто, именно то, чего я и добиваюсь от системы."

2. "То, что сделано мной в данном направлении все штучки с видео уже может, пусть и без такой детализации".

А чем Вы руководствовались, ссылаясь на него?

 

Вам надо больше читать

Допускаю. Этим сейчас и займусь. Спасибо за ссылку.

 

Пример показать где взять??? Или сами знаете??

Да, показать, буду признателен. Сухое описание функций без примеров и пояснений - очень тяжко даётся, к сожалению.

Edited by Mитька
  • Like 1
Link to comment
Share on other sites

2. "То, что сделано мной в данном направлении все штучки с видео уже может, пусть и без такой детализации".

 

to doctorraz: Кстати, огромное спасибо за ваши уроки. Крайне помогает.

Edited by Mитька
  • Like 1
Link to comment
Share on other sites

А чем Вы руководствовались, ссылаясь на него?

тем, что на мой взгляд Вы пытаетесь все излишне усложнить.

Вызвано это имхо либо:

пытаетесь создать очередную супер/пупер систему.

но скорей всего плохо понимаете, что как работает/взаимодействует и поэтому пытаетесь делать объекты через одно место, там где легко можно сделать прямо.

но так как конечная цель скрыта... это только догадки )

Да, показать, буду признателен. Сухое описание функций без примеров и пояснений - очень тяжко даётся, к сожалению.

в базе СПДС механика в каталоге "Трубопроводы сварные" есть фланцы, в них используется функция определения, что за объект присоединен (getObjectConnectedTo)

где базу взять сказать??

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

что бы нормально разобраться в этом вопросе неплохо использовать отладчик, что бы можно было посмотреть промежуточные значения...

  • Like 1
Link to comment
Share on other sites

но так как конечная цель скрыта... это только догадки )

Конечная цель вполне прозрачна (и кстати, вполне себе описана выше): мне нужна система, аналогичная приведённой на видео (только вентиляционная), заточенная под внутренние потребности организации и сделанная мной, потому что мне этот процесс в кайф.

 

тем, что на мой взгляд Вы пытаетесь все излишне усложнить.

Вызвано это имхо либо:

пытаетесь создать очередную супер/пупер систему.

если и пытаюсь всё усложнить, то не больше, чем человек, создававший систему, приведенную вами на видео. Проблема в том, что видео это не несёт НУ ВООБЩЕ НИКАКОЙ информации, кроме того, как оно может быть, а это я и так знаю, у меня у самого на экране примерно такая же красота.

Только вот при наличие в системе отводов, отличных от 90 градусов, при смене сечения длина одного из воздуховодов меняется не совсем корректно, от чего чуть сбивается осёвка, т.к. механизм её (длины) изменения рассчитан пока только на отводы в 90 градусов, а потому "ммм, а здорово бы было, чтобы элемент понимал, что именно к нему присоединено и т.д. и т.п."

 

но скорей всего плохо понимаете, что как работает/взаимодействует и поэтому пытаетесь делать объекты через одно место, там где легко можно сделать прямо.

И разумеется, многое я понимаю плохо, а чего-то не понимаю совсем, т.к. в принципе не имел с этим дела. А что-то, как ни странно, понимаю уже вполне себе сносно, для своих потребностей... Для меня программирование - дремучий лес, я учусь делать эти объекты "по фотографии"... А задаю подобные вопросы я именно потому, что НЕ хочу "делать объекты через одно место" и не понимаю по описанию функции, как именно она должна работать.

 

в базе СПДС механика в каталоге "Трубопроводы сварные" есть фланцы, в них используется функция определения, что за объект присоединен (getObjectConnectedTo)

А вот тут спасибо. Лучший формат ответа! Базу найду, я полагаю.

 

что бы нормально разобраться в этом вопросе неплохо использовать отладчик, что бы можно было посмотреть промежуточные значения...

И опять же, спасибо за совет.

Edited by Mитька
  • Like 1
Link to comment
Share on other sites

проще было бы написать, что есть и что должно получиться... (с примерами)

есть подозрение, что скрипт сделан не совсем корректно, отсюда и косяки...

многие стандартные объекты СПДС написаны с ошибками... и брать их за образец надо с умом (понимать, что зачем)

=

но коль интересно поразбираться самому..

  • Like 1
Link to comment
Share on other sites

есть подозрение, что скрипт сделан не совсем корректно, отсюда и косяки...

О, да я в этом и не сомневаюсь! =) Хотя бы потому, что что-то подобное делается в первый раз и я даже отдалённо не представлял себе масштаб трагедии, когда за это садился, так что всё делается, как считается правильным, пока не столкнусь с каким-нибудь очередным несростом, а потом что-то правится, пробуется на всей системе, утрясается, дополняется, переиначивается и т.д. А через пару дней пересобирается заново, исходя из полученного "опыта" или ещё чего-нибудь... Короче, да, интересно самому. =)

 

проще было бы написать, что есть и что должно получиться... (с примерами)

Это уже совсем крайняя мера. Примерно, как сейчас. Когда сам уже ну совсем без идей, как к чему-то подступиться.

 

многие стандартные объекты СПДС написаны с ошибками... и брать их за образец надо с умом (понимать, что зачем)

а они и не берутся за основу (за редкими исключениями), там почти всё, что хоть сколько-нибудь интересно, спрятано за классом... В идеале бы иметь для примера подобную рабочую систему, но это, полагаю, утопично. Интеллектуальная собственность и т.д. Так что пляшем от того, что имеем.

Link to comment
Share on other sites

кстати, что мешает тебе передавать воздуховоду в качестве параметра угол поворота углового соединения???

типа для WP1- угол1, WP2- угол2???

а потом в воздуховоде вычислять длину через син кос??

убьешь много зайцев, в т.ч. не надо будет городить 100500 объектов углов.. достаточно будет одного.

  • Like 1
Link to comment
Share on other sites

кстати, что мешает тебе передавать воздуховоду в качестве параметра угол поворота углового соединения???

типа для WP1- угол1, WP2- угол2???

а потом в воздуховоде вычислять длину через син кос??

убьешь много зайцев, в т.ч. не надо будет городить 100500 объектов углов.. достаточно будет одного.

Вот именно для этого мне и нужно было, чтобы воздуховод понимал, что у него там рядышком. =)

Link to comment
Share on other sites

Т.е. фактически брал свойства с соседних объектов, не в OnСonnect, а постоянно, независимо от того, что к чему присоединялось в какой последовательности.

Если я, конечно, опять чего не напутал в понимании советов. =)

Edited by Mитька
Link to comment
Share on other sites

а что еще может быть кроме поворота и воздуходувки???

при коннекте можноварьировать передаваемые параметры по значениям, количеству и типам связей в зависимости от типа подтипа и наименования соединяемых деталей.

т.е. ты все необходимое можешь получить при соединении один раз и обновить автоматом при любом изменении.

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

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

Link to comment
Share on other sites

Т.е. фактически брал свойства с соседних объектов, не в OnСonnect, а постоянно, независимо от того, что к чему присоединялось в какой последовательности.

Если я, конечно, опять чего не напутал в понимании советов. =)

Объясни для чего ему это надо ПОСТОЯННО???

может достаточно только при каком-то изменении??

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

ты насчет видео прикалывался что так можешь...

меняется диаметр по всей линии и трубе пофих от кого она его берет от задвижки, поворота или другой трубы

Давление меняется то же по всей линии, но только задвижка на него реагирует изменением геометрии.

параметр "среда" то же по всей линии меняется, но никак не отображается (просто передается свойство по цепочке)

Edited by doctorraz
Link to comment
Share on other sites

а что еще может быть кроме поворота и воздуходувки???

 

Я имел в виду, вдруг я чего не так понял и подразумевались какие-то углы, отвечающие за положение самого воздуховода в пространстве, а не угловые значения соседствующих элементов. Но, видимо, не они.

 

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

Хм, не подходил к вашему блогу комплексно столь комплексно, спасибо. Поскачиваю-погляжу.

 

- при коннекте можно варьировать передаваемые параметры по значениям, количеству и типам связей в зависимости от типа подтипа и наименования соединяемых деталей.

- т.е. ты все необходимое можешь получить при соединении один раз и обновить автоматом при любом изменении.

- меняется диаметр по всей линии и трубе пофих от кого она его берет от задвижки, поворота или другой трубы

- давление меняется то же по всей линии, но только задвижка на него реагирует изменением геометрии.

параметр "среда" то же по всей линии меняется, но никак не отображается (просто передается свойство по цепочке)

 

Ты насчет видео прикалывался что так можешь...

 

Да, всё вышеперечисленное в том или ином виде есть. Вероятнее всего не столь вариативно, но цепочка работает в обе стороны, геометрически - от перехода до перехода, по свойствам системы - на всю цепь.

 

Объясни для чего ему это надо ПОСТОЯННО???

может достаточно только при каком-то изменении??

 

При изменении - это не проблема, такое уже есть за счёт IsFixedParam...

А зачем постоянно.... да может и незачем уже. :rolleyes: Мне ещё вариант в голову пришёл, пока я тут переписываюсь, может он меня и спасёт от моих проблем с длинами... Так что пока я просто узнал, что такое вроде как возможно. =)

Link to comment
Share on other sites

Оу... Вот до меня с опозданием дошло (пора, видать, спать) по поводу передачи угла как переменной на воздуховод при коннекте... Да, действительно, без танцев с бубном можно обойтись....

Edited by Mитька
Link to comment
Share on other sites

При изменении - это не проблема, такое уже есть за счёт IsFixedParam...

А зачем постоянно.... да может и незачем уже. :rolleyes: Мне ещё вариант в голову пришёл, пока я тут переписываюсь, может он меня и спасёт от моих проблем с длинами... Так что пока я просто узнал, что такое вроде как возможно. =)

неправильно понимаешь...

IsFixedParam используется только для проверки, что есть геометрическая зависимость (по плоскостям), дабы не улететь в бесконечный цикл.

все остальное прекрасно передается средствами движка СПДС.

D=new.D, new.D-прилетело от связанной детали без нашего участия)))

Link to comment
Share on other sites

IsFixedParam используется только для проверки, что есть геометрическая зависимость (по плоскостям), дабы не улететь в бесконечный цикл.

 

Да, вероятнее всего, действительно для описания изменения длины она по итогу и не пригодится. Но пока она там есть. Т.к. изменение длины методом

D=new.D, new.D-прилетело от связанной детали без нашего участия)))

не описать.

Link to comment
Share on other sites

  • 2 weeks later...

Наверняка, такой вопрос уже где-то мелькал, но чего-то поиск по форуму вообще мне хоть что-то выдавать отказывается...

 

1) Можно ли в объект вшить штриховой режим перекрытия. По умолчанию стоит нормальный.

2) Можно ли то же самое сделать для программы в принципе, для всех создаваемых объектов?

 

Хотя предпочтительнее, конечно, первое.

Edited by Mитька
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...