PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[资料分享] 关于NX二次开发中选择对象mask triple的详细讲解

[复制链接]

2017-10-25 16:33:48 3650 0

admin 发表于 2017-10-25 16:33:48 |阅读模式

admin 楼主

2017-10-25 16:33:48

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

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

x
关于NX二次开发中选择对象mask triple的详细讲解
% h/ D" j9 ^* B( _4 W: [1 C很多人对这个可能不是太了解,在NX中选择对象,是通过这个进行过滤的 mask triple,你可以翻译成掩码三元组。. g. [7 G  F; L) C
如果您需要更多地控制要选择的对象类型,可以在Selection对象上使用其他SelectTaggedObject重载方法。 这些方法使用掩码三元组来特定要选择的对象的类型。 Mask三元组是一个名为MaskTriple的结构中的三个整数。 该结构的部分是称为Type,Subtype和SolidBodySubtype的整数。 NXOpen.UF.UFConstants类包含NX Open中使用的标记整数常量,其中一些常量是掩码的部分。 通常,您设置类型Type以选择特定类型的对象,而Subtype则选择具有特定属性的该类型的对象。 掩码三元组中的类型和子类型通常对应于对象的类型和子类型。 除了实体几何类型和其他特殊对象类型之外,SolidBodySubtype通常为0,它代表另一个细节子类型。
. R# _  Q0 ^0 `) O一些常见的类型和子类型如下:; ~7 @) F& `4 H: o! R- ]
QQ截图20171025161410.png
7 S" O' C# |, C2 Y0 Y- h! d0 `1 a8 T7 F0 A如果要选择特定类型的所有对象,可以使用特殊值UF_all_subtype作为掩码三重的子类型。
6 g3 W3 w7 u) ^0 G1 M实体或片体(体,面和边)的元素的三元组使用UF_solid_type类型,子类型为0,并使用SolidBodyType来指定几何类型。 下表列出了体或片体上不同类型几何体的一些SolidBodySubtype值。4 u% ?  b4 K( U, u0 ]7 l( c, s& j

# |' L( ?: e: }* j, m QQ截图20171025161432.png
' t/ o" m" m& |; |" b" s- E) R' ?/ M# D7 O, T, D' \$ F
  H3 u1 L& R( f% r1 m; V, h9 a  i/ j
选择不外乎通过SelectTaggedObject(单选) SelectTaggedObjects(多选)或者block styler的选择类型进行选择。所有的内容里面都有相关类型的限定功能。. t/ w7 _! M# ?  L* V! A! _
& z9 T. w  j+ r* }# v

0 j! l, k" E" G) n; d5 x- ~ QQ截图20171025162656.png
  Y0 ~% p( \9 o* I" c* n. y& r7 ^0 ~+ Y5 a
7 r% |3 g# L2 f! b
对于block UI的选取,只要通过控件的block ID 直接设置 SetSelectionFilter 或者通过AddFilter 方法实现,注意这里面的mask triples 或者type subtype solidbodytype都是我们前面提到的,直接赋值即可。" K/ V$ n, J2 Y" h0 Z( W: R

- f4 W; c7 w, ^/ x3 v9 x) T9 e5 D" Q! ~* O* D. ]3 Y
SetSelectionFilter (NXOpen::Selection::SelectionAction maskAction, const std::vector< NXOpen::Selection::MaskTriple > &maskTriples);, j1 a1 F4 n# \; p' \) V' \
; S/ q( q6 \* C) ]
# ~% A: x8 ~, `+ B
AddFilter (NXOpen::BlockStyler::SelectObject::FilterType filterTypes);0 U& n! o6 U) p) c
( C. E: _/ C. ]
6 w( F- j9 G/ E* v
AddFilter (int type, int subType, int solidBodyType);( M4 u; P7 K3 Y  x1 n, d

3 _" J+ M' D9 Q$ p

$ ^9 l9 q+ F" G5 c) H1 I对于单选和多选大部分都是通过SelectTaggedObject和SelectTaggedObjects的函数重载实现,方法基本都差不多,代码参考如下:$ ]8 {- C8 ?$ N- K7 K
# F$ A9 S: d/ ]  k: \

! x2 x6 d8 x  }7 k! P5 U, w

% ~- V1 M# K/ {( P//------------------------------------------------------------------------------" i; g  C* e0 s; o* p5 _+ e
// Selection with mask1 g6 [/ {7 h2 `
//------------------------------------------------------------------------------5 A- c0 `! F7 G3 f! _- \: N
TaggedObject* MyClass::select_by_mask()' g6 E( i  ]; }& S# W' M  ]3 i: q% Q
{
3 |7 Z% [7 y0 W: P2 z        NXString message("Select an object by mask:");* X  _4 D, J2 c. l' ^
        NXString title("Select object");/ H! w/ n. G) O: U% B
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;  a+ I1 o0 B4 z4 l, @- K( M3 F
        Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
# U  m4 J6 P! b. K4 `! R6 j- ~. x1 ?        bool include_features = 0;
& j1 k3 e6 z) r- V        bool keep_highlighted = 0;
+ m+ y! ?" y* }+ Q; ^* f7 @& ]5 F  c( i8 L; ]4 K2 d2 ~

) ], L; y2 @$ U- S+ a        // Define the mask triple(s), see also uf_object_types.h.
% ?  g5 Z6 Z5 ]7 O8 t; I        // Uncomment or combine the desired mask triples+ S2 ?  T" z* U& Y
        std::vector<Selection::MaskTriple> maskArray(1);  K1 e! y/ Z5 s6 }. a3 ]* e) G
        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_solid_body_subtype, 0 ); // Bodies; O. @! g, M  x1 t* r3 \* _5 v
        /*
, c$ t) q' |+ R/ j. j+ W) s2 `! }        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_FACE); // Faces; F3 Z2 ~1 M6 C/ U
        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE); // Edges8 a  Y; V$ M0 X; d" |
        maskArray[0] = Selection::MaskTriple( UF_component_type, 0, 0 ); // Components
% T+ x9 j- v: V7 |& ?) s$ Z. s        maskArray[0] = Selection::MaskTriple( UF_line_type, 0, 0 ); // Lines
) m( j2 K; E" I' z5 Y+ m        maskArray[0] = Selection::MaskTriple( UF_drafting_entity_type, 0, 0 ); // Drafting objects
; e0 c7 r; ^! O( M0 `  ^2 s/ c        */
1 q3 i0 ~7 d1 _+ k0 c, F% i% O5 L) o# o        Point3d cursor;7 Y7 p& [% V: b4 Z. O
        TaggedObject *object;9 n: W. I. d6 S# y# c
6 T* a! T5 b1 {+ g9 K$ E* A, g
9 b6 h) c) ?2 E1 S; e
        // Select objects using filter defined by maskArray triples$ T: ?3 U0 v* A9 I! }' X, x
        Selection::Response res = selmgr->SelectTaggedObject(" q; A  h, b) G* M9 R2 S
                        message, title, scope, action, include_features,
8 D  I: g3 B+ F: }8 Z: f% E' n- D            keep_highlighted, maskArray, &object, &cursor );
" `3 W% P) b2 X4 o. t" _( z" g7 k
  |4 d& m6 I9 R8 k! X

4 s5 S; q7 h0 u  E  r1 l( c+ |0 |        if( res == Selection::ResponseObjectSelected ), U6 z4 _* t: c- U, V
        {. F% C- i, f' D. m& R
                return object;
6 m& @+ z, C6 c1 D. X9 `# a        }
" ]" }% h3 a* l% H$ q9 _  |2 ?! m        return 0;
" j+ f. G$ }" Y5 {4 S+ R}! N8 I% ~( }; U

5 b7 X, K! D) o
2 A. C. v9 s  G
//------------------------------------------------------------------------------2 P! P* ?4 h* d4 e$ A
// Selection with type array
5 [' ?( H- c5 Y8 J! t5 |2 O//------------------------------------------------------------------------------
6 M8 H% m; O+ k- pTaggedObject* MyClass::select_by_type()
: ~# S- l4 Q& v  R{
# C. ]+ x8 }/ ^5 ^% h/ q  S# w5 R        NXString message("Select an object by type:");+ y/ \. w, ]+ x3 b# \
        NXString title("Select object");9 ^) D2 }5 L; T
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;# J+ I1 Z5 ~8 ^8 y' P& r
        bool keep_highlighted = 0;* Q# r' L1 U' ~6 W0 E* p
# q" |9 W2 V4 I5 W( P
# U; u8 t, E- v+ v( e
        // Define type array, see Selection::SelectionType Enumeration1 W6 {+ C3 R& X: I
        // Uncomment or combine the desired types
: E) C: Y+ b% \, Y        std::vector<Selection::SelectionType> typeArray(1);* U' R: c( M8 h1 s& ^( A5 r
        typeArray[0] = Selection::SelectionTypeAll;
3 \, L  j8 @6 u( |9 [4 h        /*
, S. Q8 x0 n; j7 e8 @; P        typeArray[0] = Selection::SelectionTypeFeatures;
( Y% S5 n& N: d        typeArray[0] = Selection::SelectionTypeCurves;
/ s9 J) h$ o( L        typeArray[0] = Selection::SelectionTypeFaces;+ e, O1 q  V' |5 N4 b5 X
        typeArray[0] = Selection::SelectionTypeEdges;
" X, F& V  P, S( C        typeArray[0] = Selection::SelectionTypeCurvesAndEdges;
4 p* T2 W& o: f& g        */4 d  u: X" `$ R6 `9 o8 B
        Point3d cursor;7 v+ s1 o0 t# V0 N# y3 R! y1 B7 h
        TaggedObject *object;$ C! m% _; h3 |" [7 |" L' S
2 A. X$ d( e& f; a0 m2 n7 ^5 t  j

& o) i5 S/ o- |" K, V9 @8 V+ T        // Select objects using filter defined by type array
) Q, L, `* j  Z3 }        Selection::Response res = selmgr->SelectTaggedObject(
) r& g; T/ D- B, C: Y! \                        message, title, scope, keep_highlighted, - a5 J4 o2 f2 e0 p; l% x2 Z, m
                        typeArray, &object, &cursor );
% h0 `5 F) E$ C  r5 X
1 k$ t  P% O5 \

( J( ^: q+ i, \# G- D        if( res == Selection::ResponseObjectSelected )% r8 u" k- Q8 Z2 ?, [( l
        {( h9 `, ]4 N7 a0 ~; j
                return object;9 K+ D, K  K% ^4 @5 f
        }
& a$ M3 A  F' T1 I  \7 L0 C5 g0 W        return 0;
) P- _; T  y& R1 V( ~* f5 f6 p' K}
" i+ i+ B% M: m. _2 K; c! C, `  ]( Y: z/ Z, e( T
/ q! m& g/ g  Q; m' L
//------------------------------------------------------------------------------
- i! f) l3 n0 w: A; s6 I8 h// Selection any objects4 g) @5 N6 n; Q; X6 G% u' K
//------------------------------------------------------------------------------
  l/ d; ^4 K; e7 c4 f; zstd::vector< NXOpen::TaggedObject * > MyClass::select_any_objects()
. C  \& ^, p! I: |{
4 M) t0 z' C$ T! E9 C        NXString message("Select any objects:");( u" W  ~% H9 ~) r( k! g: Z- {
        NXString title("Select objects");
: m9 y( O: r; D: p( u: P  I2 l( G4 ]8 ^        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;7 t2 b3 A. q/ u: p
        bool include_features = 0;        
* Q* y5 k+ e' K) N: P        bool keep_highlighted = 0;
9 [. g7 R4 h: x7 F        std::vector< NXOpen::TaggedObject * > objectArray;  h2 y# _- O  _* d& `$ V. S' P- r

8 z) w2 G& H; D$ K3 X3 A
3 K2 g, S+ C" d: H5 S2 ~% Z
        // Select any object array8 `& T# f2 ?2 _( w. ]
        Selection::Response res = selmgr->SelectTaggedObjects(
9 h' L. Y- h& S( k* m# i                        message, title, scope, include_features, 3 |  q* E' b- g
                        keep_highlighted, objectArray );6 S6 R" E* }* v- |7 r' O, S4 \  [

& U1 ~& z/ B/ y  a5 n: m
9 u4 d, o* j$ y1 Z% a/ U  O
        return objectArray;
# Y, V' q0 }" Z9 J}
6 V9 l, F# W+ u2 E( \! r* Y
) [7 E' O( N& V( c
  Y! Q! O7 F3 j0 w7 O" A' M" _2 s) t- m. h: r
: t" h6 C0 R4 R' Z- f1 L
4 b4 _! ~2 Z" Z; L" ~+ S. \& E
" w* y9 j  h0 n- @
% ]; k6 Y) P7 g( a6 B/ g5 i
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了