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

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

admin 楼主

2017-10-25 16:33:48

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

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

x
关于NX二次开发中选择对象mask triple的详细讲解
' A/ I. X5 T8 R$ N1 f- I' D2 [很多人对这个可能不是太了解,在NX中选择对象,是通过这个进行过滤的 mask triple,你可以翻译成掩码三元组。& _* b3 i5 V) {
如果您需要更多地控制要选择的对象类型,可以在Selection对象上使用其他SelectTaggedObject重载方法。 这些方法使用掩码三元组来特定要选择的对象的类型。 Mask三元组是一个名为MaskTriple的结构中的三个整数。 该结构的部分是称为Type,Subtype和SolidBodySubtype的整数。 NXOpen.UF.UFConstants类包含NX Open中使用的标记整数常量,其中一些常量是掩码的部分。 通常,您设置类型Type以选择特定类型的对象,而Subtype则选择具有特定属性的该类型的对象。 掩码三元组中的类型和子类型通常对应于对象的类型和子类型。 除了实体几何类型和其他特殊对象类型之外,SolidBodySubtype通常为0,它代表另一个细节子类型。) N; y6 D- h" d0 e6 M% S7 q4 Y
一些常见的类型和子类型如下:
! ~. }; X4 n6 U% d- _! u. i, F QQ截图20171025161410.png / n) o3 M0 l3 Z* A: {( j7 Z
如果要选择特定类型的所有对象,可以使用特殊值UF_all_subtype作为掩码三重的子类型。3 l/ I/ o, U: @& V& r
实体或片体(体,面和边)的元素的三元组使用UF_solid_type类型,子类型为0,并使用SolidBodyType来指定几何类型。 下表列出了体或片体上不同类型几何体的一些SolidBodySubtype值。
; \7 N, p: L: I% O4 K- t. P1 @5 n! S+ h- h" C9 ^" t
QQ截图20171025161432.png
5 O5 t) y0 [' x. F
4 ~, A* }: i! o4 s; ]1 c3 g: v- Q
1 f4 f5 |0 E2 \, y$ u5 ^" C8 _
选择不外乎通过SelectTaggedObject(单选) SelectTaggedObjects(多选)或者block styler的选择类型进行选择。所有的内容里面都有相关类型的限定功能。
$ S! ?; \% Z0 K! Y; _4 {; C! |+ `8 e# ^/ ?

9 ]. ~1 t( @7 X* m1 _ QQ截图20171025162656.png
% T3 Z8 _4 x) L* L
" ^) C% F/ E) r3 W$ u/ O4 j

' W9 n9 j8 R1 E9 t  K对于block UI的选取,只要通过控件的block ID 直接设置 SetSelectionFilter 或者通过AddFilter 方法实现,注意这里面的mask triples 或者type subtype solidbodytype都是我们前面提到的,直接赋值即可。
, M& f( d8 @8 [. I' k, d
2 k$ c5 p: s9 W( B
5 A' O- |/ z' z8 i( [) MSetSelectionFilter (NXOpen::Selection::SelectionAction maskAction, const std::vector< NXOpen::Selection::MaskTriple > &maskTriples);3 ?! A' e- p* P& n/ u9 c

: a/ V7 z- g0 q1 R
; J6 v5 d- q4 l9 H2 U; \5 PAddFilter (NXOpen::BlockStyler::SelectObject::FilterType filterTypes);) R' j2 _$ v5 v7 n: P. C. ~& j5 y
4 u) l/ o6 i+ v5 }4 x
  ?/ X! {* X& @; l
AddFilter (int type, int subType, int solidBodyType);
/ Q/ }% n# @- P/ m
, Q4 H1 X* J. s- H4 [- \
4 _6 q, t- v: h/ p/ T: H5 }
对于单选和多选大部分都是通过SelectTaggedObject和SelectTaggedObjects的函数重载实现,方法基本都差不多,代码参考如下:
# E* X& V) x( i! A' j/ M! j& W) \& p8 G( X% W! f: m

" B1 j3 k$ d1 E3 ^) e! X
6 o# j- h3 x2 K  f  ~
//------------------------------------------------------------------------------6 X5 D: A* a/ v* ~
// Selection with mask
0 ?( e' f2 x3 |//------------------------------------------------------------------------------
6 u5 L; O; ?- [: c7 g% H, w% }4 ^TaggedObject* MyClass::select_by_mask()8 `- f0 _  H6 x, G
{
" L& l5 D7 q# C  P        NXString message("Select an object by mask:");) o/ [' s$ a2 K
        NXString title("Select object");! T8 Z2 j) ?% H
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;1 U+ a& w+ R& J  r1 Z
        Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
: `% j0 z* P4 ~& I5 O: ]        bool include_features = 0;
8 k/ `/ S: b" T2 u+ k        bool keep_highlighted = 0;
. F. W: |% J0 W9 Q/ Q1 h# [
- t  z. s- ~+ [& X( E
* V% n# b8 s2 Y0 \: y. f
        // Define the mask triple(s), see also uf_object_types.h.- m& b0 q( U2 p1 N- J
        // Uncomment or combine the desired mask triples$ @6 Z4 I4 x. ~( k- K4 J8 K' H
        std::vector<Selection::MaskTriple> maskArray(1);
3 w3 e) Y; F& y9 E. d: f4 E        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_solid_body_subtype, 0 ); // Bodies
( x' [# m9 A8 z; w1 u+ \: x        /*
' J8 C& _" r  i3 j1 D        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_FACE); // Faces
9 q" E, x6 R5 N" p        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE); // Edges( ~; i% Z6 \1 s1 g" Y
        maskArray[0] = Selection::MaskTriple( UF_component_type, 0, 0 ); // Components
1 Z6 j/ h8 @. k, r7 `. m5 h        maskArray[0] = Selection::MaskTriple( UF_line_type, 0, 0 ); // Lines
% t# r" k% O) D# O& K( z8 G: q        maskArray[0] = Selection::MaskTriple( UF_drafting_entity_type, 0, 0 ); // Drafting objects' v# a. R4 c1 f: J/ N+ |+ h
        */
, P# ~- J/ v6 }' r        Point3d cursor;4 T9 m' L7 n# a" f& z/ X9 V
        TaggedObject *object;+ H5 L: Q2 n: U) C

" L3 b' m: w% a  `; p

7 }( H  B- i2 d1 L        // Select objects using filter defined by maskArray triples
$ ]' F& D" s1 R) q        Selection::Response res = selmgr->SelectTaggedObject(' J. c8 Y$ o  h+ K; J
                        message, title, scope, action, include_features,
* t9 t- [* f" J+ h8 V            keep_highlighted, maskArray, &object, &cursor );
  c' ]( A9 X& B1 e6 v5 J
2 u+ \  s' w6 `& k" [

& e2 r; m  N1 [4 F- q6 d5 |* `        if( res == Selection::ResponseObjectSelected )
: v8 H0 g4 J+ K% u$ d        {
/ ]% G  S& C* I$ O; g0 l                return object;. a2 [, J5 D' S% w9 U" c
        }
" l3 I) W4 ]% a- p        return 0;! \% m1 i5 e5 P9 t2 n
}+ J) q1 l$ h5 Z: P& k+ g! m
+ Z# @1 Y" M9 x

' S4 H! p* C' N7 O0 T) Z//------------------------------------------------------------------------------
4 ~6 E) d# Q; G// Selection with type array
4 \; k4 h  R% ?//------------------------------------------------------------------------------
1 V8 c: q. c+ T0 Q, x9 |& rTaggedObject* MyClass::select_by_type()
; J4 f) O: E" P2 r' ]. _- z" k9 s. q{8 k: G7 H2 X  P9 H' O0 p
        NXString message("Select an object by type:");
# |2 p% J& m+ X' R/ m; I" ]        NXString title("Select object");+ m5 r, X6 h! C8 z3 o% j% |; B! w
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
; l9 a0 E* I  B. f        bool keep_highlighted = 0;
9 ^# j0 W# M$ S- _& t1 o
7 P/ T/ \) n7 D1 Z1 r' R3 s' J4 g

5 l: ]8 n3 t5 k: u; V+ P        // Define type array, see Selection::SelectionType Enumeration$ G- O$ ~; ]# Y+ m& J" b! |! h
        // Uncomment or combine the desired types
/ R. g  R8 {4 a3 W$ @- f( D5 N! Z) M; m        std::vector<Selection::SelectionType> typeArray(1);1 o: Q* S# V6 a+ G
        typeArray[0] = Selection::SelectionTypeAll;; a, U! R4 V) o; x3 j: b
        /*' G, ~+ S( @' {$ G
        typeArray[0] = Selection::SelectionTypeFeatures;$ `) j/ J2 R. F$ a1 ~9 {; t5 S  T+ n5 K
        typeArray[0] = Selection::SelectionTypeCurves;
9 N* X4 v+ H/ A: b5 Q        typeArray[0] = Selection::SelectionTypeFaces;
, C) h  q. H8 Q. S5 {( x& P% x        typeArray[0] = Selection::SelectionTypeEdges;! D; X/ Z* c% I/ V8 `: ^
        typeArray[0] = Selection::SelectionTypeCurvesAndEdges;
( I9 p; U+ n# h4 j        */6 B+ R3 ^+ R+ r! X
        Point3d cursor;* Z/ h+ Q1 {' M+ F* \
        TaggedObject *object;) f9 O0 A, Y, [

, _( i. [5 A4 t, x

2 g' n: t  N+ I        // Select objects using filter defined by type array6 ^, q2 }% I" T* C
        Selection::Response res = selmgr->SelectTaggedObject(. J7 W' c0 J1 j  v* Z, G+ U
                        message, title, scope, keep_highlighted,
: h' ?6 `. g8 \# Y0 a) F- K                        typeArray, &object, &cursor );
5 ~, r# }3 U% E( L8 n- X0 `( X6 n7 Z+ x6 o

; b' ^9 k: J# y7 K. @        if( res == Selection::ResponseObjectSelected )7 g8 n4 x6 P: @+ X0 [) M
        {
9 e, R4 [% M, M8 E                return object;
0 P5 ^7 W4 l1 d( r        }9 B. J! x8 z& y$ N
        return 0;
( ^5 c% ^% @8 B4 c4 n& P1 D}
& J7 x" @6 ^- F8 F0 V* P
( z4 u# a& h5 q+ e% C* N* y+ K6 f6 }
8 G/ u! y5 ?) z( u& D; s9 S
//------------------------------------------------------------------------------
( K' m/ Q2 c& B/ s6 h$ f// Selection any objects
% \: i/ P* e+ d3 w$ ~  `//------------------------------------------------------------------------------2 [  A. P- l9 C' D8 O3 V' P
std::vector< NXOpen::TaggedObject * > MyClass::select_any_objects()
7 B) y" C. z# Y2 q{! j- i3 g3 A# d( w% e
        NXString message("Select any objects:");% x) b/ r! i. k0 Q& Y$ n9 j2 r
        NXString title("Select objects");, Y+ D0 T, A9 ^3 Z; g- W
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
8 [+ ~" p7 E, U) T: A$ f% W. o        bool include_features = 0;        % t% d% z/ }7 |0 H  d: Q+ j
        bool keep_highlighted = 0;
7 S! I6 B  _9 E) v8 t) r" u        std::vector< NXOpen::TaggedObject * > objectArray;
; o! b7 f1 L9 X2 p9 u  M8 n8 [+ h) T6 o

1 {0 J8 h: _9 x* P$ \& Y+ e        // Select any object array- r- L( r1 c$ r( \7 `+ h8 f
        Selection::Response res = selmgr->SelectTaggedObjects(
+ |3 }; \, h0 P1 ?0 b  j9 ]                        message, title, scope, include_features,
' n( |3 q' R1 [- Y6 G; Y+ K                        keep_highlighted, objectArray );$ l) K' x8 n1 e: n# Z$ U

- C, q; K: g; X( h( O7 A; G
, Y0 W, |9 m5 [* J* I
        return objectArray;
# e. _4 c) Q7 G* C' Q* i3 T" s2 k}9 P4 b7 A- |5 @5 z

6 N$ f3 y6 J4 |9 q! M( R* P$ S6 x$ B
# x  @# }" x8 p1 A8 K) |' h! R; \

$ N# e+ t4 y2 x4 {9 k  m
7 F% b9 g- T: J5 {

1 O  i& ^8 t' X0 T+ I. }& l; {& v9 C; Q2 t5 y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了