PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

2016-12-12 12:24:54 5998 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、选择对象
8 Q9 w9 l# c0 @# h9 P% }+ i
, J; u$ m  p& O) \捕捉9 d# }( d2 x# }6 v) i- F5 [7 i
  PointOverlay             是否显示捕捉点
( y  I  D1 ~! ?4 t) r- F  SmartUpdateOption        智能更新选项
) e: |) O0 A: D0 _                             Within Modeling   在建模$ q* f7 W& \+ p
                             After Modeling    建模后  O; j1 a/ o' J: \8 e
                             After Parent Body 实体父后
( g; |. H8 }6 W                             Mixed             混合
; A! L5 g) {" q+ Y& K
  P6 s0 j4 e; ?% s9 @3 C  SnapPointTypesEnabled    设置捕捉点类型的可见性
3 n6 _% t* H0 ^  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用
5 L6 S  u3 X0 g7 A1 O8 ~7 V. g( {3 I# Y5 Z/ C% D2 [$ _
常规
4 Y% K" y9 z- M! c5 P6 ^1 d  BlockID  控件id: {* V+ w4 E/ O4 X4 m1 R. x" I+ {
  Enable   是否可选/禁用控件
, s/ C% |7 G' Y. m% {9 T* h3 p2 M  Group    组6 n8 {) ~. K* Q0 Z9 F; C
  Show     是否可见$ d$ g+ N+ F2 X; f, @% `

$ p/ t' g8 g/ U6 \其它
$ Q: |1 ?) S6 E) K7 M9 j1 @$ g% D  附着1 [& n- Y) J7 k/ ?
    Bottom  底) V" e. `0 }, ?! c2 r
    Left    左
/ U" Q' e( w  H$ j& L7 d    Right   右! c9 N3 B7 \. g) A* ?1 \0 p& Y: [& N
    Top     顶! @2 t4 e+ K2 V1 S( n9 g
3 q3 \; P; p0 _3 \' D5 e
特定于块+ g  o- O2 l4 n5 Z/ W1 ^
  AutomaticProgression     选择后焦点是否自动跳到下一个控件" Z- `: c8 R0 e) Z0 |5 I4 D& E+ I
  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
9 ~% }" [  s  J8 D  BalloonTooltipLayout     动态提示布局
4 t4 p6 H6 X8 I  BalloonTooltipText       动态提示文本内容+ w3 f7 z, V- n& V" u/ }
  Bitmap                   指定图片
0 G9 ]6 p/ J- \  BlendVirtualCurveOverlay 是否显示虚拟交线- ~) {- T  n$ ]+ O
  CreateInterpartLink      是否显示部件间连接图标在选择条上, y" y7 p# ^' f2 R
  Cue                      提示+ f4 x2 T( C3 D. t) @6 C/ |
- {$ V/ n* V  M+ X# X1 }
  InterpartSelection       部件间选择设置
  |( o" F! P. D6 P2 `; s                             Simple                                           简单
" X, Z5 }3 G2 X6 B  T$ I' I                             Non-associative Interpart Copy Only              只复制部件间非关联
- |  h6 ^3 W( @6 L3 \. Y                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联( y' f- |9 T9 X+ R
                             Associative Interpart Copy                       复制部件间关联  ~8 u. }8 y! \$ b
/ F, I9 E# W+ q8 }- W; {
  LabelString              标签标题
7 y0 R9 X# P/ k9 w  MaximumScops             设置选择范围
, d& y0 ]+ t5 V* B                             Entire Assembly                 所有组件/装配
# {+ T# T) i* I+ T: ?                             Within Work Part Only           只是工作部件( V4 ?6 x- _  z8 V) X- F
                             Within Work Part and Components 工作部件和组件/装配)
8 Q4 V' L* {7 S9 _/ e, j( B% v8 e4 ], j) m) y
  SelectMode                设置单选/多选   A5 u' ?. u+ f! Y0 {0 }- n
                             Single   单选
* E/ L0 h# g3 P/ b                             Multiple 多选$ L! R7 O* k, }" z8 G
. }4 _8 ?5 ?, ?8 g! Q1 p
  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)! q+ b. r' \2 N( G5 o6 L( x
  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
+ ]7 s: u6 ]4 |: w3 ^7 a
) O* Y. |; A3 K————————————————————————————————————————————
( C$ P: i- r9 n) e" G————————————————————————————————————————————
; I& @# r% A: R咧子:获得selection0控件选择的对象" o9 ]- @, D; b9 u
      UF_initialize();
/ b7 W0 E  F8 z  y      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");4 C! p$ V) h& i
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数
0 u1 }0 i& r& N7 M4 b+ U      {      4 Y/ }, a% N0 \8 S7 l
         UF_OBJ_set_color(objects[i]->Tag(),1);
% L' J. M* R5 b0 G      }- `/ H6 q' y- I( ~
      UF_terminate();
2 ^$ i: o4 p; x% P7 v& O
0 {6 I6 d+ B; e; L* d————————————————————————————————————————————" B/ ?8 M+ V3 I0 q, l
咧子:对象加入到selection0选择控件的对象列表* {- v2 r  H" S# }9 ?* f

6 C' ~& ^; B9 }9 \" s& b      tag_t obj=NULL_TAG;
1 @/ A1 \) ]9 t; G$ I' I" y/ x      double point[3]={0,0,10};( z0 T% J" L" d' U1 Q
      double XYZ[3]={60,50,80};
& z4 c( U. F( A% V, |* Q      char C[132]="";/ N5 u3 \6 T! c$ q% D, o* y
      char K[132]="";
+ g1 k" {7 K$ ~      char G[132]="";
: `3 d, V) Y+ D0 x3 P' w4 T      sprintf(C, "%f",XYZ[0]);
- c5 \! e  L* q7 ?3 n$ V      sprintf(K, "%f",XYZ[1]);
' M  u* L* t; n8 |/ W) C      sprintf(G, "%f",XYZ[2]);
1 \2 B2 S; G. ~6 W, j! I      char * edge_len[3]={C,K,G};; w  V/ \( W$ \0 M: ?( j! b( z
      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方2 c2 M2 `* N7 |+ ?0 h, i
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体
/ D* E0 [8 M2 d
/ z9 i* @2 `; ?, c      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen5 p8 v8 `0 U- R7 |0 }1 h9 ~
      std::vector<TaggedObject*>objects;
# T$ D9 u8 S4 o. G2 C. R      objects.push_back(body1); //对象加入到selection0选择控件的对象列表
" l, }( B4 ]( c6 y! j9 ~) a4 a      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);6 g6 }, e/ ~8 ]6 T
————————————————————————————————————————————: j$ ?  J7 }; N- P4 s( N" P% z1 J. q
) ~4 u+ m+ D7 {: X0 t& A6 F+ N
//清除对象0 F/ w6 \6 j$ j6 [" W) I
std::vector<TaggedObject*>objects;
4 J0 m8 T7 J- C: L* iobjects.empty();! Z8 B- m' I& O0 w) `  g7 W
selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);) p5 D: B% p+ b2 n% b! _2 h

! @. R. \6 V. |1 ^. K" g9 Y————————————————————————————————————————————
' _( y" {1 q8 B% v/ }咧子:只选择面8 u7 B/ j0 w1 Z6 j
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤
+ s9 g: y# y4 K/ R* ~( q5 G% i$ c4 U) u
! l/ U% K9 k  q( E        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
/ ~' ~6 i  ?+ N
  r" O% S/ ^* e" A& \        //对象选择过滤 只能选表面
5 s4 m& P/ O# f0 R8 P! E5 `, B3 ?        selection0->GetProperties()->SetString("LabelString","选择表面");5 ^! j/ }9 o# Z* Z* X, O
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
4 T! ^: i* e' L4 C9 [0 Y' H        Selection::MaskTriple mask1(UF_face_type,0,0);* O+ ]- S, T8 s) E$ Z1 A6 ]
        maskTriple.push_back(mask1);* B" C9 U" p+ _$ z
        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
: i8 q; T. H/ t" Y5 x7 N
9 a" J2 c' E! `; n
% d* o7 D2 x. v  w8 h咧子:只选择面 【UG本身过滤器跟着变】5 p: A) b4 D: @* Q2 h
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤    2 R3 Y9 n6 A! y- I+ a

* l9 T: B7 c6 W- P+ S: q. m! T        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式4 c, d3 b; d0 [& B( F' S

7 g+ C+ r6 R" C9 Z( e/ B        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
3 [; Z7 P3 R; P        Selection::MaskTriple mask1(UF_face_type,0,0);% B6 X/ G- l5 W
        maskTriple.push_back(mask1);
% E: u* O- A$ Y7 q% V7 |: g* n        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();
! J4 k' g' |2 A7 {! O        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);
0 ~  d) q& F/ n( b        delete selComponentProps;  ]6 E" L0 X  K1 e0 `2 o7 N) I; a
        selComponentProps = NULL;
# A: Q* R5 B) G5 \0 I1 `) e
+ _3 S$ j- v% i- `0 \+ s
上海点团信息科技有限公司,承接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

列子
, b0 \. W4 b) |& }0 h! |" K
1 s3 }' t; W6 V) ?* T————————————————————————————————————————————
0 E' Q  G* y# s: P! d) N————————————————————————————————————————————
  m* k+ I0 j: ^5 N* _% }$ {( |咧子:只选择 实体边缘 直线和圆弧
0 I8 S/ g3 G4 |7 D% ]; q( R
( w) r& [) l2 ~  initialize_cb() 初始化里加代码 可进行对象选择过滤# k: `  e/ j$ A. \
3 Y7 S3 x4 N2 F' n5 z$ G0 q" k
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式5 z8 M, L4 O* w$ k
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧3 Y7 M* }" t4 `! O( Y
                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;3 j3 D+ f/ Q( ^
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
" H- l1 z) Y2 D, Q                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);! p6 r/ A2 M: w$ w1 r& w, z
                        maskTriple.push_back(mask1);
8 f  x( p& r  y% U) i' V                        maskTriple.push_back(mask2);
% K" ]6 {$ _' ]( A4 \7 K8 D9 d                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);) _% F" [# {& R  ~6 B1 T* O* c
4 \* N! \/ ^% r  w* \# [
//过滤无效的边缘
3 U1 K# t( X& c+ uint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
  s9 ^4 v! o( O& M{       
  x# x8 w2 h9 k3 e( p) J    tag_t obj=NULL_TAG;" a) h0 j  N7 _' i) G# ]. f, b
    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);5 D) W" s5 E+ l3 B$ A
    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表: ^) ^$ y" O( [) ~- D1 [9 T
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
' J+ Z/ Y8 s: @. N( L8 @4 A: L}
5 `' l# q3 P# m7 w( u+ O————————————————————————————————————————————9 N- t1 F- D' y9 @1 ~
————————————————————————————————————————————
2 ]6 [8 h4 ~3 V2 y咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体
  ~$ m5 |  ^, z8 N3 p9 Q' x
. `: C3 T- `7 U   int enumValue = this->enum01->GetProperties()->GetEnum("Value");
" N! f, i- d, J9 q" m0 g                    if (enumValue==0) ; O' k6 ], m$ m  {) R/ r6 h
                    {$ T4 E6 z, b/ I
                            selection0->GetProperties()->SetString("LabelString","选择边缘");
( n; A% O* h% M. X                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
* }  Z- L  F, B                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);$ ]% B% a+ |6 ?& u5 ~
                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
( ]# y5 w# {8 |- I                            maskTriple.push_back(mask1);
6 Q3 x" J, a- k" J& \- ?7 ~- ^                            maskTriple.push_back(mask2);2 C# b( D# x; H, a. Z4 Z
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);4 `! C0 s1 g( t/ W. ~3 P
                    }
; K/ t/ g; @# w/ @                    if (enumValue==1)
- r) R( i; C2 @* W4 V                    {
  K3 S' h- l1 w3 |9 Z                            selection0->GetProperties()->SetString("LabelString","选择表面");3 u* e) ^8 }( K% v$ Q
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
, c" ]. k# _9 j: o, V: X8 z# j                            Selection::MaskTriple mask1(UF_face_type,0,0);
' m0 ]+ i' q! E                            maskTriple.push_back(mask1);
  G2 @$ l) {, u$ P# E+ {" D  m                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);" T4 E0 Q( H: R0 A/ j9 Z
                    }( g" P" ?9 V3 {* i1 k- i$ g
                    if (enumValue==2) 6 g; `* E5 P* i$ q  h
                    {
3 p# y! O& P7 z0 g( p  a                            selection0->GetProperties()->SetString("LabelString","选择实体");
6 V; y* K2 M& e, @, x7 F) T5 V                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
  V/ V1 [/ z2 Q, v                            Selection::MaskTriple mask1(UF_solid_type,0,0);
# U+ a" D) D( |; \# E1 V                            maskTriple.push_back(mask1);
- a1 G* v" O$ |& [/ J  i* L                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
$ _) x* y& o' n% f* j. ]# b                    }* V& W3 P- n6 W+ o6 Q

7 ^) K( Y" `+ b8 t
6 J5 ~+ `( q5 k; v+ B7 X//------------------------------------------------------------------------------% V1 F  s- Z5 V# O; l) S$ I4 w
//Callback Name: filter_cb 过滤不符合对象
7 L2 K( i5 b6 V2 Z//------------------------------------------------------------------------------6 n/ y3 c4 P9 S/ ^) X- |9 [5 Z  L
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
. f' U0 j% s9 ]4 Y3 u{
3 r8 E1 n$ Y. [3 b% [9 q2 f+ |        - v, @) O1 N* _% L  z3 R& N
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");+ h. B4 S. g# S
        if (enumValue ==0). ?6 W/ D4 n' j( b' T* h3 A
        {
" H- o8 M/ ]8 j/ w# }+ \% e                 tag_t obj=NULL_TAG;0 C+ o9 H' W' d8 {6 M1 s
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);* V4 v1 u+ d+ _3 y3 C' n
                 if (err!=0 && obj==NULL_TAG)) ?/ a6 f9 C& i0 d) ~1 I
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
9 j1 E; i( u" `0 k* _3 i* f" I- o7 `0 t  N        }
. }* q0 L% z2 }0 `: S  y' \3 E        else if (enumValue ==1)% q) O* p  N: J$ m0 l/ Z9 K* y4 r
        {
% V7 Y& x2 g" \5 s: p                 int type=-1;
; i7 \  z& x- v& x                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);' f& m8 W$ K2 d" L* N/ I/ |
                 if (err!=0 || type==-1)
" b1 i" d& H5 F! A7 W' q' t             return(UF_UI_SEL_REJECT); //不加入到对象预览列表3 V% ?; z! a$ ^" k
        }! o! q( _# ~6 ~8 v0 L6 e/ ~' H
        else if (enumValue ==2)
- U( ^/ f  D0 O& ]7 o        {. l$ h; Y( X0 K- y
                 int type=-1;
+ N& T- {; b$ q1 d* O1 r7 u2 z                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
% z" R" j% B( ?7 i, b                 if (err!=0 || type==-1)
6 r( Z1 ?" q( l& _' r4 ^             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
$ w+ z" F* E3 L2 c0 |/ u  y- ]        }# r$ m1 ~! @7 u. H7 [5 }/ [, U7 x

1 j& \# h2 V6 P. F        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
8 Q  C, p- ~& V8 Q, g}; P( j8 g( l2 N! r6 P2 e: a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了