PLM之家PLMHome-国产软件践行者

[求助] UG二次开发中,怎么选取特定的面

[复制链接]

2016-12-12 12:24:54 6090 2

heromo 发表于 2015-11-9 08:37:08 PLM之家手机频道 |阅读模式

heromo 楼主

2015-11-9 08:37:08

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

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

x
比如,第一步创建了一个长方体,第二步在其中一个面打沉头孔,那么怎么获取自己想要的面呢
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复2

15757753770 发表于 2016-12-12 12:24:21

15757753770 沙发

2016-12-12 12:24:21

01、选择对象2 ]; i7 V$ E% i( P6 ]

2 l8 V5 B6 f9 e1 z* [7 B捕捉
" s0 q6 S  L3 q+ L: U* a: b9 {( V7 D  PointOverlay             是否显示捕捉点# d  ~( B' H5 k; E
  SmartUpdateOption        智能更新选项
2 F; Q/ ^" v: \! j                             Within Modeling   在建模4 `, J' r1 o; L6 I
                             After Modeling    建模后
: y- f) ]- p4 y! U+ k                             After Parent Body 实体父后
" O. ^$ h3 J( o# |                             Mixed             混合8 q0 p9 T" _4 T; r5 s) n& g

0 L8 Q) b+ K/ ]# s9 D/ k( n8 e  SnapPointTypesEnabled    设置捕捉点类型的可见性
$ r: T% ]8 N0 F/ e, M& ~  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用+ _$ b0 g! P' X3 }1 S6 O

2 z& ?. L2 S# _+ ?9 i+ x. O, |2 C& r常规( d  m" _5 m8 c! i6 V) f
  BlockID  控件id0 p3 R% V" K6 L7 l7 @
  Enable   是否可选/禁用控件+ K' b, C6 o9 l1 {3 H6 p
  Group    组/ B$ ~* n& M( f/ j9 S+ T8 ]
  Show     是否可见
9 U. U: s/ h0 p& q$ ~, u6 n  }# K1 \% a% f3 e2 u* r
其它
* H0 N! W% Z3 Q4 N2 s4 J- n  附着  u9 i) e' A( }  q* N) i
    Bottom  底! z/ A/ Y  L, @/ L, t& t, u9 F
    Left    左
& b$ x2 f' Z- I: z2 E1 F    Right   右
+ Z$ B  j6 Q5 l( L. T    Top     顶; Z. i' n# O7 w7 |
( L3 l: ^/ m- d/ V
特定于块
' z- e$ \& n! }  AutomaticProgression     选择后焦点是否自动跳到下一个控件! P3 {* G8 A$ B0 S0 x! b
  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
  Z; C2 v6 J, k/ E; V  BalloonTooltipLayout     动态提示布局
' g# ]; |6 \& B  BalloonTooltipText       动态提示文本内容$ w5 Q' h( `% ^( d; g. J0 e
  Bitmap                   指定图片9 c, M, ^4 A5 [0 z! Q3 w
  BlendVirtualCurveOverlay 是否显示虚拟交线! Y; j! l5 `. p5 H. Y0 K  X! c
  CreateInterpartLink      是否显示部件间连接图标在选择条上
7 ^) J/ `# ^+ }' }6 i' n  Cue                      提示) S* y1 `4 t* @* j! M

, i* x; O4 U% @  InterpartSelection       部件间选择设置
8 F* Y+ q, B: }1 n                             Simple                                           简单
1 `; K9 {2 o* C                             Non-associative Interpart Copy Only              只复制部件间非关联
  Z( V) g( D7 b  g                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联
' G; J; E$ ~, _( E) H3 n4 ~                             Associative Interpart Copy                       复制部件间关联
+ s2 ~* F1 K3 Z" N* r- x
) M1 X& l) g  S  O2 ^# X  LabelString              标签标题7 H7 @: v7 S9 }% K
  MaximumScops             设置选择范围
8 I/ @0 J! Z8 s, p' ?                             Entire Assembly                 所有组件/装配- J6 G& L% o' t5 H9 F5 R) L
                             Within Work Part Only           只是工作部件
7 e3 F( C) g& G; q( x0 n* g                             Within Work Part and Components 工作部件和组件/装配)
- I8 M( G  ?5 ?% \. R6 W8 g  r# x
( `$ N( n2 e7 m. q' n4 W4 U1 [  SelectMode                设置单选/多选 $ H5 S/ z$ t& r9 }
                             Single   单选
7 p- @4 s# {& O& R( ^$ E                             Multiple 多选
- i. w! E! E, M) a/ z& c& w. u4 n) x
) R1 r* R; {+ _8 j  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)) N$ k6 C1 S# d6 [; u/ y3 i* y' `
  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)% F! y) X' ^" A' _: o6 ]) R

# k) f- H$ X1 ]3 l' S$ Z————————————————————————————————————————————
9 Z& O1 C3 x* u5 U; m9 `/ i! X: i, C————————————————————————————————————————————
3 R- J* c. O2 e咧子:获得selection0控件选择的对象, f  n) t5 B' f; v4 N
      UF_initialize();
4 V6 Y5 ]) h7 Z, T: I      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");
' L, r, L! s* E0 P4 G" m4 u      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数
0 g. F2 X/ L5 K" D) C+ c6 m8 l! j# a      {      , G) A$ H; @" Q; \" @% w1 ~
         UF_OBJ_set_color(objects[i]->Tag(),1);3 u' G1 T/ N- E, K4 y  t( {
      }
& M( E- {  P4 y! O5 o& X      UF_terminate();! J) i. F/ a7 |6 n1 c

! U1 k" ]( w) y( Z  I————————————————————————————————————————————
. b5 _) i' j. B8 w$ a# j咧子:对象加入到selection0选择控件的对象列表# U, z! W- a' o) A: b

2 V: _4 `1 v$ x6 W3 ?% n& K      tag_t obj=NULL_TAG;. T% j/ O+ Q! _: _! q* ^
      double point[3]={0,0,10};3 d$ V) i1 x, u( L$ Y/ Y
      double XYZ[3]={60,50,80};# ^! h8 p: O. E/ Q( H6 @3 f
      char C[132]="";
5 l  G' ?# I* i& A9 e/ ]      char K[132]="";* B+ O# {$ g. k6 G
      char G[132]="";3 ~! Y8 g& x$ v8 r; |0 h! {
      sprintf(C, "%f",XYZ[0]);6 S- z) p( e6 |3 h8 e$ j6 ?( `
      sprintf(K, "%f",XYZ[1]);
7 G2 x  e' J  W+ O: ~4 H3 X4 e. g      sprintf(G, "%f",XYZ[2]); 7 s4 ^# b: u5 [6 j1 z% e
      char * edge_len[3]={C,K,G};
6 Z8 x4 z' Y/ s: ^6 z$ P      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方: Q9 ^% R2 `- ~
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体9 d: T% i  A" a' q1 Z) {0 ~' ^
; G$ I$ a8 c) h
      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen+ y7 l* i; z( D' b* B' A8 ^' f3 G
      std::vector<TaggedObject*>objects;
* `1 i1 _  y" ^+ f6 U      objects.push_back(body1); //对象加入到selection0选择控件的对象列表) o8 ]& Q/ F. h: W( x: K
      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
) P! ?: R. T. Q* L1 `————————————————————————————————————————————9 w3 Q' }8 Q* \! e% ]5 ?. E5 e$ v. u

9 O# h' s& ^  O0 B2 m' f" w: z//清除对象& D. d1 }* ^/ }6 f! q$ h  Q& ^3 r
std::vector<TaggedObject*>objects;
# H5 g# _+ g4 F' k2 W% aobjects.empty();- Q# R2 D, G5 J5 I2 z' j& R. }
selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);) M! X6 X" \: E, u. f5 z

( b1 ?# @2 S& o) h$ W$ t+ s————————————————————————————————————————————. x; ~2 w0 N' U9 \, ?; j
咧子:只选择面
' U* e; s( a) y5 i. Y3 v( x        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤# [, A8 b1 g: b' c+ m. d7 H

# M# q$ t4 i* A6 N6 C        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
" p  `; _/ o1 J0 p9 K7 }6 o8 ~( G  }+ B8 D. h) o+ T& Y# t; i
        //对象选择过滤 只能选表面
( y; s7 K4 T& L: \( a        selection0->GetProperties()->SetString("LabelString","选择表面");2 R; F2 m" K+ g# t
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
1 X% d  i* ^! k/ d" N0 S        Selection::MaskTriple mask1(UF_face_type,0,0);4 x) C, P: o; `- q( x  c
        maskTriple.push_back(mask1);
4 I( Z& T! _7 @: l; u/ W5 w        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
) \0 ^) e6 p$ O/ u( Y4 z7 \% l* M. Q" z: [% X

: s' Y) N6 s8 C1 j" F咧子:只选择面 【UG本身过滤器跟着变】
( U" t) b3 C7 w6 E& Y1 g0 a0 Q        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
5 [8 f0 d/ `. |2 r& O6 M; D
& W) q& v/ Z7 c# |, i, R        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式7 A6 [$ [) M5 j$ {# [) S' J% A( X8 O
4 f3 r1 G. R* O& j$ t/ p
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;- D0 z7 U5 g# _. x. j  ]; _% o* {6 T+ A/ Y
        Selection::MaskTriple mask1(UF_face_type,0,0);( p+ F! w) p( a6 l; G
        maskTriple.push_back(mask1);+ Y- [$ H* J# b1 V1 \
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();( {1 |7 g" h7 c1 L9 A4 N1 g
        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);- H8 d% v7 B% R8 Q$ ^: y+ ^
        delete selComponentProps;2 e1 F: j! n/ M
        selComponentProps = NULL;
2 a/ n5 q/ i1 |" N$ M* @  X+ [1 S0 W% D1 }9 M) a; ?9 F  j: T
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

15757753770 发表于 2016-12-12 12:24:54

15757753770 板凳

2016-12-12 12:24:54

列子  q7 N2 x# K0 N& N: h  R% {
1 N* S9 ?! A" \+ d
————————————————————————————————————————————
% N8 V! c; U1 Z————————————————————————————————————————————
8 X7 W: H; N: _' H" c% o咧子:只选择 实体边缘 直线和圆弧, }" w1 y. {/ T) _; X

: {; x4 N0 r' N# J  ~- R( Q  initialize_cb() 初始化里加代码 可进行对象选择过滤
" R" H- x7 F& T! {9 Q
' I0 }$ E  q0 ~+ w" q        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式" f- w7 {, m2 D+ ]5 c* |# {
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧$ T( u; x) B! V# n" p* ~
                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
0 d* x9 P; E, k( I7 p                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
5 p" `  ?5 g  H" u/ W                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);$ b- Q# ^* m9 L& x. l0 U1 W
                        maskTriple.push_back(mask1);
, z6 q% h" q. f                        maskTriple.push_back(mask2);. c' c7 n# m; {" Y6 P
                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);1 x" S' y1 Q0 t' \8 ]3 v# @. d+ m

( E7 c) Z1 ]% f8 b$ T//过滤无效的边缘9 g6 S0 [) T& R- L; S/ Z, I2 s
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)' v. F$ ]! L% Q7 J: _) @
{        . t0 F) N3 U* Z/ Y" i) ~1 p
    tag_t obj=NULL_TAG;
  R+ W  \- m; N4 V- V" m    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
0 e& @8 Z% X$ z, n4 D* X    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表
$ B* j$ U  W* w    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表8 @* V" `! S* G6 R  L# w8 u% v; x
}9 J5 N: t" J7 z% a
————————————————————————————————————————————3 Z$ ^4 n& l9 a8 i/ E/ i: R
————————————————————————————————————————————
! p/ _- a$ Z  ]7 `9 B" v咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体
4 b& g' _7 o$ I
% x; `) q: O3 _& n8 `# _' B   int enumValue = this->enum01->GetProperties()->GetEnum("Value");
4 [% ~+ a( J7 p. F, n                    if (enumValue==0) & b2 k3 m+ a- a
                    {" l$ ~' o4 k4 {  C3 K  z
                            selection0->GetProperties()->SetString("LabelString","选择边缘");
2 n0 q' x( A' _1 B                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;# e* w4 w* n+ @
                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);" e6 Y5 k( u+ G2 S, P% f
                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);* e6 q$ O3 g8 U7 y9 `' f# F
                            maskTriple.push_back(mask1);
" L. a' g9 P/ y% K                            maskTriple.push_back(mask2);/ a/ j: W$ u3 a) }
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);7 J$ u1 W0 C4 \8 _/ V5 A
                    }2 X( H& w' O& m9 b/ c
                    if (enumValue==1)
! y4 R, {, b! E  e                    {
2 k4 P# ~& O+ B) {# h                            selection0->GetProperties()->SetString("LabelString","选择表面");) ]* S' n4 [3 T9 j+ [
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
$ ?! H! G* D8 A$ h" t# u                            Selection::MaskTriple mask1(UF_face_type,0,0);9 D% g  d! x# U; ^/ V9 @6 C- w3 P2 [
                            maskTriple.push_back(mask1);
: K" l$ m* L% P- j                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);8 |4 @  y: l' L
                    }
1 ^3 @* G2 |  e5 @7 [                    if (enumValue==2)
4 o* N9 e1 S3 Z" V4 e+ V) ^                    {
; y# o# C" {0 M/ `5 |: w6 p                            selection0->GetProperties()->SetString("LabelString","选择实体");0 P; F: E: ^, v' u" B
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
/ p2 d8 O8 i& E# p  a% }8 Q& f                            Selection::MaskTriple mask1(UF_solid_type,0,0);- Y+ A# b% d& v; r) C
                            maskTriple.push_back(mask1);
$ C: N% q1 B0 {- N                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);( {" l1 ]3 v( q5 S; t% k
                    }; Q# |& b) v8 \4 p; `

# z$ }. I, t3 g8 u3 p" q, L4 ~8 D
//------------------------------------------------------------------------------
: _. ]# ^6 T1 r0 D7 }! D//Callback Name: filter_cb 过滤不符合对象! c7 Y9 i( `# j. M6 w+ t
//------------------------------------------------------------------------------) A4 u6 Z3 `& Q
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject). m( J. r+ o1 ^! ~9 C# x  ]; D
{, W# v) \, w7 n, j" J
        2 i1 z+ _% H/ b% x5 p( z1 ]
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");4 |9 s7 ?5 w- n
        if (enumValue ==0)
0 D* {3 k6 c/ D        {
7 i5 ?  m! r) T3 m2 [* B% S* u                 tag_t obj=NULL_TAG;, q- }6 T- U# |+ F) T
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);6 R) B) L, C) p( |+ s
                 if (err!=0 && obj==NULL_TAG)5 n! N  C1 i$ L" w6 n  M
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表0 k# F3 B6 Q% M
        }0 R) w( U) B/ ^! M: M6 q
        else if (enumValue ==1)/ k3 J7 k% i" C8 N
        {
; b4 |9 _3 u9 }0 D                 int type=-1;
1 S- e) ?1 x$ P: ?. ~5 [0 N, }( \                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);" v# o' k" B: N- P
                 if (err!=0 || type==-1)
! t) @3 O% e2 Z! ?. z- D             return(UF_UI_SEL_REJECT); //不加入到对象预览列表' Z" z2 t; j. c" n/ P
        }
6 J& }* ~# s- `' D        else if (enumValue ==2)
8 }  u1 R7 A8 X6 D6 z6 T/ e        {
. u6 P3 N& T* w* X                 int type=-1;
( ~8 J! N1 O! m3 J                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
4 s) y/ d( H$ @8 r1 y                 if (err!=0 || type==-1)
2 R: G( {' G- O2 L' c& W5 V             return(UF_UI_SEL_REJECT); //不加入到对象预览列表- @, r" n5 }5 T4 R# O
        }
$ P  O: |, m5 ~: z, [0 s2 n  i
8 @4 e+ \: q+ K5 D& H; g        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
8 r7 X  E0 X8 F! E- q8 ]3 T; K}
: Y5 ?/ f, {* Q& @: Q2 H# q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了