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 5997 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、选择对象/ K! }9 \) X/ F0 U: r) O" x
: S' T  z$ s- }6 X7 Z, i
捕捉) ?1 D+ B5 w* V) Z; m. i3 p5 ]! F
  PointOverlay             是否显示捕捉点4 v. j  v: h9 }4 ?" }& I  j/ ^$ t3 D
  SmartUpdateOption        智能更新选项
( v7 m1 m/ l. y! B" y* |  i$ K% A                             Within Modeling   在建模
3 m' F. V/ h6 p% u- h, L3 H. y, P                             After Modeling    建模后5 @# N" D/ s2 R
                             After Parent Body 实体父后' a  a9 J1 {+ F  v& Z' D
                             Mixed             混合
! l& g5 e3 V( R- z5 ~5 I6 n
* e. J' e) F% A$ D7 O! G  SnapPointTypesEnabled    设置捕捉点类型的可见性# D$ a" w2 g$ I+ y8 ^2 g: `
  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用* z& W: _5 V& o; k/ C! n
+ K; b5 |7 K& Y' E" x
常规( Q: u9 ^9 h% U  z* s+ ~- C
  BlockID  控件id
' e* N0 B; P" B$ r1 G8 e4 c. i8 Q  Enable   是否可选/禁用控件
8 V. \" u& l$ v2 }3 I  Group    组9 _: L- A: F; n* J5 o3 o; R
  Show     是否可见
9 t; y4 d4 X; j, [
2 `. l0 h+ E5 c( d& o5 F其它 * N2 W+ `- L+ E! o' j- G
  附着
2 R' |3 ?# z4 j+ T- E% V    Bottom  底
2 M2 |/ t, z8 u' H2 m    Left    左
7 \5 ^: `1 P( p- j1 d: n% j    Right   右: j' y  d/ `" c  g  |# v
    Top     顶, s6 H. a% T/ M$ G8 N: e8 E
- y$ w0 w2 X4 b/ K* r7 V) }
特定于块
8 G: v1 U$ ~% Z) [1 I  AutomaticProgression     选择后焦点是否自动跳到下一个控件
- C! k. S4 ~9 \" e  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)" q! G% W- b3 d- x0 ^
  BalloonTooltipLayout     动态提示布局: [2 K; o% X" V3 u- z' p
  BalloonTooltipText       动态提示文本内容! O/ O  H3 o1 r/ [, E2 [' Y' e: G
  Bitmap                   指定图片- X0 J2 h: W* ]3 x
  BlendVirtualCurveOverlay 是否显示虚拟交线; o* N# u! u5 K+ `
  CreateInterpartLink      是否显示部件间连接图标在选择条上
' [3 K5 E& }" G5 g, a/ W% I  Cue                      提示6 u( |+ Q( m+ z/ F9 a
! E  D( K# o/ B7 n* l  c
  InterpartSelection       部件间选择设置+ Q0 J# S* J9 {1 s: _, `5 c4 J
                             Simple                                           简单- p/ t/ a. U, i. t% E- U/ `  P  _
                             Non-associative Interpart Copy Only              只复制部件间非关联
7 s& L# b, ?# x8 b3 G3 k                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联
1 a0 a( e! l# E4 Z                             Associative Interpart Copy                       复制部件间关联1 Z7 e% M" f$ T9 c+ I/ Z) f

/ z6 {. r8 w/ P9 e6 V8 ]$ q  LabelString              标签标题
2 M0 c7 s. k4 e! J  MaximumScops             设置选择范围. I+ R* U+ q) l! _
                             Entire Assembly                 所有组件/装配( r" m0 t" `" h
                             Within Work Part Only           只是工作部件
) h0 t3 B/ D9 _                             Within Work Part and Components 工作部件和组件/装配)
5 Z* K! v5 G7 a) ^, j2 J: _
" o/ r: ^: L9 {$ J0 O" f# K  SelectMode                设置单选/多选   u/ y% Y# B) y( z' A9 p+ m
                             Single   单选
/ H8 `+ ?# Y: a8 m( d                             Multiple 多选# B9 o* W$ V, l+ Y+ G" u
# m7 K2 I3 o/ d7 s0 p
  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)0 u' T, G* A7 p3 g5 M
  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
& Q, t8 Y! I% u; t3 T
/ G& a) N2 e" E$ @————————————————————————————————————————————/ I! v# |3 x& i
————————————————————————————————————————————3 N& g2 H) Q7 M; F/ V% J# p
咧子:获得selection0控件选择的对象
+ f7 @$ @# Q5 F2 L8 K) p8 p0 Y" _      UF_initialize();
$ P9 y" u" p' U  j8 M1 L) {      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");9 ]7 ~; R# T& k
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数
! u; a1 T! a: @- ~9 m$ O      {      3 f6 U4 @, B5 f# l) |
         UF_OBJ_set_color(objects[i]->Tag(),1);3 y( s* f3 i" ?4 f& Z
      }
! M5 f# p" J1 M4 h' v      UF_terminate();# {3 `& s5 \9 x+ l' o

% _: `# q- D6 x: X7 x" w————————————————————————————————————————————
+ ^+ i4 f# u$ l8 L- b$ |咧子:对象加入到selection0选择控件的对象列表8 H9 P, L5 h4 B% s; T
1 o9 Z# v; K4 y4 S0 Y; b
      tag_t obj=NULL_TAG;
  f0 z- E; X; ?4 f  X      double point[3]={0,0,10};. |; h% K! G! n" W
      double XYZ[3]={60,50,80};
5 B; i( N  U9 X  }3 d# x      char C[132]="";
6 Y' M7 I* n& G/ Z1 P9 `7 o5 S: V      char K[132]="";
! y# N6 m! G) K: \; D$ o- \+ q      char G[132]="";3 [- C3 c$ \4 D1 J- ?8 |
      sprintf(C, "%f",XYZ[0]);2 ^' \5 \) ~9 _+ o& g* y2 ~8 \
      sprintf(K, "%f",XYZ[1]);
1 f) |' }+ @" u+ D/ G; t  M3 f2 [      sprintf(G, "%f",XYZ[2]);
' m/ \$ M0 f9 m4 x2 ]      char * edge_len[3]={C,K,G};
$ V. M) [# ?/ m3 D/ L/ E9 M. X      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方0 I8 k7 @( e( E: c
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体* S, O3 ~* ^! P

* ~( ]1 E8 J9 f$ v6 V- c- P      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen
$ y) M) l0 Z3 g" `: o8 f  \. }' M      std::vector<TaggedObject*>objects;! @- K' g2 h: R9 h4 e& q7 D
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表4 I' r8 |" A0 H5 [6 s2 o( ]
      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
( `$ S" x% _/ t9 [. x————————————————————————————————————————————
0 p, W' p% V7 z  S# u5 L( G* Y
4 S; e9 t( Q$ W//清除对象* c# }, E$ ~% V
std::vector<TaggedObject*>objects;* i6 V3 B, d2 U5 [
objects.empty();
) J- G  S$ B  C( T  \/ x/ Uselection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
9 ?$ W& Q1 F' r: s/ r9 D0 K: j1 Q9 ]3 F
————————————————————————————————————————————
$ |( `  C  m+ n+ I咧子:只选择面  _5 M; Z2 q3 o0 w9 x) l$ S0 [# U7 ^
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤& i7 F* f; {( r  U) u; E0 s
& {, Y4 R+ e0 ~: S
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式" N7 T  e3 M( ^9 t
; l8 z, n, a- c5 X) X
        //对象选择过滤 只能选表面
! a* B( N' V, r$ z2 R        selection0->GetProperties()->SetString("LabelString","选择表面");
; K3 z+ [( a$ |8 H) y# t  f9 k7 `  R        std::vector< NXOpen::Selection::MaskTriple > maskTriple;3 @1 c- T/ R( K# j% A
        Selection::MaskTriple mask1(UF_face_type,0,0);7 M; ]  D- c/ M! O* }
        maskTriple.push_back(mask1);- u& v8 y3 M' ]( x/ d
        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
: d  t1 R4 N" q; ?
, Q3 M$ [; A( }/ b6 {2 V
- b' R9 J3 Q8 C% P9 @1 r  `0 e) C咧子:只选择面 【UG本身过滤器跟着变】: ^9 w8 P6 }$ _- b' T9 E
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
2 r3 C: f6 L. i6 R! a$ F
/ V( Z" E5 P9 c) n* o* l$ c, c        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
0 d) Z: N/ A& V8 P% A, _9 [
7 s& v. h  K# }1 d) n* q* i" c        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
  z0 X& e1 H* F0 a$ `: o        Selection::MaskTriple mask1(UF_face_type,0,0);0 }& {6 ?6 Z; C0 }
        maskTriple.push_back(mask1);! F6 t8 r9 H0 A$ X
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();
0 L; r* b& D; G; S$ B8 g5 g  ]" X        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);
7 ~" e# }& R5 x2 C; o) r1 j        delete selComponentProps;
; V3 G* U# ]; N% Y; }( X6 Q        selComponentProps = NULL;
5 C: Z* F" Y/ n2 v0 Z5 ?, V
' c3 ?* B) p+ H2 e; c$ ]2 V. T+ Y
上海点团信息科技有限公司,承接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

列子
" s+ z& |& Q& g' v9 J) z
( M$ o. u( |# V) c- Q& S6 P9 F————————————————————————————————————————————
) q% v0 [0 z% f( R————————————————————————————————————————————7 Z2 I6 v) S; `# K
咧子:只选择 实体边缘 直线和圆弧+ Z! k8 g' C6 u! A7 r8 o. h
, }) ]0 h5 F. C3 [) U: y* W
  initialize_cb() 初始化里加代码 可进行对象选择过滤
8 U+ O( b. J9 }; Z
1 A. {# _; E8 ^& M        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式- v" ~6 _% ?  W% ?/ ]
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
- t# Q# Z) p2 |$ F  H  e/ s" O, D                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
$ {2 S) c9 m1 {; N9 a8 h% `; r0 x) S                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);" l, E6 l* P1 X6 o6 o
                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);6 s5 M& ^/ z  {- y+ Y
                        maskTriple.push_back(mask1);) S$ C$ N4 _, Y% f/ F: f. E/ G
                        maskTriple.push_back(mask2);- b. a9 r7 U! [. |3 D5 B
                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);( g& k- K% q& w4 T! u3 k5 S" C) B
8 R: r( u! w# q8 {( D8 X
//过滤无效的边缘* N4 e& F& b$ {% ?1 `& N( k
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)2 [. I4 i; O1 h* l+ b, n
{        6 ^. Y; l/ j1 o: L1 y# z* e" c( ], [
    tag_t obj=NULL_TAG;% f# u; _5 x3 f0 I4 P* K
    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);( [7 Z0 R' T) b/ o, p' |
    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表7 X# f: s; N+ W8 y% ]
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
2 Z- Z+ J& _( C3 s}
" w3 [9 T/ {1 h* g- S9 l. l————————————————————————————————————————————
# K' ]* ]$ `- q+ G————————————————————————————————————————————
! b, b; j* ?0 D咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体6 \0 K/ x" M8 l( o( t8 U' |% [

4 Z5 `% [) z1 e1 x8 t8 D   int enumValue = this->enum01->GetProperties()->GetEnum("Value");4 o) ?/ C1 W9 w4 @2 h
                    if (enumValue==0) : F; p4 g3 n* x* G; R
                    {! E1 h# n, M/ o, ?" B! E6 H- M
                            selection0->GetProperties()->SetString("LabelString","选择边缘");! k: w2 ^/ M  a- K* X( F8 i
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
/ M" A* K$ R# P& i9 a$ Z  I1 _                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
+ F( y9 y( N1 P" X* L" Z8 u                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
* \5 a( q5 l& _* H7 n2 i5 v2 c                            maskTriple.push_back(mask1);% P) A0 r# G6 K/ U' j3 A
                            maskTriple.push_back(mask2);* ~8 Q, l6 D+ ^# D/ K
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);. j0 W8 x1 N/ o- [' ^
                    }5 W2 `2 {/ @' c# D! r* {0 U
                    if (enumValue==1)
$ T( Z8 L# t  f! b2 L! b2 c                    {& b1 v4 J; a# H9 ^7 o
                            selection0->GetProperties()->SetString("LabelString","选择表面");& P- v% B: j1 K3 b8 `
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
) q( U+ e$ `6 Z; f+ i9 [$ S                            Selection::MaskTriple mask1(UF_face_type,0,0);8 S) \" K) s6 I/ C) F# Y
                            maskTriple.push_back(mask1);
. S" {, F+ O- c                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
+ g" ~$ K- k# s+ P' r. u. a                    }8 U' L5 f$ c/ ?& h, H- @, _
                    if (enumValue==2) 7 R  u) Q4 r. a6 _4 `
                    {
% Y& k+ L7 s: k, J: f: N3 t1 G9 \                            selection0->GetProperties()->SetString("LabelString","选择实体");- q7 U' k, u6 ^. n
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
& c* _4 q8 B% f# a9 w! S) r& U                            Selection::MaskTriple mask1(UF_solid_type,0,0);
- c" N6 f# V9 F- k5 y& ^                            maskTriple.push_back(mask1);: ^" e& Q- k0 X0 h- H
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);1 K" d; q0 u' ?. P
                    }
8 V, o7 ~' e, \) G& M  b; H* x* H" P
- B/ K% `, Y& }: ]8 }
//------------------------------------------------------------------------------5 M' z; \  v" ]1 d1 ~+ Z3 a: o
//Callback Name: filter_cb 过滤不符合对象2 |8 V! @/ \6 \: H
//------------------------------------------------------------------------------3 O7 Y6 f9 |4 h& k
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject); ]7 D; |1 U, g" v1 s
{
- @9 `3 E1 P  N7 f        ! Y* H/ Y' {" r- g
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");. X8 h4 ?* t8 ~* f$ m
        if (enumValue ==0)+ w3 }8 h% K+ O; [( {% F$ _
        {4 f& q$ U' p- _
                 tag_t obj=NULL_TAG;
) H2 d4 I# @! C4 a' O0 \# w                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
7 J: G' f' U; M                 if (err!=0 && obj==NULL_TAG)
/ a0 l; I. v8 ~4 ]             return(UF_UI_SEL_REJECT); //不加入到对象预览列表0 j" \2 y/ I2 J5 J& r! S
        }! }2 I' i" i, p
        else if (enumValue ==1)  |9 Y8 Q6 ~1 x" P1 y( c  H" x7 U5 f6 J
        {
) a) k9 S! u/ e9 y; `                 int type=-1;) e4 R! x" G8 e3 x
                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
9 q7 g$ l+ J% _! B( l$ q                 if (err!=0 || type==-1)
+ z. ~/ q; a) Y- x& T             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
. Z" l1 T+ J3 q% D        }
( u6 E, Q  z' `        else if (enumValue ==2)
9 y1 d4 E0 ~9 G4 x/ V- n2 J7 g1 ^) M        {3 v: K1 u* z- _
                 int type=-1;
$ r1 z* |1 y7 K: A+ y                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
$ L9 R0 P% `# h# k$ V" J9 E  ]1 R  T                 if (err!=0 || type==-1)
! U+ C7 w1 d4 g7 Y+ P             return(UF_UI_SEL_REJECT); //不加入到对象预览列表. y6 S) G3 L! y; F( |) h
        }
) W; h( X: H2 A: t! }6 P+ M9 _- ?: ~' {% H- g
        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表3 @. M7 X" _. ~  I
}$ |+ L( P& |- ?  s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了