Перейти к публикации

[protoolkit] получить идентификатор объекта


mannyz

Рекомендованные сообщения

Всем привет!

Я пишу плагинчик на C++ под Creo Parametric. Пользуюсь protoolkit.

Столкнулся с такой проблемой: мне надо получить уникальный идентификатор для объекта типа PART или ASSEMBLY, который будет неизменен между сессиями запуска Creo. Если я ничего не путаю, то в самой документации сказано, что можно получить такой идентификатор через ProModelitem. Но там также сказано, что этот идентификатор остается неизменным только для объектов внутри модели (те что внутри part/assembly), но не для самой модели. И так оно на самом деле получается. Но мне нужен именно идентификатор для part/assembly. Как мне такой заполучить? Подскажите, пожалуйста.

Еще у меня есть вопрос по поводу солидов. Я так понимаю, что в Creo понятия солид как в NX нет. Иными словами, есть ли у меня возможность перебрать отдельные солиды и получить для них осмысленные имена? Потому что пока я сливаю весь part как одно целое.

Есть и еще один вопросик. Пока совсем не приоритетный. Можно ли легко и безболезненно узнать является ли данный элемент/объект вставкой какого-либо прототипа? В NX это довольно просто выясняется.

Но больше всего интересует вопрос про ID для part/assembly.

Заранее спасибо!

Ссылка на сообщение
Поделиться на других сайтах


Может ProMdlIdGet ?

Вообще, несколько сумбурный вопрос.. В разных сессиях ПроЕ модели (детали или сборки) могут иметь разные Session ID, в зависимости от последовательности их загрузки в память.

А что за плагинчик, если не секрет?

Ссылка на сообщение
Поделиться на других сайтах

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

ProMdlIdGet не катит. Он выдает именно эти самые sessionID, которые могут меняться. В NX-е, например, тоже на поверхности валяются sessionID, но можно добраться и до acrossSessionID. Наверняка ведь как-то можно, раз для объектов, которые входят в состав part/assembly это получается. И зачем они так извратились в Creo?

Ссылка на сообщение
Поделиться на других сайтах

Не меняются между сессиями имена деталей/сборок (файлов) - можно по ним ориентироваться..

А acrossSessionID - это что такое?

Ссылка на сообщение
Поделиться на других сайтах

mannyz

Действительно, странно. Хотя если до этого вы работали только в UG , то это вполне объяснимо. Так как базовая идеология и структура файлов отличается в принципе. Сходную организацию, еще имеет T-flex.

У деталей и сборок всегда остается неизменным имя файла (Оно же отображается в дереве) (без путей и расширений). Модель можно вызывать только по имени, иногда правда нужно и расширение, но его можно узнать по типу.

В ПроЕ нет многотела. Тело всегда одно, может быть только многообъемность (несколько не связанных между собой объемов).

Про прототип не совсем понятно, хотя похоже имеется в виду механизм наследования, когда в деталь втягивается другая ассоциативная (в прямом направлении). Наверняка это можно определить, но на память не скажу...

П.к. Между ПроЕ и UG есть возможность прямого обмена геометрией с помощью ATB, для совместной разработки изделий в двух системах...

Ссылка на сообщение
Поделиться на других сайтах

П.к. Между ПроЕ и UG есть возможность прямого обмена геометрией с помощью ATB, для совместной разработки изделий в двух системах...

(извините за небольшое отступление от темы)

Ruslan, а можно поподробнее? Собственно, меня интересует возможность передавать из Прое в NX детали для мех.обработки таким образом, чтобы в случае последующих изменений детали в ПроЕ безболезненно менялась мех.обработка в NX.

Ссылка на сообщение
Поделиться на других сайтах

А acrossSessionID - это что такое?

acrossSessionID - это я так назвал id-шники объектов, которые остаются неизменными между сессиями запуска ProE.

На самом деле я натупил вчера. Чтобы добраться в сборке до подсборок или подпартов, я перебираю feature в PRO_MDL_ASSEMBLY и рассматриваю только фичи с типом PRO_FEAT_COMPONENT, которые как раз таки и представляют из себя либо part, либо assy. А ID такой фичи мне известен, и он остается неизменным между сессиями. Только этот ID-шник уникален в рамках своей родительской модели, а не в рамках top-level модели (или все модели). Поэтому чтобы получить уникальные ID в рамках всей модели, буду склеивать ID-шники всех родителей объекта через точку типа "xx.yyy.zz". Хотелось бы, конечно, чтобы ID выражался одной цифрой, но да ладно.

У деталей и сборок всегда остается неизменным имя файла (Оно же отображается в дереве) (без путей и расширений). Модель можно вызывать только по имени, иногда правда нужно и расширение, но его можно узнать по типу.

Не меняются между сессиями имена деталей/сборок (файлов) - можно по ним ориентироваться..

Да, но тут есть подводные камни. Например, я могу в сборке из двух одинаковых цилиндров (каждый из которых это PART) только в одном из них сделать дырку. По сути это уже разные PART-ы, но, если смотреть только на имя файла, они будут по-прежнему близнецами. Или цвет поменять у одного из них.

В ПроЕ нет многотела. Тело всегда одно, может быть только многообъемность (несколько не связанных между собой объемов).

Я уже нащупал это (многообъемность). Но насколько я понял, взять и узнать массу каждого объема мы не можем. Или все-таки можем?

Про прототип не совсем понятно, хотя похоже имеется в виду механизм наследования, когда в деталь втягивается другая ассоциативная (в прямом направлении). Наверняка это можно определить, но на память не скажу...

Честно сказать, я не совсем понял, что значит ассоциативная деталь. Дело в том, что я совсем не работаю в ProE. Но могу пояснить, что такое прототип.

Здесь все просто. Мы создали файл с PART-ом в виде цилиндра. Потом создали сборку, в которую поместили два или три экземпляра цилиндра из предыдущего файла. Таким образом, у нас есть файл с цилиндром - это прототип, и файл со сборкой, в которой есть вхождения (или можно назвать ссылки) этого прототипа. В NX-е в этом смысле все просто.

Всем спасибо, для меня кое-что прояснилось. Но хочется услышать дальнейшие комментарии насчет прототипов и многообъемности.

Ссылка на сообщение
Поделиться на других сайтах

По сути это уже разные PART-ы, но, если смотреть только на имя файла, они будут по-прежнему близнецами. Или цвет поменять у одного из них.

Обработка в сборке? У каждого компонента сборки есть идентификатор элемента, уникальный для этой сборки. Однако если имена совпадают, то при открытии модели, геометрия будет одна и таже. То есть отдельно с дыркой и без дырки одну и туже модель иметь нельзя.

Я уже нащупал это (многообъемность). Но насколько я понял, взять и узнать массу каждого объема мы не можем. Или все-таки можем?

Через API маловероятно... В ПроЕ не принято моделировать несколько деталей внутри модели детали, так как нет инструментария. Сборка происходит только в модели сборки (другой файл с другим расширением.

В NX-е в этом смысле все просто

Просто с вашей точки зрения, С нашей же слишком мудрено.

Деталь, есть деталь. Ее можно вставлять в сборку столько раз сколько нужно. Но изменения в детали отразятся везде, на всех компонентах. Если в сборке вам нужны три похожие детали, то нужно создавать исполнения детали (естественно у них будут свои уникальные имена).

Есть еще такое понятие, как шаблон (заготовка), но думаю это не ваш случай...

Механизм же наследования будет более близок к тому что вы хотите: В модель детали втягивается другая деталь (прототип) и над ней уже можно делать все что нужно. Причем при изменении прототипа, это отразится и на связанной детали, но не наоборот.

Ссылка на сообщение
Поделиться на других сайтах

Ruslan, а можно поподробнее? Собственно, меня интересует возможность передавать из Прое в NX детали для мех.обработки таким образом, чтобы в случае последующих изменений детали в ПроЕ безболезненно менялась мех.обработка в NX.

Сам я этой технологией не пользовался, не было возможности. да и не все системы поддерживают двухстороннюю возможность работы с ассоциативными данными.

Также в наличии должны быть обе системы либо на одной машине, либо по сети через сервер (работать). Ну и пару опций настроить, плюс переменные среды.

И при прямой передачи, есть требования по версиям обоих продуктов...

п.к. В справке ПроЕ по ATB, конечно не много информации, но думаю для настройки хватит (About ATB-enabled Unigraphics)...

Ссылка на сообщение
Поделиться на других сайтах

Еще раз здравствуйте!

Хотел задать еще пару вопросов, но на неделе не срослось.

Обработка в сборке? У каждого компонента сборки есть идентификатор элемента, уникальный для этой сборки. Однако если имена совпадают, то при открытии модели, геометрия будет одна и таже. То есть отдельно с дыркой и без дырки одну и туже модель иметь нельзя.

Может быть, я не правильно выразился, но я имел в виду то, что изображено на приложенном мною рисунке. Есть две вставки сборки SLIDER_CRANK.ASM. Исходно SLIDER_CRANK.ASM представляет из себя некий кривошипный механизм и прилепленный сбоку цилиндр (этот цилиндр входит в состав одной из .PRT-деталей). Далее в самой сборке я делаю дырку в одном из вставленном SLIDER_CRANK.ASM. Далее у другого SLIDER_CRANK.ASM я меняю цвет цилиндра на красный (на самом деле можно поменять цвет не всего тела, а выборочно по граням). Вот, что я понимаю под обработкой в сборке. И это не фотошоп )).

post-32063-1347194798_thumb.png

В связи с этим у меня и были вопросы по поводу ссылок, шаблонов, прототипов. В NX-е мы можем различить две подобные ситуации: жесткое изменение с проделыванием дырки - тогда мы уже не можем ссылаться на исходную SLIDER_CRANK.ASM как на прототип и использовать какие-либо ее свойства. Например, фасетную модель или массу; и легкое изменение цвета - фасетная модель таже, но цвет другой.

Есть еще такое понятие, как шаблон (заготовка), но думаю это не ваш случай...

Механизм же наследования будет более близок к тому что вы хотите: В модель детали втягивается другая деталь (прототип) и над ней уже можно делать все что нужно. Причем при изменении прототипа, это отразится и на связанной детали, но не наоборот.

Скажите, вот этот механизм наследования похож на то, что имеется в NX? И этот механизм доступен только для файлов типа PRT?

И еще у меня есть куча связанных вопросов.

Function ProPartTessellate

Description

Returns a tessellation (also called a triangulation) of each surface of the specified part. For parts, acts on all surfaces. For assemblies, acts only on surfaces of the assembly, not components.

Данную функцию я использую, чтобы получить фасетную модель для PRT-файла. Исходя из ее описания, особенно про часть о assemblies, можно сделать вывод, что в .ASM-сборках мы можем помимо вставки компонентов создавать какие-либо тела, как если бы это был .PRT файл. Скажите, пожалуйста, так ли это? Потому что сколько я ни пробовал - у меня ничегошеньки не получалось. Нарисовать эскиз получается. Но, допустим, применение операции вытягивания к нему оставляет пустоту после себя. И если мы все-таки можем рисовать цилиндры на уровне сборки, то можем ли мы получить их массу отдельно от массы вставленных компонентов?

Кажется, все что хотел, спросил. С нетерпением жду ответов, комментариев и т.п.

Всем удачных выходных! Следующих ))

Ссылка на сообщение
Поделиться на других сайтах

получить фасетную модель для PRT-файла

Зачем нужна фасетная модель? Фасеты - это сплошной геморой. Лучше работать с поверхностями.

в .ASM-сборках мы можем помимо вставки компонентов создавать какие-либо тела, как если бы это был .PRT файл.

НЕТ Вывод неправильный. В сборке можно создавать сборочные операции, но это или поверхности или ВЫРЕЗЫ (или опорные элементы). Никаких твёрдых тел в самой сборке создавать нельзя. Потому что любое твёрдое тело - это какая-то деталь, и "просто так" в сборке оно существовать не может. Соответственно нужно сделать файл детали и в нём творить твёрдое тело.

Крайне неверно подходить к работе в ПроЕ с представлениями о работе в NX. Это РАЗАНЫЕ системы, у них РАЗНЫЕ методы и зачатую РАЗНАЯ идеология.

Ссылка на сообщение
Поделиться на других сайтах

Далее в самой сборке я делаю дырку в одном из вставленном SLIDER_CRANK.ASM. Далее у другого SLIDER_CRANK.ASM я меняю цвет цилиндра на красный (на самом деле можно поменять цвет не всего тела, а выборочно по граням). Вот, что я понимаю под обработкой в сборке. И это не фотошоп )).

Дело в том что эта дырка, эта сборочная операция выреза и хранится она в той сборке, где была создана. А сами модели при этом не меняются. Именно по этому сборочная операция с добавлением тела не доступна.

По умолчанию в дереве сборки элементы не отображаются...

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

И этот механизм доступен только для файлов типа PRT?

Да, только детали, для сборок как бы смысла нет.

И если мы все-таки можем рисовать цилиндры на уровне сборки, то можем ли мы получить их массу отдельно от массы вставленных компонентов?

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

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

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • jtok
      Он сильно зависит от марки PP, от расчетной температуры и от расчетного срока службы (количества циклов нагружения). Поищите стандарт DVS 2205, части 1 и 2. В нем есть номограммы долговременной прочности. Он на немецком, но ничего лучше нет. Номограммы эти приведены по ссылке, внизу страницы, раздел "Список приложений".  Например, диаграмма для PP type 1 по ссылке: В оригинале же выглядят они вот так (для PP type 1): Также был древний документ на русском по этой теме, прицеплен к сообщению. _raschet_emkosti DVS 2205-2.pdf
    • Andrey_kzn
      - тут возможно смысл сообщения в том, что оси не синхронизированы, только вот зачем синхронизировать  оси X и Y не понятно. В случае двух шпинделей например,  coupled будет означать синхронизацию.
    • niagara39
      Правильно ХУ на этом станке не перпендекулярны. Тормоз оси У включен постоянно, отключается только при перемещении самой оси У. Координаты не  меняются... Знать бы что за параметры, пока ничего подобного не нашли
    • nicomed
      Поднял старые записи. Из того что было максимально похоже на то, что можно было назвать "получалось" :   Самому не совсем понятно поведение СкетчМенеджера при отрисовке линии от координат 0,0,0 - частенько слетает в произвольное место на виде. 
    • maxx2000
      на втором  скрине PLC сообщает что-то типа "старт программы запрещён потому что оси ХУ не связаны". Возможно станок в режиме точения должен заблокировать перемещение У, включить тормоз или что-то ещё для произвольного смещения под нагрузкой. Возможно косяк в тексте программы.
    • maxx2000
      @sneg0vik как это? Если ХУ не перпендикулярны то это уже не У, а скажем ось В. Нет, конечно в теории можно построить станок с неперпендикулярными ХУ. Вопрос зачем? Gildemeister CTX 420 это же токарно-фрезерный с осью У
    • sneg0vik
      На станке ось "X" является наклонной по отношению к оси "Y" (т. е. они не перпендикулярны). Поэтому надо полагать (учитывая текст ошибки) у вас отключена связь оси "Y" с осью "X".   Проверьте меняются ли координаты оси "X", когда вы двигаете ось "Y". И наоборот. Если - нет, то ищите как включить (наверное через параметры) взаимосвязь оси "Y" с осью "X".
    • ДОБРЯК
      Если ваш Заказчик и такую работу примет, то необходимо в шпоночное отверстие добавить и массу воды. Примерно 1/4 от той массы которую вы будете добавлять.  Да и еще и не забыть добавить момент инерции от воды.
    • Soprin
      В функции MOVE по F7.3 должно же из R270 переносить в R278?
    • niagara39
      Причина все еще не найдена... Но заметил, что сразу после включения в меню диагностики появляется следующее предупреждающее сообщение: 10155 M: Y-axis: Y-axis and X-axis not coupled , но причина его появления и его смысл неизвестны
×
×
  • Создать...