PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

2016-12-12 12:24:54 6043 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、选择对象
" }6 y2 `2 P% B. R/ ~; B2 Y( _3 i! O( X4 W2 R/ L
捕捉' W  u8 A4 J7 X$ r& f2 j( P
  PointOverlay             是否显示捕捉点
) }( |5 }' Q( |8 Y1 q  SmartUpdateOption        智能更新选项' `+ k$ _! b5 {) m0 n
                             Within Modeling   在建模
/ {9 y' t" P1 k, d4 X                             After Modeling    建模后
; i! o. @- }$ B' y* L                             After Parent Body 实体父后
: S* F6 l4 j: c/ C- d2 C0 L& `                             Mixed             混合
: T+ b, I$ }. m
" ^, I& T0 H+ d7 V" W. D; a) K0 }  SnapPointTypesEnabled    设置捕捉点类型的可见性
+ C! i- ]) F7 k7 a6 t# b- E" {% N1 a  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用" C  E- c5 T; U. `, t
4 G# }, e3 ?& t3 B% C/ G
常规9 u0 a9 N  Q) G. v( Q1 B
  BlockID  控件id  t* H* W. ~# D7 d6 \
  Enable   是否可选/禁用控件1 B+ L- X# ]) H  u) H
  Group    组
; t) v1 b: k! s2 m4 T  Show     是否可见
0 C& M: _! @, q, i: y( Q" q9 n2 m$ f9 q* N( b6 M; c
其它
  D: t% _$ @' D  附着
0 N6 B. \, L( W    Bottom  底
# F+ |! w' y! H7 K& b2 W    Left    左% f( H9 c% N1 l! I- J' `) ?
    Right   右
' i1 Y8 f: i" D* R    Top     顶% f$ `# b# o/ {" f# q. _) K  e
  Z% B' A1 o- F& _1 k0 Y
特定于块
4 k0 `2 ?. x' Z  AutomaticProgression     选择后焦点是否自动跳到下一个控件" W  {/ L4 ?3 n- T3 J0 [
  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
' G5 B; S% _! y8 Q  BalloonTooltipLayout     动态提示布局4 t1 F# C' Y2 ^- \2 }/ X5 ?  W" x
  BalloonTooltipText       动态提示文本内容/ q( N* f! k+ \0 M: I  L- X+ p
  Bitmap                   指定图片
; G+ s/ u" g. z* e) Y# |  BlendVirtualCurveOverlay 是否显示虚拟交线0 ]8 i& p$ Y% {# p' r. d6 }9 }+ @, [7 I
  CreateInterpartLink      是否显示部件间连接图标在选择条上9 H& E. w  k8 J, ^' S' u
  Cue                      提示
3 a1 o. h+ P* r5 ?+ X$ I7 x
) ]; W* h( m  q3 c( [) t! R( o  InterpartSelection       部件间选择设置! X& h# P8 Z  s" o% b
                             Simple                                           简单4 ^6 e; E; H" N) Q3 x; {; k
                             Non-associative Interpart Copy Only              只复制部件间非关联
/ o3 J* c  f! ]  m  @                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联' E0 [9 n  b# ?, z  T
                             Associative Interpart Copy                       复制部件间关联
- p; p; D* T- N8 F- e" [$ ]7 u# m& V5 y
  LabelString              标签标题
: `' |- v6 ]" ~0 E  MaximumScops             设置选择范围
& M  S% a( M6 ]- ^                             Entire Assembly                 所有组件/装配9 H' h$ o# X1 k8 m  O
                             Within Work Part Only           只是工作部件% K6 e, M4 i0 g) t8 x
                             Within Work Part and Components 工作部件和组件/装配)9 m, P) U+ [2 q. D. E$ `
4 \0 m% D. Y! h. v: N
  SelectMode                设置单选/多选
# _' V- m& ?5 w& @) {# e  Q/ D                             Single   单选+ f- j4 h; Y- q' O7 H
                             Multiple 多选% ~0 |2 G2 t& v3 c( z% c) D  [
! V2 y" S# w7 g$ u# W
  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)
  Q% H& C. H1 U% v  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
9 d1 `( F. b. }6 X/ z3 U# k" h0 ]+ m$ K  u. m, P% ]
————————————————————————————————————————————# F( B. l4 U" d0 u9 ?- M1 _
————————————————————————————————————————————% ?8 A% P/ P5 ^3 ]7 u/ _+ W3 [; \
咧子:获得selection0控件选择的对象5 d* ]" K- `3 S) f$ K; ?
      UF_initialize(); % a0 l4 k3 {  u( b
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");% B: G1 l* |( d+ p
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数0 p2 r+ S5 O: K
      {        H* n# K6 w  z/ a5 W4 ?5 U
         UF_OBJ_set_color(objects[i]->Tag(),1);9 d; P2 o$ U4 c' n! `$ D
      }
5 V# t0 d: Y9 G4 F( _" F8 e      UF_terminate();
1 J9 N# I5 l! b5 x9 D  `  \8 M8 C& W- }5 i0 D' n1 q: M( _1 n0 L
————————————————————————————————————————————
6 M* z2 A% \3 o- e" v咧子:对象加入到selection0选择控件的对象列表
2 L. p$ y, h% \* ?2 b4 {6 h* B. Y5 C  X
      tag_t obj=NULL_TAG;
- N1 g+ f8 p; l& D9 u" L      double point[3]={0,0,10};( N# B: [! {, n" @8 S) y" `' i2 o
      double XYZ[3]={60,50,80};' h% L& P8 ~  _# S
      char C[132]="";  E7 p) A5 E. a; l
      char K[132]="";
' H8 I' l5 b2 `; t# Z      char G[132]="";
( N- D) H% C! e, g/ y0 O- ?      sprintf(C, "%f",XYZ[0]);* ^# S2 y6 l: M; k; x1 Z& l( p0 ?
      sprintf(K, "%f",XYZ[1]);
6 P  h/ P& ^; n      sprintf(G, "%f",XYZ[2]); 5 a7 K5 T+ w- T; S# I; c9 n
      char * edge_len[3]={C,K,G};
1 P" ~: D) T4 p0 [: i      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方$ k# D- i* ^2 G4 v/ q- s9 F( p. k" w
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体1 q' g8 O& m! O$ d

: @, f8 F% I) e      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen$ u# X9 H: q! Y% y: w) L* h
      std::vector<TaggedObject*>objects;  G' X9 s- k3 m& w
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表
9 b2 V( ~! ^& B7 w. X8 n; g5 [      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);" J( M/ u8 c6 K, Z" J) ^9 d% b
————————————————————————————————————————————0 @3 s- p3 t( D$ A4 E
' T8 q  i; G) V. K* o
//清除对象( E$ K+ L# [! ]
std::vector<TaggedObject*>objects;
4 N# {0 O; ~7 L& {objects.empty();% ]7 b0 o( u, [* S! d
selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
) w. p3 `7 |. {4 q6 T0 @9 u2 b
; `' Y; ^6 V# i0 d: e! I————————————————————————————————————————————
1 H8 L1 h) k) A& }/ y8 t4 G咧子:只选择面
( W3 M$ U2 g! u# v        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤
1 r6 B) l, @" r8 n3 l6 n0 f. J' D, t
" y, k" \: Y! J" B; j) O        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
8 a4 _) l" R* v( J# U) {/ |; b3 K8 e7 s5 x* I4 t
        //对象选择过滤 只能选表面
4 Z2 p! V/ q6 ?$ T7 ?1 y        selection0->GetProperties()->SetString("LabelString","选择表面");" y3 g6 U% r& W. z) P8 G0 j- D
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;2 Z" j5 F/ [) ], m' T2 A( i
        Selection::MaskTriple mask1(UF_face_type,0,0);
) J$ B2 _0 C2 @2 ?& q8 A) E7 i        maskTriple.push_back(mask1);5 ^9 s; A6 }7 @" B" y
        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
3 [& k. R. ~% g9 I- J
9 N/ _. P$ D  A' ?9 k  [# m; \$ H! m: \: I9 y
咧子:只选择面 【UG本身过滤器跟着变】
8 W* A0 G3 Z8 n        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤    + \1 @# f- j. o
; Y- w7 u) P& o2 L4 R/ ?0 A  }
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
% n) P% R1 l* _4 j+ P7 ^1 P+ ~" A* r1 L) H  I2 A
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;# g2 B: {" u% p/ `6 A3 r
        Selection::MaskTriple mask1(UF_face_type,0,0);$ X( o% d8 e" _+ V0 s: V/ T  O
        maskTriple.push_back(mask1);
( @$ f# X' w: b- D        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();
' x+ k0 H7 s0 |4 }) p3 b, {        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);
/ K0 n1 I8 I$ f) l        delete selComponentProps;$ B5 r9 K( V: ~# Y5 y
        selComponentProps = NULL;
& j: P( N4 x# |/ S1 |
- C# a8 E( X& @" {
上海点团信息科技有限公司,承接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

列子
6 E1 J/ v7 B2 |0 }4 E* z/ |
9 s9 V/ c3 _8 y  @' p% ~————————————————————————————————————————————( Z1 c1 J; @8 b" f' l
————————————————————————————————————————————
, l) W; Y( w( x咧子:只选择 实体边缘 直线和圆弧( V" U0 S6 B( p
# H, m/ ]6 |" k0 k/ g
  initialize_cb() 初始化里加代码 可进行对象选择过滤% A: o' Y9 _- l8 e) O7 R

- m5 X. z5 n, R% D        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
! M) W6 ?, i  Z" i% L3 e  P  i                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
( n6 M0 s3 O% {9 W* `0 Z7 [1 F                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
! Y( U( Q1 @  z* Q5 ]3 Q; @9 n                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);9 A& w6 Q- ]& \+ C' p* J- t* X
                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
# r) ~) g8 ?( D% G% ~$ o                        maskTriple.push_back(mask1);
! G, s% d2 J8 |7 d0 u7 u8 S2 f2 Q                        maskTriple.push_back(mask2);( R+ h1 V+ X% p, w! w
                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
5 J3 O; [! e+ ~  h( t0 d& p8 U# ~* V& N9 {  d: Y' f5 V1 f: c
//过滤无效的边缘
# c7 @8 X. y6 cint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
) q0 ~2 V9 R$ ?{        ( l! E/ Z' B9 k
    tag_t obj=NULL_TAG;  D, @- i: v: O
    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);. |9 C1 Z/ H! M: m
    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表) k; A9 c7 I# _+ u
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表4 b8 e' p1 m" T
}
# _" y  N1 u( Y& C6 Z1 ~9 Q————————————————————————————————————————————' X, k  M% u( L" {+ Y* B) z
————————————————————————————————————————————6 E: J6 g! l# k" y, d2 q2 h
咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体  x0 b' t7 ~$ u  N9 e/ k
$ U6 @5 @: H) T; ]/ C4 ^  k5 M8 \
   int enumValue = this->enum01->GetProperties()->GetEnum("Value");( {& _# w, ^# L, A% k' [" K
                    if (enumValue==0) 6 b0 M9 ~5 f  f" [0 }
                    {
: F& D* T3 R; O$ Z                            selection0->GetProperties()->SetString("LabelString","选择边缘");5 d0 I  C  X5 J& U, E) E
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
# y# R3 R+ l  \3 _4 |) w6 w7 z2 F! e                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
& X. S5 ^( B4 H  s4 F" @                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);+ D8 O2 Z  @  `$ a, }/ ?' ^
                            maskTriple.push_back(mask1);! u' d7 k; H3 ^+ @% p
                            maskTriple.push_back(mask2);
9 B( w$ a' A0 l" L9 z                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);4 N% q( g. v$ a* u
                    }
. b: J& |) U8 Q6 J2 m# c                    if (enumValue==1)
/ r- ^% r6 ]% h! N. E' f2 A. B                    {  y; ?- O8 r9 U4 w3 ?: |
                            selection0->GetProperties()->SetString("LabelString","选择表面");- a; d- W) {+ m( ]
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
$ c' W" c( T3 U$ U; j3 b+ T0 h                            Selection::MaskTriple mask1(UF_face_type,0,0);
7 z/ S$ \' E3 v' ]0 ?7 V6 q                            maskTriple.push_back(mask1);7 n, g* _, R9 c: p2 I. N" B- a
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);/ {! Y% F! ]6 }2 ^, K4 b
                    }3 i6 {" k/ `/ D+ Z' _0 T
                    if (enumValue==2)
" p* X( R9 k5 H, l8 H( N% _. }, R                    {
1 ]/ s7 Z) R- D, Z0 ?% U                            selection0->GetProperties()->SetString("LabelString","选择实体");
, k( y1 L; c7 f                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
5 h3 Q' F- w8 R* l. ~; J                            Selection::MaskTriple mask1(UF_solid_type,0,0);7 K- O, R5 N3 O# Q. S  h  @
                            maskTriple.push_back(mask1);4 S+ c4 i. m; Y" |/ p) y3 A. M  r
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);) a- q0 ^1 e# J- a
                    }
) B4 S2 ~5 I. c' H2 k! c2 H7 u. @0 k
9 ?( V; G' Q3 X, h& o* {* N$ x; e; A% X; g6 i' \
//------------------------------------------------------------------------------
" V( j9 ?- Y# @//Callback Name: filter_cb 过滤不符合对象
( N$ m  U7 l# Z( b7 k//------------------------------------------------------------------------------3 U" ?' e4 r0 m$ e
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
8 c% k) j1 H& L! V& g8 Y{
1 q% s' y, M8 r4 N# ]        
2 A6 [0 z! u# a2 \        int enumValue = this->enum01->GetProperties()->GetEnum("Value");2 ~  ^- T. m: F, E1 e+ T4 y
        if (enumValue ==0); ]/ N( S, T5 i- E% T% V7 i
        {* R7 H$ V6 H3 u" T  J" u
                 tag_t obj=NULL_TAG;
. ?' c7 V( F6 v( U# I+ g                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
. N* O. C. M9 Q+ F3 z8 y                 if (err!=0 && obj==NULL_TAG)2 j" L7 O/ f* }+ u  O& l
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
3 x% X- K) w+ y+ [! O) `9 ]9 A        }% N/ E( J8 c2 l/ H+ ^
        else if (enumValue ==1): Z8 s6 x4 C# `) @
        {0 b8 S. s+ d/ P0 m
                 int type=-1;
% [5 X6 I) g) R                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
. m- Z9 _7 m) O. R+ d$ M                 if (err!=0 || type==-1)
0 x9 t4 N$ c8 y4 _$ v             return(UF_UI_SEL_REJECT); //不加入到对象预览列表& Y& ^- A0 w3 |
        }
% ?" H- g5 G# y, H' K! }        else if (enumValue ==2)
; q2 z- ]* t' Z/ T9 {" u$ p8 d0 \        {
' f+ U  @, N7 x7 J/ J1 h7 {$ D                 int type=-1;
' n8 X' K  j5 p8 H) [; K6 Q( L0 B                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);8 L4 A' S) o9 M- A% {
                 if (err!=0 || type==-1)
1 g2 s% ^4 P8 h0 S, @; x8 H             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
8 O1 I' ^, d) n; H" i6 G, E        }. e' r3 p: N9 n
4 Y" y3 J2 {5 \: E# b9 y
        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
, A  J) O4 k  ?4 `}; }( x4 I# s$ D- Q1 ~! s) |4 |
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了