|
列子
6 E1 J/ v7 B2 |0 }4 E* z/ |
9 s9 V/ c3 _8 y @' p% ~————————————————————————————————————————————( Z1 c1 J; @8 b" f' l
————————————————————————————————————————————
, l) W; Y( w( x咧子:只选择 实体边缘 直线和圆弧( V" U0 S6 B( p
# H, m/ ]6 |" k0 k/ g
initialize_cb() 初始化里加代码 可进行对象选择过滤% A: o' Y9 _- l8 e) O7 R
- m5 X. z5 n, R% D selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
! M) W6 ?, i Z" i% L3 e P i selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
( n6 M0 s3 O% {9 W* `0 Z7 [1 F std::vector< NXOpen::Selection::MaskTriple > maskTriple;
! Y( U( Q1 @ z* Q5 ]3 Q; @9 n Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);9 A& w6 Q- ]& \+ C' p* J- t* X
Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
# r) ~) g8 ?( D% G% ~$ o maskTriple.push_back(mask1);
! G, s% d2 J8 |7 d0 u7 u8 S2 f2 Q maskTriple.push_back(mask2);( R+ h1 V+ X% p, w! w
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
5 J3 O; [! e+ ~ h( t0 d& p8 U# ~* V& N9 { d: Y' f5 V1 f: c
//过滤无效的边缘
# c7 @8 X. y6 cint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
) q0 ~2 V9 R$ ?{ ( l! E/ Z' B9 k
tag_t obj=NULL_TAG; D, @- i: v: O
UF_MODL_ask_edge_body(selectObject->Tag(),&obj);. |9 C1 Z/ H! M: m
if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表) k; A9 c7 I# _+ u
return(UF_UI_SEL_ACCEPT); //加入到对象预览列表4 b8 e' p1 m" T
}
# _" y N1 u( Y& C6 Z1 ~9 Q————————————————————————————————————————————' X, k M% u( L" {+ Y* B) z
————————————————————————————————————————————6 E: J6 g! l# k" y, d2 q2 h
咧子:通过枚举控件选项来 时实 分别过滤 边缘、表面、实体 x0 b' t7 ~$ u N9 e/ k
$ U6 @5 @: H) T; ]/ C4 ^ k5 M8 \
int enumValue = this->enum01->GetProperties()->GetEnum("Value");( {& _# w, ^# L, A% k' [" K
if (enumValue==0) 6 b0 M9 ~5 f f" [0 }
{
: F& D* T3 R; O$ Z selection0->GetProperties()->SetString("LabelString","选择边缘");5 d0 I C X5 J& U, E) E
std::vector< NXOpen::Selection::MaskTriple > maskTriple;
# y# R3 R+ l \3 _4 |) w6 w7 z2 F! e Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
& X. S5 ^( B4 H s4 F" @ Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);+ D8 O2 Z @ `$ a, }/ ?' ^
maskTriple.push_back(mask1);! u' d7 k; H3 ^+ @% p
maskTriple.push_back(mask2);
9 B( w$ a' A0 l" L9 z selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);4 N% q( g. v$ a* u
}
. b: J& |) U8 Q6 J2 m# c if (enumValue==1)
/ r- ^% r6 ]% h! N. E' f2 A. B { y; ?- O8 r9 U4 w3 ?: |
selection0->GetProperties()->SetString("LabelString","选择表面");- a; d- W) {+ m( ]
std::vector< NXOpen::Selection::MaskTriple > maskTriple;
$ c' W" c( T3 U$ U; j3 b+ T0 h Selection::MaskTriple mask1(UF_face_type,0,0);
7 z/ S$ \' E3 v' ]0 ?7 V6 q maskTriple.push_back(mask1);7 n, g* _, R9 c: p2 I. N" B- a
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);/ {! Y% F! ]6 }2 ^, K4 b
}3 i6 {" k/ `/ D+ Z' _0 T
if (enumValue==2)
" p* X( R9 k5 H, l8 H( N% _. }, R {
1 ]/ s7 Z) R- D, Z0 ?% U selection0->GetProperties()->SetString("LabelString","选择实体");
, k( y1 L; c7 f std::vector< NXOpen::Selection::MaskTriple > maskTriple;
5 h3 Q' F- w8 R* l. ~; J Selection::MaskTriple mask1(UF_solid_type,0,0);7 K- O, R5 N3 O# Q. S h @
maskTriple.push_back(mask1);4 S+ c4 i. m; Y" |/ p) y3 A. M r
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);) a- q0 ^1 e# J- a
}
) B4 S2 ~5 I. c' H2 k! c2 H7 u. @0 k
9 ?( V; G' Q3 X, h& o* {* N$ x; e; A% X; g6 i' \
//------------------------------------------------------------------------------
" V( j9 ?- Y# @//Callback Name: filter_cb 过滤不符合对象
( N$ m U7 l# Z( b7 k//------------------------------------------------------------------------------3 U" ?' e4 r0 m$ e
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
8 c% k) j1 H& L! V& g8 Y{
1 q% s' y, M8 r4 N# ]
2 A6 [0 z! u# a2 \ int enumValue = this->enum01->GetProperties()->GetEnum("Value");2 ~ ^- T. m: F, E1 e+ T4 y
if (enumValue ==0); ]/ N( S, T5 i- E% T% V7 i
{* R7 H$ V6 H3 u" T J" u
tag_t obj=NULL_TAG;
. ?' c7 V( F6 v( U# I+ g int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
. N* O. C. M9 Q+ F3 z8 y if (err!=0 && obj==NULL_TAG)2 j" L7 O/ f* }+ u O& l
return(UF_UI_SEL_REJECT); //不加入到对象预览列表
3 x% X- K) w+ y+ [! O) `9 ]9 A }% N/ E( J8 c2 l/ H+ ^
else if (enumValue ==1): Z8 s6 x4 C# `) @
{0 b8 S. s+ d/ P0 m
int type=-1;
% [5 X6 I) g) R int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
. m- Z9 _7 m) O. R+ d$ M if (err!=0 || type==-1)
0 x9 t4 N$ c8 y4 _$ v return(UF_UI_SEL_REJECT); //不加入到对象预览列表& Y& ^- A0 w3 |
}
% ?" H- g5 G# y, H' K! } else if (enumValue ==2)
; q2 z- ]* t' Z/ T9 {" u$ p8 d0 \ {
' f+ U @, N7 x7 J/ J1 h7 {$ D int type=-1;
' n8 X' K j5 p8 H) [; K6 Q( L0 B int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);8 L4 A' S) o9 M- A% {
if (err!=0 || type==-1)
1 g2 s% ^4 P8 h0 S, @; x8 H return(UF_UI_SEL_REJECT); //不加入到对象预览列表
8 O1 I' ^, d) n; H" i6 G, E }. e' r3 p: N9 n
4 Y" y3 J2 {5 \: E# b9 y
return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
, A J) O4 k ?4 `}; }( x4 I# s$ D- Q1 ~! s) |4 |
|
|