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 3654 0

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

admin 楼主

2017-10-25 16:33:48

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

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

x
关于NX二次开发中选择对象mask triple的详细讲解
+ U2 h' a: ]2 U" c& M很多人对这个可能不是太了解,在NX中选择对象,是通过这个进行过滤的 mask triple,你可以翻译成掩码三元组。
! v3 r7 U9 z$ s/ `1 O) a& Y如果您需要更多地控制要选择的对象类型,可以在Selection对象上使用其他SelectTaggedObject重载方法。 这些方法使用掩码三元组来特定要选择的对象的类型。 Mask三元组是一个名为MaskTriple的结构中的三个整数。 该结构的部分是称为Type,Subtype和SolidBodySubtype的整数。 NXOpen.UF.UFConstants类包含NX Open中使用的标记整数常量,其中一些常量是掩码的部分。 通常,您设置类型Type以选择特定类型的对象,而Subtype则选择具有特定属性的该类型的对象。 掩码三元组中的类型和子类型通常对应于对象的类型和子类型。 除了实体几何类型和其他特殊对象类型之外,SolidBodySubtype通常为0,它代表另一个细节子类型。
  E# T4 Q3 ~' r3 r% v一些常见的类型和子类型如下:/ a. j% E" |7 l" i
QQ截图20171025161410.png * a% u. _& _0 E4 S# @( C6 w
如果要选择特定类型的所有对象,可以使用特殊值UF_all_subtype作为掩码三重的子类型。
$ \. J7 r0 E* P% Z: ~3 D实体或片体(体,面和边)的元素的三元组使用UF_solid_type类型,子类型为0,并使用SolidBodyType来指定几何类型。 下表列出了体或片体上不同类型几何体的一些SolidBodySubtype值。
3 F! L: f7 o4 G% P/ L0 e: M# W' v
+ i  w' |" @% \/ f- {8 U/ P QQ截图20171025161432.png
5 C2 }0 h1 P9 f' I" s0 \& `! r# s+ P

" K, X! E9 U( _选择不外乎通过SelectTaggedObject(单选) SelectTaggedObjects(多选)或者block styler的选择类型进行选择。所有的内容里面都有相关类型的限定功能。
8 i3 \# I1 \4 t8 m. E
9 t2 F- q+ k5 q* u
) h4 C8 P  M4 e% U4 U1 N8 ?( m% W
QQ截图20171025162656.png
" a1 p) N6 Y; S) O5 w8 r# I4 i1 O" F

- l  W* j2 ], u8 P& c! X对于block UI的选取,只要通过控件的block ID 直接设置 SetSelectionFilter 或者通过AddFilter 方法实现,注意这里面的mask triples 或者type subtype solidbodytype都是我们前面提到的,直接赋值即可。( {& Q1 G) j% e+ V

& m' |* D* }/ R7 _1 ^9 c4 R  E* B% m) G' h2 s5 d
SetSelectionFilter (NXOpen::Selection::SelectionAction maskAction, const std::vector< NXOpen::Selection::MaskTriple > &maskTriples);1 ?4 m4 Z/ `2 i! n

# W* d$ `- u( V$ b
. L  @' |! W' pAddFilter (NXOpen::BlockStyler::SelectObject::FilterType filterTypes);
. ^. j9 ?9 p9 a
1 K% d) s# @+ x! @' C; H9 e' v1 j) f4 I% l, B( O2 d3 m
AddFilter (int type, int subType, int solidBodyType);
- X+ l9 [7 P- W! k9 O/ \
+ H$ i+ p. m4 x) n; m0 Y2 i
' N! V$ W) R& m% @4 z2 ^5 O
对于单选和多选大部分都是通过SelectTaggedObject和SelectTaggedObjects的函数重载实现,方法基本都差不多,代码参考如下:
4 I' R: M' o' Z/ W* S/ Z8 H) t: E6 ^  o6 r0 z! K: Z$ ^
9 k* V5 @* u: A3 G% ]

' Q7 K$ ~& _7 I  G, B: X//------------------------------------------------------------------------------
. X, _2 C: J' A* B// Selection with mask- ?) r' l& ~4 B& `9 V' z
//------------------------------------------------------------------------------+ s1 j# C: w2 t( Q9 E$ n
TaggedObject* MyClass::select_by_mask()2 D# y8 h' }7 H: v
{: A- r, @8 B$ M0 p- ]/ ?6 I
        NXString message("Select an object by mask:");
6 O% z/ R9 v" O5 T        NXString title("Select object");
$ B( W- I  E) y6 ^8 m- g        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;1 F- ^" m- k6 j  }/ O
        Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
; c5 k$ y5 ?! W) _  ^; ]        bool include_features = 0;0 o) f3 p4 V, K8 Z# R7 N: Q+ F" d
        bool keep_highlighted = 0;
' [. Y6 @  ?8 a0 G9 ~5 D- D
$ D/ e3 E8 a' i* k! c3 `
3 [& I) N; g+ a  H
        // Define the mask triple(s), see also uf_object_types.h.- N0 G- I; V" b& J6 @6 x! _8 x$ Q
        // Uncomment or combine the desired mask triples9 f5 s! ~4 [; v8 {- M) L+ g
        std::vector<Selection::MaskTriple> maskArray(1);
1 v* [0 I; _$ S        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_solid_body_subtype, 0 ); // Bodies4 d+ r' {! d3 g2 k
        /*
, X9 ]* R& D4 Y# g5 V        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_FACE); // Faces
; C# I, f3 N7 r6 c$ \        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE); // Edges0 M5 @& @$ D# h
        maskArray[0] = Selection::MaskTriple( UF_component_type, 0, 0 ); // Components
5 {0 z% O5 h3 n2 [0 H        maskArray[0] = Selection::MaskTriple( UF_line_type, 0, 0 ); // Lines
' a: ]* N+ V, a% D3 t$ ^        maskArray[0] = Selection::MaskTriple( UF_drafting_entity_type, 0, 0 ); // Drafting objects" M: @: x  b- p: ~3 A" u
        */
( L2 `: X) N; F& I        Point3d cursor;
1 n: Z: M& G: R7 F        TaggedObject *object;
8 F% o* n6 D, G4 n1 V8 t% Y5 G( ~' x- ]& e0 \
0 T, q  ]' |3 L9 W9 @* K7 f8 X! V
        // Select objects using filter defined by maskArray triples% L  ?8 x! i+ h" ?/ T& ?" I& M
        Selection::Response res = selmgr->SelectTaggedObject(# v/ D" a: L$ }4 O# A' B
                        message, title, scope, action, include_features,
0 s" Y- T, J$ Y3 ^. D# W            keep_highlighted, maskArray, &object, &cursor );3 o# p' e% i: W1 ~

0 H( u+ x2 w  }# d4 V$ z* d

* a; u) w6 W# P: B& x. `7 \        if( res == Selection::ResponseObjectSelected )0 y8 {2 T- m0 v9 ]& A+ }0 n8 H
        {
6 f3 I: Y; j" }% F* Q& M5 e                return object;
  H  I$ T' p' p6 L) ^% l) U        }
% p* ]7 T; I& ?1 K* C        return 0;
* ~* }* L9 G- M' c}# e, n6 F  e+ g
0 o, X; a; ?& \8 z. `* ^

1 O2 m3 F% I5 e$ q8 s; V//------------------------------------------------------------------------------) o  {* k' r$ ]9 G. l1 g3 F! F- j: V
// Selection with type array) J% @  \8 H2 b) I, I: Z6 U+ ?
//------------------------------------------------------------------------------) [  b" ?& R) C: A- I8 x( H4 l
TaggedObject* MyClass::select_by_type()
. B  V$ v2 @: _7 L{' P: T8 W8 N0 B  Z6 i
        NXString message("Select an object by type:");
; G# i$ u, E7 H. Q/ Z% W        NXString title("Select object");. `. _( _6 z$ Z; M6 l5 {" i+ X: G
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;3 l  H% J6 {4 x5 E8 w% L: e+ j: I/ r
        bool keep_highlighted = 0;
/ z) V  P' ~7 P  K
+ Y3 ]% j7 j' S# R) E+ q+ G7 @& t
: C0 x1 U$ F0 G1 B8 G" |. w+ T9 m& i
        // Define type array, see Selection::SelectionType Enumeration" ]; g) `+ Y. y  E8 ~
        // Uncomment or combine the desired types
4 k1 U3 z: G6 K* D% u        std::vector<Selection::SelectionType> typeArray(1);+ ?; K8 a0 x/ n5 `; |  q/ j% R
        typeArray[0] = Selection::SelectionTypeAll;
7 k$ V. ~! z/ F7 R7 K        /*  E5 `  [; f3 b, O/ H
        typeArray[0] = Selection::SelectionTypeFeatures;
. \" `# E1 K$ k8 @- S9 X        typeArray[0] = Selection::SelectionTypeCurves;5 W3 `0 Z, r) y! O2 H# E
        typeArray[0] = Selection::SelectionTypeFaces;
" M7 p+ y* F- Q1 G; G1 a7 U        typeArray[0] = Selection::SelectionTypeEdges;/ W6 p0 L' N# M
        typeArray[0] = Selection::SelectionTypeCurvesAndEdges;
7 E0 o% M& R3 Y% N% d        */
1 I  K. f6 \0 e1 m) g+ `& `  z# p        Point3d cursor;
" _% R  q4 W( e1 B        TaggedObject *object;
# t& g- A% e+ G8 h- S( o, T& l" |1 p6 `
* n; i9 {) u# z; v6 N' [) r. f
6 g) j! w6 `# s% C3 J, w( z
        // Select objects using filter defined by type array
9 R% [: ~$ Q) A0 H0 _        Selection::Response res = selmgr->SelectTaggedObject(* A" u. o8 [3 p; ~1 L- @  g4 ?9 J
                        message, title, scope, keep_highlighted,   ]% a) x/ c- L* \5 [; I' Z
                        typeArray, &object, &cursor );9 F8 G2 C. ?: ^; g; n5 ^0 x

8 ?) p: }3 u/ @/ u8 H

' |4 C' j9 K8 e3 r9 a        if( res == Selection::ResponseObjectSelected )) H  {1 o* Z) p+ u
        {
9 D7 r3 t) O; i+ V3 X. Q- d                return object;
$ N% ~$ O; c; U: k( O4 L# v: N3 \        }/ f( K5 e+ ]: C2 J7 D
        return 0;/ h( t/ Y) F/ ?9 J+ c
}" D; _* @6 R5 F+ r7 V
; k1 Y4 T. h0 d( W! B7 F8 D7 M4 i

3 L4 ^/ d. a$ ]+ h" c//------------------------------------------------------------------------------
' h" O( l3 [# X+ \. i- y5 x( t: R// Selection any objects
# R4 ~: n9 R$ y  P) A- Z* a//------------------------------------------------------------------------------" B; K/ n/ a& t
std::vector< NXOpen::TaggedObject * > MyClass::select_any_objects()
3 Q3 o/ g. c4 [% }1 a{
9 Y! o/ \4 r5 X        NXString message("Select any objects:");
& [7 F+ Q! {0 i9 l4 o( j        NXString title("Select objects");; I) J# d1 S( v
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;  t5 |) p+ b3 q6 M3 D
        bool include_features = 0;        
8 [& }2 n) z2 p: R8 H: c        bool keep_highlighted = 0;% ~* y# T% `4 \& f9 o: d
        std::vector< NXOpen::TaggedObject * > objectArray;
1 v, Z# z- \6 f( F& N8 p
8 b, c7 Q4 q6 @' i1 }& M
9 S+ T1 [  i" H
        // Select any object array
9 o  L. {0 T. |        Selection::Response res = selmgr->SelectTaggedObjects(
( A9 Q7 ~8 V. j  D$ o+ O                        message, title, scope, include_features,
6 W+ |8 A# y: F                        keep_highlighted, objectArray );
* R2 L- A: u6 C2 N0 Z! a4 V$ D' E1 H
! u5 k: ]5 l- V4 T$ Y
+ }9 s; v6 ~# c- r7 K5 I  C
        return objectArray;
2 |3 U; ?7 X; }4 w) c. Z3 l- o( z}
) z& o4 U3 k; O; L# o* j( h* H; h. ^8 A5 s/ s7 T/ e
/ m' q+ }  ^4 b1 N0 u- F
, a% A6 P5 R7 K' C  O$ e0 r
! B! `+ g' Q6 t2 g; C9 i7 u) ~0 P, I- W

/ U: {2 g+ r) C, X1 G

2 e) U) l8 Q* d
$ O1 ?2 S! }% P9 W1 k) v
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了