找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 115|回复: 3

[求助] C++二次开发, 面选择器 FaceCollector

[复制链接]

1

主题

6

回帖

63

积分

上等兵

积分
63
发表于 昨天 16:11 | 显示全部楼层 |阅读模式
各位大神们,初学二次开发,碰到问题,恳请大家指导。谢谢。

使用C++,NX2506(NX2412也试过了),使用UI创建了个面选择器对话框,编译后,调用dll的时候,
明明已经选择了一个面(UI也显示1了),可是代码返回的对象的size的大小是0,请大家指导一下。



我在initialize_cb()中给面选择器执行了
face_select00->SetLabelString("Glass surface");

update_cb()中,
showInfo("Info", label_string);
NX也能弹出窗口显示 Glass surface 字段,

可GetSelectedObjects()返回的就是size = 0,

我用GetTaggedObjectVector("SelectedObjects"),返回的也是0,

然后NX紧接着就抛异常,



  1. int Code::update_cb(NXOpen::BlockStyler::UIBlock* block) {
  2.     try {
  3.         if (block == face_select00) {
  4.             //---------Enter your code here-----------
  5.             showInfo("Info", "update by faceSelect_00");
  6.             auto label_string = face_select00->LabelString();
  7.             showInfo("Info", label_string);
  8.             std::vector<NXOpen::TaggedObject*> tagged_objects = face_select00->GetSelectedObjects();
  9.             showInfo("info", std::to_string(tagged_objects.size()).c_str());


  10.             NXOpen::BlockStyler::PropertyList* property_list = face_select00->GetProperties();
  11.             std::vector<NXOpen::TaggedObject*> tagged_object_vector = property_list->GetTaggedObjectVector("SelectedObjects");
  12.         }
  13.         else {
  14.             showInfo("update_cb()", "else!!!");
  15.         }
  16.     }
  17.     catch
  18.     (exception& ex) {
  19.         logger->error("Error in update_cb(), {}", ex.what());
  20.         showError("update_cb()", ex.what());
  21.     }
  22.     return 0;
  23. }
复制代码
选择

选择

选择

异常

异常

异常

0

主题

5

回帖

814

积分

四级士官

积分
814
发表于 昨天 16:30 | 显示全部楼层
本帖最后由 方永锐 于 2026-7-20 20:51 编辑

详细的错误信息要去日志文件里看。

  1. if(block == face_select0)
  2.         {
  3.   //---------Enter your code here-----------
  4.   std::vector<NXOpen::TaggedObject*> tagged_objects = face_select0->GetSelectedObjects();
  5.   uc1601(std::to_string(tagged_objects.size()).c_str(), 1);
  6.   NXOpen::BlockStyler::PropertyList* property_list = face_select0->GetProperties();
  7.   std::vector<NXOpen::TaggedObject*> tagged_object_vector = property_list->GetTaggedObjectVector("SelectedObjects");
  8.   uc1601(std::to_string(tagged_object_vector.size()).c_str(), 1);
  9.         }
复制代码

我在updata_cb中添加这段代码,选择面后size是能返回1的。

猜是其他地方出错了。得去日志里看才行


1

主题

6

回帖

63

积分

上等兵

积分
63
 楼主| 发表于 昨天 16:51 | 显示全部楼层
方永锐 发表于 2026-7-20 16:30
vector faces_obj = face_select0->GetSelectedObjects();

没看明白,去掉了std::吗?去掉的话没有什么意义吧,这个方法在头文件里面是这样的
public: std::vector<NXOpen::TaggedObject *> GetSelectedObjects ();

2

主题

657

回帖

5456

积分

上尉

积分
5456
发表于 昨天 19:43 | 显示全部楼层
去学点C语言基础吧   你在跟新里又调用跟新 不报错才怪
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

咨询QQ:1359218528|发帖须知!|Archiver|手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )

GMT+8, 2026-7-21 09:12

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表