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

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

admin 楼主

2017-10-25 16:33:48

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

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

x
关于NX二次开发中选择对象mask triple的详细讲解! S% h! E# `' F
很多人对这个可能不是太了解,在NX中选择对象,是通过这个进行过滤的 mask triple,你可以翻译成掩码三元组。
- E9 Z- t$ u" q1 D& p# z! X如果您需要更多地控制要选择的对象类型,可以在Selection对象上使用其他SelectTaggedObject重载方法。 这些方法使用掩码三元组来特定要选择的对象的类型。 Mask三元组是一个名为MaskTriple的结构中的三个整数。 该结构的部分是称为Type,Subtype和SolidBodySubtype的整数。 NXOpen.UF.UFConstants类包含NX Open中使用的标记整数常量,其中一些常量是掩码的部分。 通常,您设置类型Type以选择特定类型的对象,而Subtype则选择具有特定属性的该类型的对象。 掩码三元组中的类型和子类型通常对应于对象的类型和子类型。 除了实体几何类型和其他特殊对象类型之外,SolidBodySubtype通常为0,它代表另一个细节子类型。% X* M2 |: [9 q  Z
一些常见的类型和子类型如下:
+ c2 {  W% M9 W8 x9 q8 t+ o QQ截图20171025161410.png 1 o/ `- D0 M8 s) q+ [6 M3 a2 T7 U
如果要选择特定类型的所有对象,可以使用特殊值UF_all_subtype作为掩码三重的子类型。
0 O0 D5 a& r: \/ T/ h) V8 `% ~实体或片体(体,面和边)的元素的三元组使用UF_solid_type类型,子类型为0,并使用SolidBodyType来指定几何类型。 下表列出了体或片体上不同类型几何体的一些SolidBodySubtype值。$ {3 c- u  p. d/ q
! Q- i2 M: I& |* ]* p
QQ截图20171025161432.png
/ }% E7 [: \9 q; M6 e0 q2 i% e
4 p( s7 l0 Z6 C" N; t

! M! b' x3 b- j" }0 u5 r选择不外乎通过SelectTaggedObject(单选) SelectTaggedObjects(多选)或者block styler的选择类型进行选择。所有的内容里面都有相关类型的限定功能。
" G6 [5 U5 S+ Y" y5 Z2 f; O4 Q0 r  X  D

+ u: Q& Y) h/ c, c# b QQ截图20171025162656.png
1 h. B7 x1 P, m) j4 W  A
: G8 R: W( M! R% |! W2 ]8 M

0 q2 ~5 }0 U2 s; n, `对于block UI的选取,只要通过控件的block ID 直接设置 SetSelectionFilter 或者通过AddFilter 方法实现,注意这里面的mask triples 或者type subtype solidbodytype都是我们前面提到的,直接赋值即可。
3 \- Y$ q- E: I9 i0 U# b; H1 V5 n7 M) r
/ Z1 W/ r+ U) Q& A3 v% ~7 y' W
SetSelectionFilter (NXOpen::Selection::SelectionAction maskAction, const std::vector< NXOpen::Selection::MaskTriple > &maskTriples);" c! D. u" B) N  q- ]2 ~. i: x

/ \; Y+ D6 X+ q. a8 \
. Q' }9 l$ K1 `/ N: OAddFilter (NXOpen::BlockStyler::SelectObject::FilterType filterTypes);0 N4 o! p- N/ X) z5 {" u4 [

3 \! }, l* U3 t; C; @+ K8 W
! q8 S1 x. u$ [2 ^5 i+ E# [  [6 ^AddFilter (int type, int subType, int solidBodyType);
2 h9 k& B; y  P' \+ U5 [) r# Y1 T8 T( n3 ?, @/ R5 k& i) l! w

8 k) |- `( d1 [; E. X8 P- F对于单选和多选大部分都是通过SelectTaggedObject和SelectTaggedObjects的函数重载实现,方法基本都差不多,代码参考如下:
# n6 E4 t2 p# }& R
3 Q  c$ Q$ o6 v( Y4 u% C
0 `. }8 X! {1 T* j9 ^3 q1 W3 R

0 e) M4 \! S& t! B7 t- m7 u//------------------------------------------------------------------------------
* a1 C$ E" p+ Y2 q! \) w& |: ?// Selection with mask
6 A( I# Z  Z7 s/ C/ P6 }" e4 d& `//------------------------------------------------------------------------------2 q& E" ~4 }! Y8 |+ S
TaggedObject* MyClass::select_by_mask()) H! E) F4 u, `% k' d
{
) Z; J1 T9 B4 b2 g' {9 R        NXString message("Select an object by mask:");, e" D2 ^) z6 w& Q* ~+ J- M/ X
        NXString title("Select object");
( z" [/ f9 m5 e8 U# Q) U7 Y        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;6 b, i7 X# X3 q4 t  c7 K" M9 J
        Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
2 N$ m9 V6 B" Y# X        bool include_features = 0;% U7 m& O7 |2 J8 h8 v2 e% r
        bool keep_highlighted = 0;3 l7 A8 m8 Y  o4 L8 P2 |
8 |0 G. I! P1 {$ O2 j$ M+ w
6 X; ^9 E/ ?" o/ ?& X  e
        // Define the mask triple(s), see also uf_object_types.h.( u0 `& d, U, [
        // Uncomment or combine the desired mask triples
5 b# ~) w3 v7 `6 i5 O+ E        std::vector<Selection::MaskTriple> maskArray(1);
4 L9 {" D) U) r( q& Y6 g8 V        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_solid_body_subtype, 0 ); // Bodies
* m% \# z0 H0 z: [        /*% S- d+ A8 U: C- D
        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_FACE); // Faces  f+ I" U# {( x
        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE); // Edges
. o8 Q0 {3 @1 {' q% X# l) F        maskArray[0] = Selection::MaskTriple( UF_component_type, 0, 0 ); // Components+ T4 I7 ]$ y7 N& s, n3 I6 F% L
        maskArray[0] = Selection::MaskTriple( UF_line_type, 0, 0 ); // Lines/ m' ~: T  X# n: u2 \; o
        maskArray[0] = Selection::MaskTriple( UF_drafting_entity_type, 0, 0 ); // Drafting objects
9 T! k7 w+ [+ s        */6 ~, b  c; b4 Y0 a
        Point3d cursor;# X3 O8 m' a' @6 z, y
        TaggedObject *object;" W* l4 b' s, C8 w6 X
/ ^) F1 w( w$ U; L1 z# \1 k% J$ f2 L

5 N4 b) s+ k1 s" z; ]        // Select objects using filter defined by maskArray triples
* j( K' ]7 b* j2 |! e' D        Selection::Response res = selmgr->SelectTaggedObject(
# R8 N6 a  A, |                        message, title, scope, action, include_features," b$ J0 k7 }  E6 Q  }
            keep_highlighted, maskArray, &object, &cursor );- r  U4 l' F1 N

" K8 }7 _/ @% a; K. X' K
2 [& v0 u& }3 M3 B3 X
        if( res == Selection::ResponseObjectSelected )
/ W7 s8 O* y3 o. I% ]" B        {
0 w; q9 l3 f- K# n                return object;* ^' t3 n! u. w! q4 D, |5 P
        }
5 ?, r2 O; d& a% P* U& O0 b1 D        return 0;
! O( i- c1 A" Z) v5 s" a}
& G$ }- P. J! p# F, q$ p* U2 u: d3 k, R7 k% f2 D: R
8 T% {- R  ^1 v! X
//------------------------------------------------------------------------------
8 e( @6 e8 l2 n1 Z// Selection with type array# M; J$ q' K& ]  S
//------------------------------------------------------------------------------
# a2 R7 _7 R; V- ^TaggedObject* MyClass::select_by_type()2 _) K5 D- K& |: y5 I' X' C3 N
{  g1 ~( M. m% f: X$ X2 s
        NXString message("Select an object by type:");
* d1 y9 l) D: x& N4 y# ]6 C        NXString title("Select object");, b' o; n* q* |% z& ^
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
3 |9 X5 x- S, t" Y5 @        bool keep_highlighted = 0;
' V2 W! A; Z+ i$ n* }9 L
: w  z& L) ?7 q! C) Z3 U- A

9 _5 ?' i) s1 J+ @        // Define type array, see Selection::SelectionType Enumeration
; G3 r6 \% V: q/ @: w$ j        // Uncomment or combine the desired types
1 A* i+ y% W/ c- Z0 h        std::vector<Selection::SelectionType> typeArray(1);0 U* V; R4 X9 G: i; D
        typeArray[0] = Selection::SelectionTypeAll;
3 ]  @, Z8 F5 Z, o5 z6 P  q& ?- m+ |        /*6 {; b$ E' E; J( }# i& P
        typeArray[0] = Selection::SelectionTypeFeatures;: U' c. Z) ~$ [! d
        typeArray[0] = Selection::SelectionTypeCurves;4 ?$ T! O  A% F! `3 l. ~; H
        typeArray[0] = Selection::SelectionTypeFaces;5 M2 b5 C: Q) X1 t: S! r9 A
        typeArray[0] = Selection::SelectionTypeEdges;
! D" E% |- P+ ?" y6 O  G- A        typeArray[0] = Selection::SelectionTypeCurvesAndEdges;
/ |" |5 K, c5 s' i3 P, ?5 s        */
7 K% I* z0 D! t0 x9 P+ z4 J+ k$ W        Point3d cursor;
; _* n# `: {2 J        TaggedObject *object;
& F- z3 s+ N0 T: Y# V* s9 X8 J
0 X5 o: Q) O6 N& [, B
6 C7 l: u( R! Z; [6 s4 X
        // Select objects using filter defined by type array
3 {5 t: ~. g0 {7 S        Selection::Response res = selmgr->SelectTaggedObject(
0 C" N$ O& m6 q2 f) H# t                        message, title, scope, keep_highlighted, ) s5 s2 f6 Y' k" c3 Z. k; v
                        typeArray, &object, &cursor );
6 N/ ?+ t0 q; ]9 I6 ^1 Z& r+ g6 o( M4 b1 ]4 h  m# k/ e5 z

: q" j; a% \2 U$ e" `  u/ Z4 d9 L        if( res == Selection::ResponseObjectSelected )% g4 {9 z0 V2 R4 c8 S7 k
        {7 i: ]- H* B2 a* N; a
                return object;* E7 u, D& o& r
        }
6 A9 |& n" C6 b4 t        return 0;% M& ~% E) N0 f0 v2 {
}  s9 v, |# {  ~; l. J+ F
- A8 L2 c% }) {1 t5 M
; w, @9 O: f# d& t0 @( d, I
//------------------------------------------------------------------------------
) q, ~8 X' b3 M2 i// Selection any objects% E! q1 B8 o4 n/ Z3 N7 {/ L* O% r
//------------------------------------------------------------------------------. t' v" j, N+ d- n9 W# Y0 ^
std::vector< NXOpen::TaggedObject * > MyClass::select_any_objects()5 I% G7 W6 |1 C1 s! X
{9 H3 V/ j1 b1 z! Y
        NXString message("Select any objects:");$ P9 H2 |: A9 H" r# a$ {: C1 A* D
        NXString title("Select objects");6 a5 Z1 L4 a# y& r; A
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
. N; h7 L% Z6 A) o) p0 r        bool include_features = 0;        
; f: \7 v  e% S        bool keep_highlighted = 0;* x, p* _/ b4 [: k2 T- t$ ^' k
        std::vector< NXOpen::TaggedObject * > objectArray;
  B* _2 o/ b/ ]5 Z/ V  `5 H2 v1 ~( d% n/ I# k0 `9 m+ g' y

. @  j/ V; E9 o        // Select any object array
; p* y8 v6 P1 h& N  m' Z        Selection::Response res = selmgr->SelectTaggedObjects(
. x, H9 G6 L3 q/ n5 d                        message, title, scope, include_features, 6 \9 v+ J$ B3 a4 P) Y
                        keep_highlighted, objectArray );
3 e. S2 o2 v' \: C! @
  B. j8 F, {# y9 T. U

" K% s: T& k' v9 K        return objectArray;
# j" J" y( y4 M}
2 s: I3 l( n& N: I  i3 _* N4 T: B# {# G- L
* g9 Z0 e6 a9 `& W% ~  z

" G9 L+ l( n- O* Y" u$ {( [
7 J5 L, o) Y" M; ^; f
( J- v$ F& ?- S- B. q( R
5 H0 p; P4 L  ^1 l' b) P2 @

0 t" g2 Q- p* O5 @
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了