|
|
列子
; i1 @$ Q, ]% H2 [$ X
% u4 Q2 ~$ C2 Z8 l0 G————————————————————————————————————————————
0 [/ W# E# B* ^8 g) K y C6 N————————————————————————————————————————————
! J3 o8 x, i3 p h咧子:只选择 实体边缘 直线和圆弧, m( w5 C3 `5 I, M& P
* w" L: @& B* a6 z initialize_cb() 初始化里加代码 可进行对象选择过滤
r4 g C' F4 X4 Z
5 n9 V# i; N; ?; _, d8 K selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
2 v. e8 w$ Q0 l: K7 L6 n O# m selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧/ ~! s7 A o. p0 q) Y
std::vector< NXOpen::Selection::MaskTriple > maskTriple;
, U2 K# Z1 b" N. \* y Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);" T$ c3 O+ z Y7 p4 T! v: P% M
Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
, i' C1 @/ ~1 [! e. w maskTriple.push_back(mask1);2 {! X/ b( l4 H0 L* W
maskTriple.push_back(mask2);$ h8 e& I: V, j. x1 Q
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
0 }: T4 p6 N# W: n* b( a" Q% h$ F& o* v* j$ w6 ]7 Q: [
//过滤无效的边缘7 @7 D( O2 t/ f% }# G, R5 Q6 S2 N
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
* p" }- [/ o1 H8 V/ g- \{
# Y9 U8 \' P, j- ?7 | tag_t obj=NULL_TAG;
. [+ Y. o, U" r1 A UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
: `9 j6 g6 Q0 V( L* y if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表
4 j& I: z9 R- W0 d! G3 U e+ | return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
9 e2 k& M( `) M2 g' n* o}1 X1 Q2 D5 X( T
————————————————————————————————————————————
. n7 V% \7 ]9 Z————————————————————————————————————————————0 |# [5 s5 O( r6 Z4 {
咧子:通过枚举控件选项来 时实 分别过滤 边缘、表面、实体6 X$ d. ~) m# o7 v, z a
|1 k, p! G# l; P' Y. V
int enumValue = this->enum01->GetProperties()->GetEnum("Value");
6 O5 z, k) ~' L- b, g9 u1 a if (enumValue==0) + [% d8 a% w! P. H A# w
{' W3 T* }% D) _. ~
selection0->GetProperties()->SetString("LabelString","选择边缘");
$ H6 C: x) u/ g. P! e std::vector< NXOpen::Selection::MaskTriple > maskTriple;; W* Q- o! H2 n1 ~
Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
( p* I, h; w j" k, D Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
) [0 K# a- T$ z) u' [: S/ A5 J maskTriple.push_back(mask1);3 O$ A. x+ W* b
maskTriple.push_back(mask2);
0 j# q8 ?+ N' x0 H selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
7 z k* I/ `( v0 W5 f+ N7 A! L }
6 [, L: G! f/ m9 M+ g9 W if (enumValue==1) - }! w }% O6 t$ W4 t$ x0 v5 r
{& j; x. q0 m/ A( N5 a
selection0->GetProperties()->SetString("LabelString","选择表面");
5 k1 l+ A/ Z( S+ M1 h std::vector< NXOpen::Selection::MaskTriple > maskTriple;
$ w6 _ p4 ~+ S' }6 y8 g4 p Selection::MaskTriple mask1(UF_face_type,0,0);/ D6 o" k# Z: ?( a5 z5 a
maskTriple.push_back(mask1);& r. M- A. G6 l1 x* J0 L6 u
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);. q S1 n& O9 z- j$ P
}
: P: U) Q/ w) x. { if (enumValue==2) & X3 s* n+ ]# I4 R
{
~9 n9 a5 h, u. G8 S# l selection0->GetProperties()->SetString("LabelString","选择实体");
) {1 C6 J0 g) L, z std::vector< NXOpen::Selection::MaskTriple > maskTriple;
9 u& G0 i2 a4 X2 F* z& l Selection::MaskTriple mask1(UF_solid_type,0,0);
3 V. _! e+ I2 n! L0 e5 A8 T. K maskTriple.push_back(mask1);
0 h. y1 x5 S2 C selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
; T) Z$ K- k; I/ g }
/ C5 c9 r: R' V" ]) D; X
5 p; M) H( S9 @8 p2 o3 |
! a$ }% d7 K# V& {% j" }% k& k//------------------------------------------------------------------------------% \$ B$ w7 D& C+ G* x; p# U
//Callback Name: filter_cb 过滤不符合对象
5 U* g/ E, d! I- F//------------------------------------------------------------------------------
0 |9 C+ [, O- s8 Pint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)& e! ~9 z2 {1 S5 {2 X# s7 l6 n
{1 h& u$ h0 Y" f. H% X
7 N7 w2 ?7 W/ C, S! `2 k. F# x" I; o
int enumValue = this->enum01->GetProperties()->GetEnum("Value");
# `- c9 U1 g% Z if (enumValue ==0)& L, v9 o: A9 u# N6 K
{
" B) g( q% g9 X, q tag_t obj=NULL_TAG;
( v' j3 Z+ D1 C" d- U* ^ int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);! c( e! c3 G. \, Q
if (err!=0 && obj==NULL_TAG)3 `/ b' ?! ]9 y% k
return(UF_UI_SEL_REJECT); //不加入到对象预览列表* i. @9 i5 @& f' ]; I4 l, N
}& {$ d$ f* A8 w8 y# V: i2 k
else if (enumValue ==1)% \! R& u$ m8 l4 |' w2 g
{5 d2 Q$ K4 R, ^/ {9 @
int type=-1;- s/ g- x+ O8 d: i
int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
" ?# m! T* G! R$ w- M: U" g if (err!=0 || type==-1)4 Q, Y/ c, s2 D& I; S* h, H: y/ d
return(UF_UI_SEL_REJECT); //不加入到对象预览列表
7 R( r/ r2 q4 `0 b. H$ R! h }
5 C1 b8 r3 b/ ]3 z2 [ else if (enumValue ==2)
, R2 |+ h: O* n/ y! z {: m* l z, k2 @4 x) q8 x
int type=-1;
' j. n# N0 C1 {) D0 U; ^. u3 A% E int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
Z% K0 j+ m' t# v if (err!=0 || type==-1)
0 z) q4 w- j+ a2 F: y7 x2 _ return(UF_UI_SEL_REJECT); //不加入到对象预览列表& J: Y. ]) Q7 B1 J/ [
}
& V; I* N" A' m( J! K: C' p
( P3 s! j. V+ Z: H3 G& c* v return(UF_UI_SEL_ACCEPT); //加入到对象预览列表. `8 ]% m* C: o) G
}$ g9 c7 E8 J* O! u
|
|