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

NX Open Block Styler -> элементы выбора (С++)


Chaot

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

День добрый.

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

в Block Styler создается диалог для выбора нескольких кривых. Собственно для выбора используется элемент CurveCollector.

В коде для этого диалога, естественно, нужно что-то делать с выбранными кривыми, но вытащить их из CurveSelector мне так и не удалось. Согласно документации, для этого нужно использовать функцию GetTaggedObjectVector("SelectedObjects"), но когда код доходит до использования возвращаемого ею вектора (хоть вызов size() ), NX вылетает без каких-либо сообщений об ошибках или чего-либо еще.

Дойдя до curves.size() приложение запарывается:

PropertyList* properties = circleSelector->GetProperties();

vector<NXOpen::TaggedObject*, std::allocator<NXOpen::TaggedObject*>> curves = properties->GetTaggedObjectVector("SelectedObjects");

concentricAssConstraint::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, "Here");

if(curves.size() < 2)

{

и т.д.

Прошу помощи - может кто-нибудь использовал Block Styler в связке с c++.

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


С большой вероятностью проблема в stl :lighten:

Для почти гарантированного bugless кода для NX с участием Standard Template Library могу посоветовать следующие пункты:

1. Создавайте ваш С++ проект при помощи соответствующих визардов, поставляемых с версией NX. Это уберегает от 99% ошибок.

2. Если используется STL (std::vector / std::set / std::string ... etc) - собирайте проект только в Release конфигурации.

3. Поверьте, установлен ли параметр SECURE_SCL=0 в настройках препроцессора.

ЗЫ Еще подозрение вызывает явное указание аллокатора для вектора (vector<NXOpen::TaggedObject*, std::allocator<NXOpen::TaggedObject*>>) ... :g: Можно емнип его не указывать (std::vector<NXOpen::TaggedObject*> my_cool_vector = properties->...).

Regardzzz...

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

С большой вероятностью проблема в stl :lighten:

Для почти гарантированного bugless кода для NX с участием Standard Template Library могу посоветовать следующие пункты:

1. Создавайте ваш С++ проект при помощи соответствующих визардов, поставляемых с версией NX. Это уберегает от 99% ошибок.

2. Если используется STL (std::vector / std::set / std::string ... etc) - собирайте проект только в Release конфигурации.

3. Поверьте, установлен ли параметр SECURE_SCL=0 в настройках препроцессора.

ЗЫ Еще подозрение вызывает явное указание аллокатора для вектора (vector<NXOpen::TaggedObject*, std::allocator<NXOpen::TaggedObject*>>) ... :g: Можно емнип его не указывать (std::vector<NXOpen::TaggedObject*> my_cool_vector = properties->...).

Regardzzz...

Визарды использую, правда незначительно подправленные руками, так как визарды для 2008й студии, а используется 2010я.

Что до явного указания аллокатора, то и без него и с ним одна фигня.

А теперь самое вкусное: только что попробовал забилдить релиз и все заработало.

Так что огромное вам спасибо ;)

Изменено пользователем Chaot
Ссылка на сообщение
Поделиться на других сайтах

Наврал - не помогло. Secure_SCL = 0 стоит.

Билдим в релиз. Все равно вылетает.

Перестал выпадать на запросе size() полученного вектора - удалось узнать, что размеры запредельные. То есть вектор инициализируется какой-то фигней.

Изменено пользователем Chaot
Ссылка на сообщение
Поделиться на других сайтах

Хм....

так как визарды для 2008й студии, а используется 2010я

Тогда <noindex> вам сюда </noindex>

Regardzzz ...

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

Спасибо.

Я добился того, чтобы возвращался вектор хоть сколько-то похожий на корректный (vector.size() == количеству выбранного селектором).

Добился благодаря вашему последнему ответу - пришлось проставить поверх 2010й студии компилятор от 2008й.

Огромное спасибо - буду биться дальше.)

Изменено пользователем Chaot
Ссылка на сообщение
Поделиться на других сайтах

2 Chaot

Надо убедиться, что MSVS 2008 подходит для вашей версии NX :) , например для NX7.5 надо ставить Visual Studio 2008 SP1

Оно может без SP1 и не "выстрелит", но это обычно неправильный путь и лучше по чистому ставить то, что рекомендовано :)

PS Вот ещё вспомнил: надо внимательно смотреть, ЧТО стандартный визард NXOpen пихает в

С/C++ -> Code Generation -> Runtime Library

(для NX75 это MultiThreaded Dll /MD).

Если этот параметр неправильно выставить при миграции старых кодов (он рулит подключением crt), то возможны мегавзрывы при передаче указателя или копировании

объекта через "границу" dll (а в нашем случае мы как раз вектор через "границу" библиотеки и передаем) ... точнее не при передаче, а при уничтожении объекта на нашей стороне + <noindex>check this</noindex>

Regardzzz ...

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

2 Chaot

Надо убедиться, что MSVS 2008 подходит для вашей версии NX :) , например для NX7.5 надо ставить Visual Studio 2008 SP1

Оно может без SP1 и не "выстрелит", но это обычно неправильный путь и лучше по чистому ставить то, что рекомендовано :)

PS Вот ещё вспомнил: надо внимательно смотреть, ЧТО стандартный визард NXOpen пихает в

С/C++ -> Code Generation -> Runtime Library

(для NX75 это MultiThreaded Dll /MD).

Если этот параметр неправильно выставить при миграции старых кодов (он рулит подключением crt), то возможны мегавзрывы при передаче указателя или копировании

объекта через "границу" dll (а в нашем случае мы как раз вектор через "границу" библиотеки и передаем) ... точнее не при передаче, а при уничтожении объекта на нашей стороне + <noindex>check this</noindex>

Regardzzz ...

NX - 7.5, студия - 8я SP1. В этом смысле все ок.

Визард ставит <MultiThreaded Dll - о том, что это надо проверять я в доках вычитывал.)

За ссылку спасибо - почитаю.

Теперь вот пытаюсь разобраться с работой самих блоков (UI Blocks). Все никак у меня не получается приспособить хоть какой-нибудь блок для выбора пары ребер от разных компонентов сборки.

Непрекращающаяся война)

Update:

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

Изменено пользователем Chaot
Ссылка на сообщение
Поделиться на других сайтах

Теперь вот пытаюсь разобраться с работой самих блоков (UI Blocks). Все никак у меня не получается приспособить хоть какой-нибудь блок для выбора пары ребер от разных компонентов сборки.

Непрекращающаяся война)

Если вы работаете в компании с действующей поддержкой от Siemens PLM, то можно заказать курс

обучения по NXOpen и я с удовольствием приеду и расскажу про все прелести и грабли программинга

под NX. А с учетом того, что вы кодите в cpp - это будет вдвойне круче, так как я сам заядлый cpp-шник :cool:

Regardzzz ...

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

Если вы работаете в компании с действующей поддержкой от Siemens PLM, то можно заказать курс

обучения по NXOpen и я с удовольствием приеду и расскажу про все прелести и грабли программинга

под NX. А с учетом того, что вы кодите в cpp - это будет вдвойне круче, так как я сам заядлый cpp-шник :cool:

Regardzzz ...

Да косяк как раз в том, что не работаю я в такой компании)

Поэтому решения проблем, беспрестанно возникающих в ходе попыток научиться работать с NXOpen, приходится либо вычленять из док, либо искать по кусочкам по форумам и т.п.

Ну или вас забесплатно мучить.)

Тут вот очередная проблема всплыла - рыщу.

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

Да косяк как раз в том, что не работаю я в такой компании)

Поэтому решения проблем, беспрестанно возникающих в ходе попыток научиться работать с NXOpen, приходится либо вычленять из док, либо искать по кусочкам по форумам и т.п.

Метод "научного" поиска выручает всегда :) Сорри за :poster_offtopic:

Ссылка на сообщение
Поделиться на других сайтах
  • 5 месяцев спустя...

Добрый день! Не смотря на дату создания темы, я готов помочь решить вам вашу задачу, если конечно это актуально =) Пишите в ЛС или на почту, выложу решение на форуме.

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

Добрый день! Не смотря на дату создания темы, я готов помочь решить вам вашу задачу, если конечно это актуально =) Пишите в ЛС или на почту, выложу решение на форуме.

Спасибо за участие - большинство из возникших с NX Open проблем уже решено или забыто) Изменено пользователем Chaot
Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • soldo
      @maxx2000 Спасибо за развернутый ответ, очень помогли! @ak762 Благодарю, хороший вариант.
    • ak762
      holder - держатель, и так как узел используется для закрепления инструмента, в адаптированном на русский я бы использовал резцедержатель  в конкретном случае похоже sleeve эквивалент collet т.е. цанга получается 5 spindle sleeve holder = 5-ти местный цанговый держатель/резцедержатель
    • ДОБРЯК
      А что еще остается делать. В Ансис точно частоты будут разные, даже не сомневайтесь...
    • ДОБРЯК
      Кроме собственных чисел нужно еще и собственные вектора найти. Вы даже не понимаете задачи. Надо решить квадратное уравнение, чтобы найти два собственных числа и вектора для задачи любой размерности. Такой глупости я еще не слышал. Поэтому и смеюсь над вашими знаниями, которые вы еще в детском саду получили. И этим гордитесь... :=)
    • maxx2000
      прямо по чертежу 1. инструмент 2.гайка цангового патрона типа ER 3. хвостовик цангового патрона 4 многоместный держатель 5. Фиксирующие винты   Открутите гайку цангового патрона и установите в неё цангу нужного размера, накрутите на место; Установите в цангу инструмент и затяните гайку цангового патрона; Ослабьте крепёжные винты на многоместном держателе и отрегулируйте положение инструмента; Затяните фиксирующие винты;
    • Ander
    • ak762
      я бы попросил у заказчика дать конкретную марку применяемого материала и использовать эти данные для расчета судя по данным с MatWeb https://www.matweb.com/search/DataSheet.aspx?MatGUID=08fb0f47ef7e454fbf7092517b2264b2 там разброс механических свойств материала существенный включая зависимость от наполнителя и способа изготовления    
    • Jesse
      потестил со смещённым колесом.. Если коротко, то печаль)) В модальнике прикладываю вращение в разные сторона, частота та же. Пробовал даже "гнуть в разные стороны" - извлекать деформированные модели, когда уск. своб. падения направлено вверх и вниз. В модальниках частота та же, без изменения.. @Борман@AlexKazну что ж, если выкрутиться никак, будем осваивать Ansys. Чё ещё остаётся делать?!)))) Вроде какие-то видосики есть на ютюбе. Спс за овтеты)
    • soldo
      Приветствую всех! Часто искала информацию на форуме, связанную с переводом, но кое-что не могу найти и хочу попросить о помощи. Я перевожу инструкцию для токарного автомата продольного точения и не очень хорошо понимаю все, что связано с креплением инструмента к станку. Конкретно меня интересуют следующие вопросы. Станок оснащен разными инструментальными блоками, есть суппорт с резцами, блок с инструментами для поперечного сверления и т.д.  И есть один блок, который на корявом английском называется 5 spindle sleeve holder, На этом блоке 5 шпинделей и на них можно закрепить инструмент для сверления, нарезания резьбы и растачивания. В названии этого блока фигурируют какие-то втулки (sleeve), предполагаю, что это патроны? Вот, что примерно написано в инструкции по поводу установки инструмента в этом блоке: (1) Ослабьте стопорный винт ② и установите режущий инструмент ① на втулку ③. (2) Затяните стопорный винт ② и закрепите режущий инструмент ① на втулке ③. (3) Ослабьте резьбу ⑤ и вставьте втулку ③ в блок ④ . (4) Переместите втулку ③ в направлении длины и отрегулируйте прямоугольное положение режущего инструмента ①. (5) После регулировки затяните резьбу ⑤ и зафиксируйте втулку ③. Мой вопрос: как можно назвать этот блок и что это за "втулка"?  Прикрепляю ссылку, на ней скриншоты из инструкции с общим видом инструментальной системы, 5-шпиндельного блока и соответствующих инструментов для сверления. https://imgur.com/a/fpBgmLA
    • Snake 60
      @alek77  У меня норм, просто надо соблюсти условия: 1) масштаб вида 1:1 2) масштаб листа 2:1 почему такие условия хз.
×
×
  • Создать...