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

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

admin 楼主

2017-10-25 16:33:48

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

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

x
关于NX二次开发中选择对象mask triple的详细讲解
0 a3 t8 ^4 O5 o1 m& G很多人对这个可能不是太了解,在NX中选择对象,是通过这个进行过滤的 mask triple,你可以翻译成掩码三元组。
8 v) U, M  [  o- c! a- l  O+ z如果您需要更多地控制要选择的对象类型,可以在Selection对象上使用其他SelectTaggedObject重载方法。 这些方法使用掩码三元组来特定要选择的对象的类型。 Mask三元组是一个名为MaskTriple的结构中的三个整数。 该结构的部分是称为Type,Subtype和SolidBodySubtype的整数。 NXOpen.UF.UFConstants类包含NX Open中使用的标记整数常量,其中一些常量是掩码的部分。 通常,您设置类型Type以选择特定类型的对象,而Subtype则选择具有特定属性的该类型的对象。 掩码三元组中的类型和子类型通常对应于对象的类型和子类型。 除了实体几何类型和其他特殊对象类型之外,SolidBodySubtype通常为0,它代表另一个细节子类型。# O  k: i5 _' I- E! q" F+ L& ?
一些常见的类型和子类型如下:
# w& z' g; `5 ?2 b0 ` QQ截图20171025161410.png
, N* ^& m' }7 o% K8 U' N. T  I如果要选择特定类型的所有对象,可以使用特殊值UF_all_subtype作为掩码三重的子类型。
: `9 f, j% S2 f实体或片体(体,面和边)的元素的三元组使用UF_solid_type类型,子类型为0,并使用SolidBodyType来指定几何类型。 下表列出了体或片体上不同类型几何体的一些SolidBodySubtype值。% `+ ~3 ]$ y" t5 E- n

0 O6 h- V* P, V2 r  M! o' E9 _' ] QQ截图20171025161432.png $ g' S" O, ]: D& F' O3 \! |, @4 a# u6 e
* Q8 o& \# g( a& C$ ?# {: Z3 v; z
3 b# |) @, K6 [3 O0 y# h
选择不外乎通过SelectTaggedObject(单选) SelectTaggedObjects(多选)或者block styler的选择类型进行选择。所有的内容里面都有相关类型的限定功能。( {, l6 n1 \4 c0 ~7 c8 W4 e5 _2 C

& M) c, P& j3 V9 e/ y( l
0 i6 ^- \5 a8 G: Z# n8 t3 R8 R
QQ截图20171025162656.png
' I3 g" R# r( ~' H$ W' |, ^+ J( Q/ }
, N$ a: f0 l7 Z& S; o/ Z! J
对于block UI的选取,只要通过控件的block ID 直接设置 SetSelectionFilter 或者通过AddFilter 方法实现,注意这里面的mask triples 或者type subtype solidbodytype都是我们前面提到的,直接赋值即可。
( \, |9 Y% t) u- F" l
3 v9 u- E0 V+ Q, g% S, r: G) q) J
# ]$ \5 N: p: mSetSelectionFilter (NXOpen::Selection::SelectionAction maskAction, const std::vector< NXOpen::Selection::MaskTriple > &maskTriples);
2 W1 L7 C! o8 y8 K& S9 l( Z, w1 v2 j! N0 G9 W

/ i& Y8 H/ X$ K$ dAddFilter (NXOpen::BlockStyler::SelectObject::FilterType filterTypes);0 `- J, q$ r& O9 f2 {$ c
: \( n5 X2 W+ [: I1 D5 x  X9 d2 k
* R+ q+ B& y; F; [1 d% Q
AddFilter (int type, int subType, int solidBodyType);
- b2 C$ L/ m8 k/ i$ V% I
. ]9 C! e( b' y# \: [% A

/ e/ m/ F  Z* V7 R2 M. j* O对于单选和多选大部分都是通过SelectTaggedObject和SelectTaggedObjects的函数重载实现,方法基本都差不多,代码参考如下:
2 U0 X, w3 v. r2 K( T7 u4 L) r
$ a! m; C/ v! y( k- J& X( R" M) y) e# N& J) I& [9 A: W3 d0 t& [

" x. u: r( l2 a; t$ a! ~//------------------------------------------------------------------------------
5 b0 ^( |5 w. O! R6 Q// Selection with mask
* b# h0 ^( v) B//------------------------------------------------------------------------------
( q) p  s/ H# w% f, F/ ETaggedObject* MyClass::select_by_mask()
! e- R- j6 ?) i7 d  N7 v{
8 {+ E: I# }8 S1 [        NXString message("Select an object by mask:");
. \& q; V+ H1 @) i( k, j        NXString title("Select object");" b* r: m: p. U+ m
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;6 x$ ^- a( U, y8 t! O& F2 ]9 H
        Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;% s% @/ Y+ r1 p$ @+ b4 A1 M$ }8 k- c- T
        bool include_features = 0;
' Z8 q& k' P4 C: i. {2 N/ b. y        bool keep_highlighted = 0;9 i! l9 Y+ p& @6 X' }! P. L

, b$ e1 e# l7 Y1 @/ ~' y

+ V8 H# Z$ f5 }7 }' R( I        // Define the mask triple(s), see also uf_object_types.h.
( {6 a; e7 j) x8 h; ?1 ~        // Uncomment or combine the desired mask triples
8 W7 D' G3 W( X( ~        std::vector<Selection::MaskTriple> maskArray(1);
: z$ v& M' I2 c; ?7 K        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_solid_body_subtype, 0 ); // Bodies
7 ^2 ~+ w/ h- ?" U- R        /*
( N+ Y* @* B5 G6 @+ P        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_FACE); // Faces% ?& ^* B1 |2 v4 G2 h& {2 l
        maskArray[0] = Selection::MaskTriple( UF_solid_type, UF_all_subtype, UF_UI_SEL_FEATURE_ANY_EDGE); // Edges
0 r0 \% w9 L" u  Q/ F3 C6 }. i% W        maskArray[0] = Selection::MaskTriple( UF_component_type, 0, 0 ); // Components
0 M! d& H& M$ C1 e7 G        maskArray[0] = Selection::MaskTriple( UF_line_type, 0, 0 ); // Lines
' f& k  }: K, B; [% \        maskArray[0] = Selection::MaskTriple( UF_drafting_entity_type, 0, 0 ); // Drafting objects2 K' V8 E+ }+ n1 S* b
        */$ O) g) `5 O7 X& v
        Point3d cursor;3 i9 h: Y. r5 ~; Y; H; m) S9 K2 `
        TaggedObject *object;
; X: |+ i' y1 J# g3 y/ b- e& j- b9 s( w% J

; O" K4 n9 }; y6 x0 ^" I4 G        // Select objects using filter defined by maskArray triples3 i) W* b6 ?* i" A4 h5 [- [
        Selection::Response res = selmgr->SelectTaggedObject(
( \3 R; x6 P2 g- b/ e5 F$ r) b                        message, title, scope, action, include_features,
' `% O9 i/ Y+ S: a8 u, y: z            keep_highlighted, maskArray, &object, &cursor );) D, d3 G3 x5 X8 k+ E2 U
4 I7 {8 `7 W' O, y) ~' F3 M* p( B
& p3 r' H! F. s5 g
        if( res == Selection::ResponseObjectSelected )  Z( P. }1 U' b! p  q. t, ?
        {1 t5 \! ]3 C9 x9 ~
                return object;* r0 J& U1 S% U7 M* n1 ^
        }
0 P2 \  {. X3 X) S        return 0;% d5 v6 w, P8 c0 V
}7 a) S& w1 q+ z) G+ G) b
$ L- H- v" H* z- `4 f& z: q) l

7 M" j& M/ m  ~5 i$ K3 g3 S//------------------------------------------------------------------------------$ M8 ]! o$ `0 {" I' K: {6 L
// Selection with type array
$ [: @7 P0 `2 D//------------------------------------------------------------------------------
9 B( F: I5 h1 tTaggedObject* MyClass::select_by_type(), h" ^$ O% p3 d2 }
{. n- F$ }+ K. k3 U0 d
        NXString message("Select an object by type:");7 W6 |! k; }1 Y6 [" D& q7 P2 V* y
        NXString title("Select object");
% g9 [! s4 f% v6 l        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
6 F9 A9 o; b9 d2 ^: s        bool keep_highlighted = 0;
  Z$ L# p2 z" N9 K  m2 @  l' k8 }7 _' m4 L% B& N+ ]3 x% B

9 V3 N" v  X! d, j* Y: k8 a. K        // Define type array, see Selection::SelectionType Enumeration
- G6 n) D" }1 L        // Uncomment or combine the desired types
% u. Z0 v+ {5 s& t1 S, E        std::vector<Selection::SelectionType> typeArray(1);8 L+ l+ Q9 I. \# z: N( z
        typeArray[0] = Selection::SelectionTypeAll;
: Q* h$ b; h* \        /*2 M* s4 u: x* @* `, T; S' N1 ]
        typeArray[0] = Selection::SelectionTypeFeatures;/ G! l  X* Y8 i; D1 r7 N
        typeArray[0] = Selection::SelectionTypeCurves;
1 w$ ]% ^$ G) [( V8 q) K        typeArray[0] = Selection::SelectionTypeFaces;
, z, G' ^( l- k6 ~3 f5 F        typeArray[0] = Selection::SelectionTypeEdges;* }" r) `8 Q- [) q
        typeArray[0] = Selection::SelectionTypeCurvesAndEdges;
  o5 h$ b9 E1 E3 d        */$ t7 i4 K4 n- V3 V
        Point3d cursor;3 R8 u7 N4 I( O6 J8 ]( p% i* P
        TaggedObject *object;
4 _3 C! f" p: Z/ u9 i5 B6 m. L( v* i2 e9 X& W

9 K0 M/ ^  j% D7 x; G- l        // Select objects using filter defined by type array" r+ n% S$ {( I0 b" g
        Selection::Response res = selmgr->SelectTaggedObject(" L9 c. c5 `4 a& P2 w, c8 U2 R
                        message, title, scope, keep_highlighted,
! c5 ~3 D7 F! Z* M                        typeArray, &object, &cursor );+ q& ~7 W& g# \. L2 V1 i% S. r

3 H9 e, E2 s: |& {- x0 Z5 ]

1 c1 x" m, z2 W; m3 }6 {& V        if( res == Selection::ResponseObjectSelected )
" M3 T, Q, O" Y" u6 p        {' s7 A. E# u. M% Y5 S
                return object;# {+ u. k8 ]2 m" Y' I
        }5 J" f4 |8 i1 _! ~" V
        return 0;' A. N1 U/ a- v- @
}
. j; q2 ?& `) {7 s0 Q* j, _# Y
% [$ D4 W/ H$ n6 F1 O1 S2 h4 B
. f  E6 e0 ~4 Y8 i- h7 x7 \: c
//------------------------------------------------------------------------------
* ^! Y# N$ ~2 \( B# z5 b// Selection any objects
8 o4 |1 r- t1 L+ W5 O% A! f) x//------------------------------------------------------------------------------
+ v2 Y1 U& g0 b+ K7 W' N9 rstd::vector< NXOpen::TaggedObject * > MyClass::select_any_objects()6 ^0 B8 t" l1 k/ Z8 O
{
/ ?/ y6 Q' X% o5 F        NXString message("Select any objects:");) v1 d( R! I- s" ?, G" O4 ^
        NXString title("Select objects");% U: v0 w  r7 Z+ T
        Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
5 J8 ~, N5 W2 i7 P! m' I* _        bool include_features = 0;        
9 A2 i  t2 k4 ~/ P) c1 M( ^        bool keep_highlighted = 0;
6 |9 W" |( U2 {8 @* @4 w+ Q3 A+ z        std::vector< NXOpen::TaggedObject * > objectArray;! @8 Y# a& {. I# b+ Y2 h( h( ^

. d1 n/ z0 B3 O0 h

8 A7 L+ x9 Q* L4 m- c2 X" g        // Select any object array
( e, ^4 R3 u8 a$ r1 a        Selection::Response res = selmgr->SelectTaggedObjects($ A, I% x8 u! w: E
                        message, title, scope, include_features, ; S2 {4 j& L' C; v2 w
                        keep_highlighted, objectArray );: ^6 e/ h# m8 Z4 y; `' f% h

2 H- u( a  n6 B0 K: x

, N1 W, I2 n9 x* T0 b0 S        return objectArray;: q: b& d+ a. l2 S# h. r- M, Z
}; ]3 c) S2 L4 N
2 w& d9 J) z( f7 `# a$ `& z3 N4 E
" V# a( }! N7 s' f  G

* I1 Q/ g/ W8 _9 |
* q0 o6 e) i  e- T0 r# n
6 O1 v: f4 D2 Z: k4 z! S
5 d7 M& f8 T, {* h/ r
( |) d0 T& z8 V* n! |' P0 P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了