Добрый вечер!

 

Создаю диалог в блок стайлере, необходим мультивыбор точек. Через стандартные фичи типа specify point все запросто получается, но только по одной, необходимо сразу выбрать несколько точек в геометрии и получить их координаты. Собственно не получается взять объекты через propertylist и getselectedobjects

BlockStyler::SuperPoint* superPoint0;// Block type: Super Point;
//...
PropertyList *p0 = superPoint0->GetProperties();
const std::vector<TaggedObject *> sp0 = superPoint0->GetSelectedObjects(); //первая попытка вынуть тэговые объекты
std::vector<TaggedObject *> sp1 = p0->GetTaggedObjectVector("SelectedObjects"); //вторая попытка вынуть...
//дальше вынимаю точку
Point * tagp0 = dynamic_cast < NXOpen::Point * > (NXOpen::NXObjectManager::Get(sp0[0]->Tag()));
Point * tagp1 = dynamic_cast < NXOpen::Point * > (NXOpen::NXObjectManager::Get(sp1[0]->Tag()));
//хочу получить 3d точку
Point3d poooint0 = tagp0->Coordinates();
Point3d poooint1 = tagp1->Coordinates();

В итоге при работе с диалогом вылезает нулевой указатель - на строчке с Point3d poooint = tagp0->Coordinates(); аналогично и с Point3d poooint = tagp1->Coordinates(); Это говорит о том, что точки не подцепляются. Начинаю проверять размер векторов sp0 и sp1 - единичка, оба метода получения тэговых объектов задают единичный размер. Даже если изначально указываю другой - переприсваивает. Соответственно в них ничего нет. Поискал на форумах, на официальных, для java, vb - никто и словом не промолвился про superpoint. Может кто-то знает что с эти блоком не так?

Поделиться сообщением


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


Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

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

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



  • Реклама

  • Сообщения