|
列子
& W& b2 u# D+ `$ P4 V) F
' g4 F& Q: I% o2 ]& i' N$ @/ o————————————————————————————————————————————8 h) E" w! I0 A X/ C
————————————————————————————————————————————
- _. T6 T' f1 P$ C( \咧子:只选择 实体边缘 直线和圆弧
: q$ q+ k% y5 R* B/ B
# H' ], I- s0 S8 [* f: t initialize_cb() 初始化里加代码 可进行对象选择过滤: i& X, G$ k0 T' o: l% Q- M
1 }3 s: U, n! c) }4 z6 o selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式0 P \/ O# c6 S
selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
- u/ T5 Z, f: ?- O& ^, S6 [6 m+ K: u std::vector< NXOpen::Selection::MaskTriple > maskTriple;9 X% c" W+ G) T
Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
L5 H( u5 [3 X4 V& j Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
9 K2 ^: W; B) R9 P1 u maskTriple.push_back(mask1);
. G5 s2 m; m7 d: h9 H6 P* n maskTriple.push_back(mask2);
4 |/ t) @' k2 ?9 G selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
* A+ v, g7 f1 ^) E0 b+ o3 Z
$ z5 R) Q, @- x9 p3 m/ W [//过滤无效的边缘! _2 y7 K+ l* F2 e' b
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
' i* q2 L- e0 c& M{
4 M n/ ~! O5 P* M/ T" | tag_t obj=NULL_TAG;3 \$ \) ?7 ?+ @8 I j3 K0 `
UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
1 U% U7 `, Y0 v if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表4 Z4 S9 }& q9 a& h" z
return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
8 H7 }+ `# t4 s8 J4 t( h* T}
$ c4 g$ v/ o5 t4 F————————————————————————————————————————————7 r, k0 S! }/ q1 R1 Q6 v
————————————————————————————————————————————
/ s8 m# {8 e* X咧子:通过枚举控件选项来 时实 分别过滤 边缘、表面、实体$ r3 D% x* }/ j1 {; y l
5 S: T0 f( }) Q$ {' X! v1 U
int enumValue = this->enum01->GetProperties()->GetEnum("Value");
k$ c/ d( A) N# O+ U8 C if (enumValue==0) 1 g" C, x& |/ O: b; t
{, i3 Q# t& {, D# ?0 j
selection0->GetProperties()->SetString("LabelString","选择边缘");
! k5 \2 ], B7 Z5 }5 e7 m std::vector< NXOpen::Selection::MaskTriple > maskTriple;) X$ J" o( k+ d6 _) [
Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
Y+ j8 l3 r O0 ], U/ ` [: M! P Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);% i* A$ m& ^. c; ^+ N, E
maskTriple.push_back(mask1);
: ~6 _2 E8 Q3 Y4 W/ g' | maskTriple.push_back(mask2);1 g G7 M% ^ M' R6 N; Z0 k1 ?
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
* l; G) q! ]7 s' O" I' b( ~' q, n }$ e2 t" s- \3 B0 ^
if (enumValue==1)
: G$ H8 w$ z$ e5 A; O* a2 S {1 v* S5 l; l: a
selection0->GetProperties()->SetString("LabelString","选择表面");/ Q# h. y, ]# z) X$ H+ ~* J( n
std::vector< NXOpen::Selection::MaskTriple > maskTriple;3 O. \1 ?/ L) m9 [' C; C
Selection::MaskTriple mask1(UF_face_type,0,0);
5 P& b) t+ m1 u0 Y2 H: I: ~ maskTriple.push_back(mask1);' F1 ]& @- P. r1 p; ^# k' R, s
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
- r( D# P& w9 @* L) Z }
- {2 F& k6 n0 h+ B; P if (enumValue==2) . i8 ^7 o- G; @3 g
{
, p) {/ D/ ?) o* u selection0->GetProperties()->SetString("LabelString","选择实体");
: v# q, Z! k l3 G% n1 D7 i std::vector< NXOpen::Selection::MaskTriple > maskTriple;2 C' I( q. p' |# X3 i, L
Selection::MaskTriple mask1(UF_solid_type,0,0);5 f9 } E! J. W* b4 ?6 M
maskTriple.push_back(mask1);
6 q# q- n( l. g; i selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
% [4 C% k1 a- p0 W }
% t2 J1 | K* A3 a; [9 R6 K/ H6 `& N3 ]# q$ g
; P0 @6 G3 J$ C7 v/ Z//------------------------------------------------------------------------------( v0 ~7 R" R# C: y' Y$ F9 ?
//Callback Name: filter_cb 过滤不符合对象. p0 x4 n8 |* Z2 @. [0 k5 f
//------------------------------------------------------------------------------
8 v# W' u2 s G5 A( m& T6 Tint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
" T8 o; }. h8 Z5 g! z1 I" G" W9 R{2 h- @# r s2 h2 ?) B, N+ z+ p5 c
, r* d4 k+ `' s2 x# G* E int enumValue = this->enum01->GetProperties()->GetEnum("Value");9 [* H- N( Y, k9 k+ l% Z
if (enumValue ==0)
: [) o0 U: S; g2 H; t2 O {
& r2 x1 ]2 g, o8 o6 u) W6 n3 O- c tag_t obj=NULL_TAG;
( [ Q8 ~) j1 @& ^ int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
; l0 p( F. J8 G, ^6 Y: X" S if (err!=0 && obj==NULL_TAG)
, J. g5 ~) J0 h return(UF_UI_SEL_REJECT); //不加入到对象预览列表9 [% E7 Z5 E4 ]6 k8 h0 v3 D
}
- I, K5 B% [5 A; Z else if (enumValue ==1)
' f `; E9 f' N* j3 B# {' T2 S8 _; d: T {
# f/ C" Y8 ^% B int type=-1;
4 F c6 M2 E( V8 F# O int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);- ^+ F+ `2 m0 |8 L( z# V
if (err!=0 || type==-1)' N7 h4 l; o* S2 z1 K+ C$ f
return(UF_UI_SEL_REJECT); //不加入到对象预览列表
# t0 @) K$ ?# P }/ @$ ^! x& T2 t0 F4 R/ n
else if (enumValue ==2)
: z7 h; G+ V# ^% I+ Q0 F {
/ \# W, }4 I& F. L& @8 _. L int type=-1;
# k4 v. Q2 {+ E( v/ C, g6 Y int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);" u; M% w. l& R6 H8 x6 l' L$ D, \
if (err!=0 || type==-1) A' ~2 o6 T3 \7 ~4 Q7 C
return(UF_UI_SEL_REJECT); //不加入到对象预览列表2 v G/ w. B( }, O+ @
} j. e; b, W8 I; ?$ I: C
' V% c/ m2 x& ~' C" H! \7 B
return(UF_UI_SEL_ACCEPT); //加入到对象预览列表! ^" ? x! l# u: U
}
7 F9 q% G0 D, i; o |
|