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

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

admin 楼主

2017-10-25 16:33:48

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

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

x
关于NX二次开发中选择对象mask triple的详细讲解9 X! y9 j9 w. |$ i4 a
很多人对这个可能不是太了解,在NX中选择对象,是通过这个进行过滤的 mask triple,你可以翻译成掩码三元组。. u2 Y& X6 F9 f, e
如果您需要更多地控制要选择的对象类型,可以在Selection对象上使用其他SelectTaggedObject重载方法。 这些方法使用掩码三元组来特定要选择的对象的类型。 Mask三元组是一个名为MaskTriple的结构中的三个整数。 该结构的部分是称为Type,Subtype和SolidBodySubtype的整数。 NXOpen.UF.UFConstants类包含NX Open中使用的标记整数常量,其中一些常量是掩码的部分。 通常,您设置类型Type以选择特定类型的对象,而Subtype则选择具有特定属性的该类型的对象。 掩码三元组中的类型和子类型通常对应于对象的类型和子类型。 除了实体几何类型和其他特殊对象类型之外,SolidBodySubtype通常为0,它代表另一个细节子类型。
* b1 C6 h% K; F. Y# W( A一些常见的类型和子类型如下:4 h9 R% d+ i* V- U1 k- j
QQ截图20171025161410.png 8 A  v7 x% N' r5 h! Z
如果要选择特定类型的所有对象,可以使用特殊值UF_all_subtype作为掩码三重的子类型。% E: a- ~8 F8 I' u: O% |' ^
实体或片体(体,面和边)的元素的三元组使用UF_solid_type类型,子类型为0,并使用SolidBodyType来指定几何类型。 下表列出了体或片体上不同类型几何体的一些SolidBodySubtype值。
1 M, n( M5 y( U; R/ |0 i0 A) I
. n0 T/ N3 D$ h% [# I* J6 v QQ截图20171025161432.png & `: z' V+ V) o" v" C! _# \$ Q& v7 c
* A: O# T1 D2 n; n5 w+ ?1 q  h" z

0 K8 g5 A: x$ a( M选择不外乎通过SelectTaggedObject(单选) SelectTaggedObjects(多选)或者block styler的选择类型进行选择。所有的内容里面都有相关类型的限定功能。+ z+ a0 w$ X& h$ j" Y0 x) h: [
7 F* j0 e( Y, V, E( m1 u: J

' T6 d$ b# R5 [: u QQ截图20171025162656.png ' Y# X& D4 |: m' i. V  x0 g

( s5 ^! ~1 u, \3 T" Q, B
% D* v" L0 t- S  e' h
对于block UI的选取,只要通过控件的block ID 直接设置 SetSelectionFilter 或者通过AddFilter 方法实现,注意这里面的mask triples 或者type subtype solidbodytype都是我们前面提到的,直接赋值即可。
5 ?0 N1 O- j/ Y) H6 p8 [: F5 h. L* r+ w' H

" A: [2 y( K4 g9 GSetSelectionFilter (NXOpen::Selection::SelectionAction maskAction, const std::vector< NXOpen::Selection::MaskTriple > &maskTriples);8 x- d% U4 z) N) C: A/ k/ s

( Q! b7 G3 h# `9 i& }6 ~7 d) u5 R9 G, ~" a
AddFilter (NXOpen::BlockStyler::SelectObject::FilterType filterTypes);( S1 V: O6 I: N8 P$ S

/ B0 w( B' l- v/ `$ T5 r: i* |$ a5 c: r2 u
AddFilter (int type, int subType, int solidBodyType);" g) ^9 ^  v* [3 ?& {' e0 e
- B; S% Z" d% A/ r$ i8 X4 i
/ n7 W. U9 k! j( G% e
对于单选和多选大部分都是通过SelectTaggedObject和SelectTaggedObjects的函数重载实现,方法基本都差不多,代码参考如下:1 U# l( v# D) Q
; f+ l7 `( X4 C0 m

$ b5 p4 |, ^' l$ l
+ T6 r) ?$ m6 x0 H" R' Y- s% m
//------------------------------------------------------------------------------4 `' {+ G5 I! Y+ S
// Selection with mask
5 _% Y8 g8 R! F//------------------------------------------------------------------------------
7 ^) V, o7 T5 k, p# eTaggedObject* MyClass::select_by_mask()
9 E5 U; ^- k0 Z8 i2 D{
7 U; {/ W  N' x( y. b        NXString message("Select an object by mask:");# d& C3 S: o+ m+ T# F' |
        NXString title("Select object");- l, |, f; u7 b7 o1 N$ }
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
* a$ p5 z+ i4 ^9 n( Z        Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
6 _, R& `" G3 s8 Q        bool include_features = 0;
( Y1 g8 I" d6 O0 P8 \3 g& |        bool keep_highlighted = 0;
5 C+ w0 G! A( T& o+ K) W; ?7 K- J# U) a6 M) g, x$ A

4 t- ^# c6 w. C2 G        // Define the mask triple(s), see also uf_object_types.h.
6 E9 Y. n. ~( P' \% G% [: E& _        // Uncomment or combine the desired mask triples
# X! g& L2 W' y5 x5 c+ p$ d        std::vector<Selection::MaskTriple> maskArray(1);  E' C/ i( J, o
        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_solid_body_subtype, 0 ); // Bodies; n- T( ~. ?, `; v! f3 _8 u# l
        /*
4 h* Z. ]- |( d0 \        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_FACE); // Faces
0 u8 b- i+ }* s8 j( u6 Z        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE); // Edges
" E! t! {9 h$ |- S        maskArray[0] = Selection::MaskTriple( UF_component_type, 0, 0 ); // Components! v- _! i( E- F
        maskArray[0] = Selection::MaskTriple( UF_line_type, 0, 0 ); // Lines
2 |0 U3 ~# k8 d# p2 G/ q8 M        maskArray[0] = Selection::MaskTriple( UF_drafting_entity_type, 0, 0 ); // Drafting objects" K3 }8 N3 e  s; n$ B3 L
        */; m2 a$ q; T  ~: s- X
        Point3d cursor;9 E. r" `8 ?) d1 o
        TaggedObject *object;
8 C4 e2 B7 R  u1 x! s
6 Y' U5 L9 R+ r/ R
. A0 C3 J& v- I0 R& T
        // Select objects using filter defined by maskArray triples
* c& t6 m+ t" P' J1 B; K        Selection::Response res = selmgr->SelectTaggedObject(3 v( ^6 ^; M* u6 Z) E
                        message, title, scope, action, include_features,& h5 T6 y/ U$ B: L8 p+ I
            keep_highlighted, maskArray, &object, &cursor );. j+ z) U! h* v8 I4 S

! ?  `3 o8 P; `( w- F6 H+ F

  ^" k2 o6 m. e: [" D" A        if( res == Selection::ResponseObjectSelected )4 k' c! S0 P' [9 Q/ x- U: ^
        {
4 H: ^- o2 N9 i! l2 B. o, v" T                return object;: `3 Z# z: N. e2 J0 E
        }
& @9 R8 L' ]5 W% m6 I        return 0;
: y* x) M# l' v4 h! J}
  a' k7 D" v! ?( [2 j, e' z, P6 \
6 W; c  m  {' e' y

" |) P4 P7 r# w//------------------------------------------------------------------------------' t" ^9 ?5 N; E! z  a* |: e
// Selection with type array
7 p2 e1 R! G8 t, I* F! U//------------------------------------------------------------------------------- b  ]; a0 W% a
TaggedObject* MyClass::select_by_type()9 w- q) S/ g% K' C4 [
{& h' P0 p6 Y) P+ Q6 i
        NXString message("Select an object by type:");2 f2 ]5 O5 n. G9 i" P1 h
        NXString title("Select object");: h0 X" E- Z2 f) D
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;# r0 g! X3 D1 ]) f6 D8 d
        bool keep_highlighted = 0;, i) U/ j. e& w3 R" ~  h

# H- P1 k, |) H; P5 J7 R9 x; w
, b. i" z% @5 y8 d0 _
        // Define type array, see Selection::SelectionType Enumeration
6 l2 `4 s9 A2 h% C/ j  c, v3 |: L        // Uncomment or combine the desired types- @# @) O9 a$ o
        std::vector<Selection::SelectionType> typeArray(1);! b9 \5 r8 Y8 o4 T$ `4 c# e; }
        typeArray[0] = Selection::SelectionTypeAll;
0 g: i. Y; ~" y. E; n5 c        /*2 N6 c0 @- O- w/ ^- _( N/ C- K
        typeArray[0] = Selection::SelectionTypeFeatures;5 g* I/ G/ p# D
        typeArray[0] = Selection::SelectionTypeCurves;
) I" t4 L+ X8 r7 \        typeArray[0] = Selection::SelectionTypeFaces;
; A% h$ Q& o: O1 P& y$ m        typeArray[0] = Selection::SelectionTypeEdges;
. o9 t* D. ^9 i% A6 ]- |3 \        typeArray[0] = Selection::SelectionTypeCurvesAndEdges;
+ a6 u1 i" [! _! E/ i        */
3 p/ ]0 O+ B  Z8 I        Point3d cursor;
) y& j% ?) B$ `9 e, `        TaggedObject *object;" j. H1 T& J1 u6 x2 F+ p

7 y8 O* X6 A( O0 O
% [# K( i5 _. o
        // Select objects using filter defined by type array
, j1 s4 H5 {0 Y& v        Selection::Response res = selmgr->SelectTaggedObject(
# H; X/ P9 u- \. d! ~* G" e6 [                        message, title, scope, keep_highlighted, , y/ C5 P. C& {0 ]
                        typeArray, &object, &cursor );
1 r8 ]0 b% L5 L$ `1 m/ g: O7 T+ Y8 ]/ ]" Z  f
( ~  f! x  J5 G5 p& `. _4 `; X
        if( res == Selection::ResponseObjectSelected )
' Y1 U: A3 n7 U$ S; \        {# m0 b4 @9 B  d2 s. ~
                return object;. |4 ^  J9 N0 a
        }
6 P( W. K6 B: {, p/ Q        return 0;+ l/ ?  ~; v5 @$ u* Q) R/ T4 Y
}/ {# N3 M+ x: @: g7 H; Z8 E3 _0 B

  v6 b/ E' T% J  ^" C* m1 g' h
0 p) J. z/ {1 f: A
//------------------------------------------------------------------------------0 D9 M! p: D- N
// Selection any objects
; ?# B3 y7 B- e# r6 f//------------------------------------------------------------------------------
6 ^" V+ b" I- M0 Y4 g+ l; _- Gstd::vector< NXOpen::TaggedObject * > MyClass::select_any_objects(), v* ]3 v3 N' g9 v; i5 k
{+ C3 X% g; C1 H  u, i0 M
        NXString message("Select any objects:");$ |) D; Z4 m* C7 h9 W& }9 w$ M# y
        NXString title("Select objects");
1 r6 G9 ]: E; S; L: t/ N        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;8 @0 y. s8 `) M
        bool include_features = 0;        / l2 m, K, H8 }/ |
        bool keep_highlighted = 0;' G/ ]7 C/ u2 q
        std::vector< NXOpen::TaggedObject * > objectArray;
) b  o- x/ z( `# o! M
! _! \' P. A2 x3 X7 |& Q7 w
3 {1 |. w$ d0 r9 Q) P+ z4 `
        // Select any object array
+ y& m7 w" j- i- K        Selection::Response res = selmgr->SelectTaggedObjects(  a  }; e* l9 V% e) t/ m/ D7 U
                        message, title, scope, include_features,
8 y/ L" X$ N% M: r- J" C% k% _                        keep_highlighted, objectArray );5 m0 B$ Z/ s/ j; r) e) c
7 C+ T2 r0 x) n" j

* `- Z/ c% L( c        return objectArray;
/ v5 W1 W2 T; H! W7 C( k1 J}
9 i6 y& j0 P: O. N, E
4 y0 O$ @- Q! A& b
- {5 E( B/ N2 f7 @( v1 g) \- N/ H  c$ ~" o# Z' Z2 F

- S1 J1 y: h  o7 m
$ ~& W3 G8 h  ?3 j* @* ?( {
1 M* \/ b- }, D) h6 P; p# M

( ?' _" P3 N" b# R& [/ m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了