找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 17262|回复: 1
打印 上一主题 下一主题

[求助] 如何编程定制NX5以上风格的选择功能

[复制链接]
跳转到指定楼层
1
发表于 2009-6-27 21:10:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
如题。就是不用使用single_dialog 和class_dialog,点击菜单出现对话框后,就能直接进行选择操作。这个是怎么做的啊。
     看了UG文档,在NXOPEN中有这么一段说明

Selection
Selection class contains methods that update the selection structure associated with the active dialog box. Some method declarations for class Selection are:
namespace NXOpen{   class Selection                 void SetSelectionMask        (          NXOpen::SelectionHandle * select /** Selection handle */,          NXOpen::Selection::SelectionAction action /** Mask action */,          const std::vector<NXOpen::Selection::MaskTriple> & mask_array /** Mask triples */        );                public: void SetSelectionCallbacks        (            NXOpen::SelectionHandle * select /** Selection handle */,            const NXOpen::Selection::FilterCallback&  filterproc /** Filter callback for additional user specific            filtering. */,            const NXOpen::Selection::SelectionCallback&  selcb /** Selection callback for application specific            processing. */        ); C++
  • To get the selection handle
    NXOpen::SelectionHandle *selectH = changeDialog->GetSelectionHandle();
  • Create selection mask array
    Dim selectionMask_array(0) As NXOpen.Selection.MaskTripleWith selectionMask_array(0).Type = NXOpen.UF.UFConstants.UF_solid_type.Subtype = NXOpen.UF.UFConstants.UF_solid_edge_subtype.SolidBodySubtype = NXOpen.UF.UFConstants.UF_UI_SEL_FEATURE_ANY_EDGEEnd With
  • Set the selection mask
    UI::GetUI()->SelectionManager()->SetSelectionMask(selectH, NXOpen::Selection::SelectionActionClearAndEnableSpecific, selectionMask_array);
  • Set selection procedures
    UI::GetUI()->SelectionManager()->SetSelectionCallbacks(selectH, make_callback(filter_cb), make_callback(sel_cb));
  • Define the filter_cb and sel_cb procedures as follows in order to register this in set selection procedure in the above step.
    int filter_cb(NXOpen::NXObject *selectedObject,                    NXOpen::Selection::MaskTriple* selectionMask_array,                    NXOpen::SelectionHandle* selectHandle){    try    {                // write your code here    }        catch (const NXOpen::NXException& ex)    {        }    return NXOpen::UIStyler:ialogStateContinueDialog;}int sel_cb(std::vector<NXOpen::NXObject *> selectedObject,                      std::vector<NXOpen::NXObject *> deselectedObjects,                      NXOpen::SelectionHandle* selectHandle){    try    {                // write your code here    }        catch (const NXOpen::NXException& ex)    {        }        return NXOpen::UIStyler:ialogStateContinueDialog;}
按照说明的设置了下,现在可以进行类型的筛选操作了,但是怎么选择目标,得到目标的TAG值?是需要用到什么函数吗?希望各位高手指点啊!
       另外小弟使用的是NX5.0,我知道6.0好像已经在BLOCK style中固化了这部分功能,但是在程序模板中看不到这些函数段。一直搞不懂是怎么实现的,在NX5中能实现吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2009-6-29 07:58:22 | 只看该作者
自己顶一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-27 16:37 , Processed in 0.039814 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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