|
列子
& v- I: H8 b/ W. v8 k. }
6 h) n' U9 u; ], ]6 ]' C————————————————————————————————————————————
! ]5 `! m3 T+ F0 T$ I0 n————————————————————————————————————————————
: q" W" I( S2 f# }% [ K咧子:只选择 实体边缘 直线和圆弧! h& q" d4 b9 ]$ m$ s+ \* ?
6 G) j( K- h7 P1 k0 C% s initialize_cb() 初始化里加代码 可进行对象选择过滤6 A5 f& @2 ~+ M4 H
( }5 Q' p" n, t1 V# t1 c! W: ^ selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式; L8 T' x9 |3 ?3 `! p) B+ ?
selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
1 k6 l6 @+ r% C' Z+ D std::vector< NXOpen::Selection::MaskTriple > maskTriple;) h! T, `- @1 z" D2 i
Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
% d! Q4 {* N- o/ Z Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);5 B0 I0 ^" ~' D0 E; {9 l
maskTriple.push_back(mask1);
" Q: N' ^* Y. B& d; h8 \' X1 W maskTriple.push_back(mask2);/ ]8 n" \1 e; i9 A# z& q
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);: P. P9 `1 H% a, m5 ~. h
6 z0 R9 b% v# t8 n
//过滤无效的边缘* K" _1 h) L! b; p
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
/ q( W& e9 z, o, s! Z{
9 @/ |8 [+ p9 {" v0 E$ d' \ tag_t obj=NULL_TAG;
$ @5 y1 h! N2 P UF_MODL_ask_edge_body(selectObject->Tag(),&obj);, N$ l4 r* S& [! q+ a
if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表8 J6 q2 E, B; w
return(UF_UI_SEL_ACCEPT); //加入到对象预览列表* o8 c. T$ P! O1 }7 d: D, M
}$ L" Y5 g/ E5 _# u B; p
————————————————————————————————————————————
0 k" p' p+ h3 b1 R4 l/ O7 C. D————————————————————————————————————————————! Y/ y" p' R. j- v* l, z/ R
咧子:通过枚举控件选项来 时实 分别过滤 边缘、表面、实体
% [8 |8 M" E' w g9 ]8 I7 Y; [0 |. a D' p0 | N
int enumValue = this->enum01->GetProperties()->GetEnum("Value");
3 I$ s# d# W! { [, m9 M if (enumValue==0)
+ [! W) B% S0 \+ N8 p0 m {
' U L! j9 V3 w2 U+ Q, U& I selection0->GetProperties()->SetString("LabelString","选择边缘");! _5 B& ?6 l- R8 d# S2 p
std::vector< NXOpen::Selection::MaskTriple > maskTriple;+ T2 O: R4 s" e, `( p# k
Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
4 m9 y5 ]; v8 B8 S, W Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
4 v" x- M% j0 u% D/ u# W maskTriple.push_back(mask1);
$ x0 _8 \! F# y5 a. { maskTriple.push_back(mask2);, q+ d- R, Y- P# N
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
$ x5 E Q5 R& k# A$ s }3 z9 j# I9 V! g$ z# O
if (enumValue==1)
7 b) e# O- b( h {& P* r- I2 Y, s! }* ~
selection0->GetProperties()->SetString("LabelString","选择表面");/ z9 }' Y* g3 j2 ]4 L
std::vector< NXOpen::Selection::MaskTriple > maskTriple;
* k' r2 P I$ e Selection::MaskTriple mask1(UF_face_type,0,0);/ R% ?, S& j9 v% U d' K
maskTriple.push_back(mask1);9 m2 Z; z) w( {
selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
$ x4 I6 Q) h9 I) i1 _; U }- N7 j% R/ N, _1 c
if (enumValue==2) $ A, N% z1 J2 L- n) u7 x/ [6 O
{ ) K5 t. l3 p% c
selection0->GetProperties()->SetString("LabelString","选择实体");
! k3 s* W# t- Y std::vector< NXOpen::Selection::MaskTriple > maskTriple;
" \% ]9 u! t# g3 ]: x9 } Selection::MaskTriple mask1(UF_solid_type,0,0);
, t. [" @. B: f7 j maskTriple.push_back(mask1);
; R- n& [# t2 _( C' S" Q selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
B% Z R; d3 I" r }' D. W& f- z9 h7 X) z% `" O
6 |" h3 t' ?5 i' \$ {0 W
2 u1 [. q8 B% v7 l6 e5 t
//------------------------------------------------------------------------------
% w/ i8 J8 z/ S7 `+ A//Callback Name: filter_cb 过滤不符合对象
T: h0 L3 f' I; t. s. @4 K* t//------------------------------------------------------------------------------) C( b3 W+ u8 @1 F
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)& A+ A0 j7 \+ {
{
! Q- B$ p6 m/ ]' @$ z 1 M$ v: f* p ~( |* J5 y
int enumValue = this->enum01->GetProperties()->GetEnum("Value");" U7 d. q: k3 n( s% Y. M8 j p
if (enumValue ==0)
' u- `, x; h3 D+ d {
. k2 w/ D! }) e0 Y tag_t obj=NULL_TAG;
/ Y* l$ j- z" ^( V int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);9 B9 `% M0 `5 i* X4 F& N
if (err!=0 && obj==NULL_TAG)+ D; F, v1 _8 ~! a, _8 g, b
return(UF_UI_SEL_REJECT); //不加入到对象预览列表6 _5 U6 x' P* `9 r1 E
}
) R7 P$ Y) C+ C' G+ g8 o else if (enumValue ==1)
5 k: z3 r1 u* x' S P5 {' L {
6 R9 i9 c- S& Q8 w% f2 S& K' j/ e; S int type=-1;
& V% E( `& ]% [9 H2 J int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
. x# C% H4 p! Q8 ^: y if (err!=0 || type==-1)
# o- s0 J/ h5 B, X return(UF_UI_SEL_REJECT); //不加入到对象预览列表
0 _* |5 A- c, ], k3 B; ]( Z }5 P7 Z# ~# i; {) J
else if (enumValue ==2)0 ]" \& ?* v: J8 c
{; U) i* y7 o9 _8 E# K4 `8 H
int type=-1;
6 k. g1 E6 F8 N, z1 I7 Q5 u3 @8 Y' w int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
+ O) }, J4 p; i+ z& u. Q3 \ if (err!=0 || type==-1)
) I' p; k- s* B; G' E1 N% t) ~ return(UF_UI_SEL_REJECT); //不加入到对象预览列表
& x/ W2 Y: g, l }: s1 u9 ~' J% z, a) S
1 J8 I w+ }- [7 H9 W3 l return(UF_UI_SEL_ACCEPT); //加入到对象预览列表$ s3 D6 P! v; V' e& K
}: i; J/ o6 x5 R
|
|