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

NX Open API - Selected Objects (выбираемые объекты)


Entwerfer

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

Всем добрый вечер!

Создала интерфейс приложения с помощью Block UI Styler. Присутствует элемент выбора объекта в сборке:

 

 

По нажатию кнопки 'Apply' необходимо в появившемся окне вывести список выбранных объектов, получилось вывести только количество:

 

 
Список выбранных объектов и их обработку произвожу следующим образом (С++):
int CheckElement::apply_cb()
{
    int errorCode = 0;
    try
    {
		theSession->ListingWindow()->Open();
		int num = theUI->SelectionManager()->GetNumSelectedObjects();
		theSession->ListingWindow()->WriteLine("Number of selected objects: ");
		theSession->ListingWindow()->WriteLine(to_string(num));
		TaggedObject * objlist = new TaggedObject;
		CheckElement::theSession->ListingWindow()->WriteLine("Selected objects:\n");
		for (int i = 0; i < num; i++) {
			objlist = theUI->SelectionManager()->GetSelectedTaggedObject(i);	
			theSession->ListingWindow()->WriteLine("#");
		}
		delete objlist;
		objlist = NULL;
    }
    catch(exception& ex)
    {
        //---- Enter your exception handling code here -----
        errorCode = 1;
        CheckElement::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    }
    return errorCode;
}

Подскажите, пожалуйста, есть ли способ вывести список выбранных объектов в виде текста в информационном окне (ListingWindow)?

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


Можно тэг напечатать -Tag() или

GetTag (   )  

А по тэгу хэндл:

#include <uf.h>

char* handle;

handle=UF_TAG_ask_handle_of_tag(obj_tag);

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

Правильно ли я делаю?

		for (int i = 0; i < num; i++) {
			objlist = theUI->SelectionManager()->GetSelectedTaggedObject(i)	
			handle = UF_TAG_ask_handle_of_tag(objlist->Tag());
			theSession->ListingWindow()->WriteLine("#");
			theSession->ListingWindow()->WriteLine(handle);
		}

Работает через раз. Вывод получается такой:

RMAs_Unit.2 o0000010300000028

 

Я так понимаю, мы получаем идентификатор детали (тег) в контексте данной сессии. А название можно вывести, как в навигаторе сборки?

 

Для двух и более объектов приложение иногда выдает ошибку (use askUserMessage() or askSyslogMessage()). Не подскажете, в чем проблема?

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

Если выбирается компонент сборки, то можно что то типа:

#include <NXOpen/Assemblies_Component.hxx>

 

Assemblies::Component *component1;

component1 = dynamic_cast<Assemblies::ComponentAssembly *>(theUI->SelectionManager()->GetSelectedObject(i));

NXOpen::NXString name=component1->DisplayName();

 

 

А если Feature:

NXString NXOpen::Features::Feature::GetFeatureName (   )

и т.д.

 

А по ошибке - смотрите Журнал (меню Help)

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • soklakov
      вот надо что-то среднее)))   "чтобы согнуть" быстро станет "чуть-чуть" вместо тонны, когда сталь станет тоньше. но и резонанс в ветром считать не в дугу. вы для начала хоть раз еще тут появитесь. а то отвечать западло. МОжно. А 1 мм стремно. А между 1 и 2 значения не интересны. итого используйте 2 и не парьтесь расчетами.
    • Viktor2004
      скиньте пожалуйста  
    • soklakov
      типа сложно посчитать с гироскопическими эффетками? берешь формулу Рейнольдса и смотришь, что там за характерный размер. внутреннее  обтекание - диаметр трубы, внешнее обтекание - габарит. все остальное - калбировка на эксперимент с конкретной формой. не всякий резонанс смертелен. вихри мало что сломают.
    • Guhl
      Ну вы ни одного не привели, кроме собственных догадок Вам японцы черным по белому пишут. Зачем пишут? - наверное они дураки, только бумагу портят   Добротность контура это отдельная песня. Там еще скоростная компенсация имеет место. Могу скинуть инструкцию по настройке, но советскую еще. Вы, скорее всего, скажите, чтоб я выкинул эту старую книгу, ведь уже 21й век. Эх, прокоятый 21й век, век отказа от законов ТАУ 20го века и патентов. Это был сарказм.   А вообще говоря, когда-то были чпу, которые работали без единого процессора. И компенсацию радиуса умели делать и скоростную компенсацию. Это я к тому, что принципы управления не поменялись. Да, цацок стало больше, но принципы как были так и остались. И у японцев в первую очередь. Поэтому не спешите выкидывать книги. Когда отключат интернет, кроме книг ничего не будет.  
    • gudstartup
      найдите станок с полно замкнутым контуром с  люфтом в 20-30мкм и согласуйте его с параметрами с которыми он был введен в эксплуатацию вам не удастся уйти от резонанса а если будете уменьшать добротность то получите отклонение от контура более 10-20мкм а это в высокоточных оц неприемлемо еще как загудит резонанс следует из обратной связи и усиливается. неправильные выводы к сожалению. вы думаете специалисты фанук из Люксембурга не умеют настраивать привода? нет вы объясните по человечески что вам неясно -откуда ошибка берется вроде разобрались и к чему она приводит тоже.  приводит к вибрациям для кого это написано то??? A machine with large backlash may cause vibrations in a closed loop system even if it works steadily in a semi–closed loop system.  
    • Guhl
      Я, знаете ли, сторонник прозрачных объяснений. Я почитал эту главу, почитал заявку на патент и сделал такие выводы. Там все вполне понятно рассказано. Все вот эти вот контуры скорости, пи-регуляторы и тп вещь довольно дубовая и вывести их из равновесия не так уж просто, если коэффициент отношения моментов инерции подобран правильно и момент инерции ротора мотора соответствует нагрузке.  
    • maxx2000
      Тянет на Гимн, как миниум 
    • gudstartup
      когда линейка не считает считает по датчику мотора т.е. семиклосед. но растет ошибка. как же еще вам это объяснить то.... когда у вас нет люфтов tau делаете равным 0 и работаете от линейки но ошибка контура скорости это все равно суммарная ошибка датчика мотора и линейки вы же не можете и это отрицать ??? а чего его японцы отнесли к функциям подавления резонанса не знаете?? по вашему резонанс в контуре скорости на контур не влияет?? ух я уже устал...
    • Guhl
      Японцы написали вполне конкретно: Semi-closed в переходных режимах Full-closed в режиме позиционирования И в этом есть логика Потому что имея лишь линейку, вы не можете качественно компенсировать люфт Я считаю, что Dual position feedback предназначен только для компенсации люфта и контроля показаний датчиков  Также я утверждаю, что dual position feedback не может повлиять на точность позиционирования в отсутствие люфтов, путем какой-либо обработки сигналов с обоих датчиков  
    • gudstartup
      не тех которые тайвань прислал а тех которые до этог там были и превышают их значения в 10 раз
×
×
  • Создать...