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

Block UI Styler


Closius

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

Здравствуйте.

 

Не подскажете как создать меню выбора поверхности типа CAEFace в блок стайлере?

 

Ничего не помогает.. Даже когда просто создаю меню общего выбора объекта, то CAEFace (Polygon Face) не выбирается.. Посредством кода выбирать и работать с такой поверхностью я смог, вот сниппет (Java):

Selection.MaskTriple mask[] = { new Selection.MaskTriple(
        UFConstants.UF_caegeom_type, 0,
        UFConstants.UF_caegeom_face_subtype ) };

    	Selection.SelectTaggedObjectData selObj = theUI.selectionManager()
        .selectTaggedObject(prompt, "Select an Face",
                Selection.SelectionScope.ANY_IN_ASSEMBLY,
                Selection.SelectionAction.CLEAR_AND_ENABLE_SPECIFIC,
                false, false, mask);
Ссылка на сообщение
Поделиться на других сайтах


Сделал ) добавил маску выбора для общего выбора объекта в код .java файла UI Styler'a.

 public void initialize() throws NXException, RemoteException
    {
        try
        {
            selection0 = (nxopen.blockstyler.SelectObject)theDialog.topBlock().findBlock("selection0");
            Selection.MaskTriple mask[] = { new Selection.MaskTriple(
                    UFConstants.UF_caegeom_type, 0,
                    UFConstants.UF_caegeom_face_subtype ) };
            selection0.setSelectionFilter(Selection.SelectionAction.CLEAR_AND_ENABLE_SPECIFIC, mask);
Ссылка на сообщение
Поделиться на других сайтах
  • 4 недели спустя...

Добрый день! У меня вопрос при работе с block UI Styler. Использую в диалоге edge_select0, необходимо получить tag кривой, пишу в коде следующее:

....... :apply_cb()

{tag_t x;

 PropertyList*  edgeSelectProps = edge_select0->GetProperties();
 std::vector<NXOpen::TaggedObject *> edges = edgeSelectProps->GetTaggedObjectVector("SelectedObjects");
 delete edgeSelectProps;
 edgeSelectProps = NULL;
 NXOpen::Edge* selectedEdge = dynamic_cast<NXOpen::Edge*>(edges[0]);
 tedge = selectedEdge->GetTag();
или
 Curve *curva(dynamic_cast<Curve *>(NXOpen::NXObjectManager::Get(edge_select01->GetProperties()->GetTaggedObjectVector("SelectedObjects").at(0)->GetTag())));
tedge = curva->GetTag(); 
.......
Все компилируется без ошибок. Но во время выполнения программы при получении GetTag() выходит ошибка Block Styler: Use askUserMessage() or askSyslogMessage(). Данная ошибка выходит при попытке получения tag любого "SelectedObjects". В чем может быть моя ошибка?
Ссылка на сообщение
Поделиться на других сайтах

Попробуйте не приводить к нужным типам через dynamic_cast, а посмотреть tag получаемого TaggedObject. Ну и проверка на null.

 

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

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

Спасибо за помошь! Я еще порылась в инете и оказывается надо  устанавливать параметр SECURE_SCL=0 в настройках препроцессора: #define _SECURE_SCL 0  Теперь заработало.

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

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

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

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

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

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

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

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

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

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

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




×
×
  • Создать...