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 6075 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 f$ \# Z$ l1 S0 D6 h5 w- T3 H9 J4 d$ v" N" U( D+ k, m
捕捉# E. u; I9 L8 Q( X8 ?. G- H
  PointOverlay             是否显示捕捉点
0 f: \- A* p! Z" W5 k  SmartUpdateOption        智能更新选项
6 Y5 t  x& _* }, i, W                             Within Modeling   在建模$ n* E2 ~2 v: J! L& u
                             After Modeling    建模后0 M$ m3 y; ?1 I+ k
                             After Parent Body 实体父后% F0 }: z; m4 [* k7 X+ p
                             Mixed             混合
( |3 r$ V# s7 `. J& R: L3 @: I" v, {: {
  SnapPointTypesEnabled    设置捕捉点类型的可见性  y  K7 ]  m, d" e5 W/ G) ?- x
  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用
0 Y2 A! P, K' D2 ^, \9 u/ T
1 q( i- g& {% k) ]9 r2 G- `常规
4 X7 A3 B4 Y2 ]$ p  BlockID  控件id- ]& u' I, W- i/ I  C+ y# ~
  Enable   是否可选/禁用控件5 Y) f5 b( w, I' H  q
  Group    组
; i+ P/ ]1 T6 L0 S5 f; L) Z  Show     是否可见. N* M! P7 P6 Z: i( c- r% q
4 l! Q* v" ~5 Y* S
其它
$ l; l1 Z& A! \6 N8 V8 V1 N0 p  附着
2 H7 i* s5 t% q% a9 i3 y    Bottom  底
( |8 L) R8 }. D/ t6 `! o    Left    左
4 j6 H" ]2 P* a5 m% ~# a1 {+ d7 M    Right   右4 r; v; h$ N- x3 c" s. K
    Top     顶
6 N) \- T, y+ Y3 X) B& N2 x( a3 }
特定于块7 o  c4 p1 Q" B# m
  AutomaticProgression     选择后焦点是否自动跳到下一个控件  `7 f5 t# I1 n& `
  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
4 T" N, @* M2 Z( \2 D- H7 q  BalloonTooltipLayout     动态提示布局# b( s- M3 Z+ T  G3 p
  BalloonTooltipText       动态提示文本内容
: N4 h" z- z! O; u: w/ q  a  Bitmap                   指定图片
+ s2 w. Y+ [% c2 D9 R0 ^  BlendVirtualCurveOverlay 是否显示虚拟交线
% y. Z; k$ U/ X& T5 ?  CreateInterpartLink      是否显示部件间连接图标在选择条上
! T! q) D- p( x9 B# r! a$ t8 H0 B  Cue                      提示, L8 p3 d+ t5 s, V: g* M
* h& V" N9 m7 C. M7 P$ l2 q
  InterpartSelection       部件间选择设置1 b; p: a. j: @/ \+ m+ }. x: H- g
                             Simple                                           简单
4 R8 k3 p8 n2 B# j# ]                             Non-associative Interpart Copy Only              只复制部件间非关联
, Y0 S' M  x( [) k# h' h, d                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联
! M- y0 W: x" k( V/ A% F                             Associative Interpart Copy                       复制部件间关联
( O3 g( I+ p7 p$ |
* J8 O* `' S6 J8 f  @" _  LabelString              标签标题0 ]3 \8 f( Y3 J1 p
  MaximumScops             设置选择范围' u" u9 Y( E7 b5 ]. S
                             Entire Assembly                 所有组件/装配
+ m& z- @) E/ q                             Within Work Part Only           只是工作部件
2 b4 x- D- Q* e" y1 D& `                             Within Work Part and Components 工作部件和组件/装配)% L) b1 P( K# k

0 @& p; H( r& F2 k( N( P7 Y7 }% m" L  SelectMode                设置单选/多选 % v9 f/ \+ K2 D* G# z/ ], {" h( U( x
                             Single   单选; L. O4 O5 i+ |" {& C0 k
                             Multiple 多选4 L3 w9 y' L5 C# _6 y: v7 l+ v

  B+ O% s4 ^! N+ F5 `  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)
3 ^5 j# S0 \  ~  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)$ l7 u; a) x8 ~1 @( \

0 u9 [3 H) x4 h- h————————————————————————————————————————————# V9 y. m3 A( Y+ C1 [) @0 Z
————————————————————————————————————————————5 [% ^3 j7 s& R
咧子:获得selection0控件选择的对象+ M( `3 S$ k, P  @
      UF_initialize(); % }5 S+ W7 `8 J. {
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");4 s' L' {6 @) W1 i
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数$ f. B6 ~  o$ |3 V! H4 e, x; k
      {      
6 \1 F6 P; l$ ?1 b- T; G- ?         UF_OBJ_set_color(objects[i]->Tag(),1);
0 M, o5 W6 R2 n/ T! Z$ q; D, ^      }
; H# p* _  C6 j; X      UF_terminate();
; d' x5 J, U4 m- [7 l- y
3 }4 f- j* r, c( x" J5 j————————————————————————————————————————————
% w% a) \9 Q( K5 f5 S3 Q咧子:对象加入到selection0选择控件的对象列表
- U4 h/ r2 {. V& r+ f* X4 n4 f- m
' p0 H. m/ [$ |2 p. R, z+ ~+ p      tag_t obj=NULL_TAG;
. R8 g0 r: `$ v6 A- O) ~      double point[3]={0,0,10};% k7 j# X' m- b/ U' m+ g& w
      double XYZ[3]={60,50,80};
5 w! G/ M% v0 p# D0 W  T      char C[132]="";
. Z$ S" j1 I  \3 L$ ]4 ^* A% p      char K[132]="";
  v2 \& p& ?/ D+ S- B: [. w      char G[132]="";
% K  Y+ Z# H) z2 [: h. e      sprintf(C, "%f",XYZ[0]);7 d8 ]2 y% b3 [5 }
      sprintf(K, "%f",XYZ[1]);
( T7 L+ }; m8 Z$ y1 c      sprintf(G, "%f",XYZ[2]); ' ]# h, `6 X% \* h$ N
      char * edge_len[3]={C,K,G};8 K( _4 G8 o% q' O# m2 n
      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方
3 y; P4 [, U9 q# |9 Z5 {" N      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体: A& l" w; i" z3 I! O, a6 K  Z2 g
, g- E" N0 o' d% s: m
      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen
/ I. I8 Z4 K; H. K/ k      std::vector<TaggedObject*>objects;9 ]8 O1 \- X* K! u
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表( P4 ~) K1 J( X, _  ^
      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
% h* H0 E+ L( q& h. X& f# Q5 o) ?————————————————————————————————————————————
; u# P& k" D, e" Q; ^4 H/ t1 H! b" |: {( {5 U
//清除对象
7 T5 W: I' V6 Dstd::vector<TaggedObject*>objects;
) g' z& {8 c; P& eobjects.empty();2 p+ Y* \$ B8 n5 v2 Q' q* h1 ~
selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
4 M. z2 W% m" j2 N* O* M% i! g2 x7 o1 s6 t
————————————————————————————————————————————
3 w" {8 Q" j" U# V4 S& {咧子:只选择面
, _; Y) H/ e& a3 B8 s# v/ J        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤0 M/ m. O0 ]: y3 s2 ^, v

6 |$ K5 o8 U4 p3 y& r3 s' W4 v        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
0 e+ h+ t% w- s6 L" x
* @1 {# J' n2 g1 O9 ]& H        //对象选择过滤 只能选表面. K! t! r/ w$ G
        selection0->GetProperties()->SetString("LabelString","选择表面");, S$ G+ M- [3 u2 U# w% _5 \( z. ]7 k
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
6 Y9 a8 |* r1 e        Selection::MaskTriple mask1(UF_face_type,0,0);; I+ h$ d5 j8 V9 _( w) e' s
        maskTriple.push_back(mask1);% p! r* \3 K' H( \1 u6 ]) o1 t
        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);7 W) J. p) w" t6 c8 D; T$ Z$ C6 @
9 [5 Z5 ~8 F! m8 M0 G( O
1 |" {+ z% g% y, _; G3 j
咧子:只选择面 【UG本身过滤器跟着变】% W( q( Z8 a/ V$ y
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
7 ]) ?3 G; ]0 U" c8 S. f- D7 u/ F4 a* T) v/ D) e$ ?' x9 @
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
2 P/ Q" C; w* F- g6 U+ J, o: {9 R- _/ y! e- K
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
* {. Z& l- j7 r- @0 l9 V        Selection::MaskTriple mask1(UF_face_type,0,0);
' O+ C/ I: R8 N- Y4 Y; ~- U2 U+ U        maskTriple.push_back(mask1);# _1 h9 d- P9 P
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();$ Y5 e* f/ \1 N# V8 l
        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);) Y- \- M. T- r( ]: U9 I
        delete selComponentProps;1 L% W9 L! y6 H5 ?" z) l% }
        selComponentProps = NULL;
2 P2 E" L+ Y5 _+ D  W( c/ _
! G# n+ y! i* z4 h6 q, C
上海点团信息科技有限公司,承接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

列子! j1 n% f6 @* E6 O6 o2 `- N) O

8 j5 n( R/ v- i/ b& V. f————————————————————————————————————————————1 y0 e. m( Y! P' X( b$ S; r
————————————————————————————————————————————
) i& |9 q5 K! A  O( k咧子:只选择 实体边缘 直线和圆弧
% y7 r& y# R: n! D: m
# G' i4 `; C+ c" `  initialize_cb() 初始化里加代码 可进行对象选择过滤
" R" E* a6 W$ r3 `9 m4 H$ g+ H" Z" \, @: B
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式& J: }; K( v5 ]6 C3 O
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
2 V" c# K% l$ G( P( q, Y1 P                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;0 J. n8 y* H& x0 ]
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);7 ~8 _6 Z, H$ O9 p! Y
                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);- w% k+ Z, }9 m; [
                        maskTriple.push_back(mask1);! p% O3 a+ f. S; K  ~- t
                        maskTriple.push_back(mask2);
1 ^) s" f# C/ @2 z1 R/ `+ B                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);6 [) |9 w& D# g+ Z) w

; P- T+ Y3 v; R//过滤无效的边缘$ X, P9 A  ~- w( J' q' |! d
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)' o% H( n! Y% K# V% x
{       
# ]5 j! C  x* Y. O% A' L/ Y8 z# V    tag_t obj=NULL_TAG;
- \2 r! t2 \- w. A1 O. S2 i    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);5 }8 ]; N/ ]* z6 k8 _# ^
    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表4 t( X7 ~; k# u* \7 e& Y  }
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
% j; Q" ~+ ]0 L, o8 e3 M$ [4 G$ Q}
0 D) a+ g/ h* O! q7 j# ^# i: c) ?————————————————————————————————————————————/ p" K3 T8 [' }/ r
————————————————————————————————————————————
, n# K. I- K5 E7 s( l7 M: Z咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体) m" ]% e& j6 M* K/ ?" K
3 H4 @& x5 [& s
   int enumValue = this->enum01->GetProperties()->GetEnum("Value");3 d6 V4 |8 I( _1 B; Y' o3 T5 e
                    if (enumValue==0)
/ h5 E  v6 E: F, G+ o& x                    {# @/ M1 Y9 m4 g+ D6 B+ A. k
                            selection0->GetProperties()->SetString("LabelString","选择边缘");
( r  q( J; D) K+ W5 _4 @                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
& M3 ^" B; t4 C0 \( `) D                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
6 c) L8 E# }5 Z9 t                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
8 d: A, |  S* M) t                            maskTriple.push_back(mask1);
6 Q0 A9 I$ I8 i3 [6 C                            maskTriple.push_back(mask2);1 }7 D  F% M% X( ~. N
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
9 w+ ^6 z( U% E                    }
) e( s5 D* k, q" u                    if (enumValue==1) 8 w' u/ G) [" E& U6 u$ z0 \: n
                    {
) }, b0 w8 f( D6 ~                            selection0->GetProperties()->SetString("LabelString","选择表面");
, m( h9 y9 P  @/ }# T4 ?" t. P                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;4 j7 w7 |9 H, h/ ]
                            Selection::MaskTriple mask1(UF_face_type,0,0);
+ ]: ]- w' @3 q                            maskTriple.push_back(mask1);. F; k- b- b: i& B2 k( [. e8 g8 b6 F! f
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
' r: i  p3 b! U7 N                    }$ \; B% Y7 C; C) a- U
                    if (enumValue==2) 9 ?; R) w' L4 N1 ~* `/ L6 E+ s  r
                    {   t1 [+ k( p; G2 l8 d
                            selection0->GetProperties()->SetString("LabelString","选择实体");) K; V+ L) `  \  X& E# _
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;# `" f! G! {0 J! {3 k% P2 `! b& E
                            Selection::MaskTriple mask1(UF_solid_type,0,0);) ~+ @3 s" Z* B0 i) \5 V6 e6 E
                            maskTriple.push_back(mask1);
* w4 I' a' k/ ?* J. R. m# x7 D                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);4 F/ {1 H$ W. G- a
                    }
( O4 S: R6 E9 F3 J4 V! W" z: `3 Q& J; G. H
8 z& c0 @/ x' Q8 e) c7 J
//------------------------------------------------------------------------------
1 w3 I+ Y* X: {% v' h$ {//Callback Name: filter_cb 过滤不符合对象
8 j: E/ a; T( _* T//------------------------------------------------------------------------------# s, K. J  l8 P/ P
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)- \  T+ f* i9 u# f1 C, y6 G
{* N, t( i! A, z0 c# t0 B& F! `
        , J. W! J9 A* d' A5 o5 |
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");5 v; y( a+ G1 Q+ F. g0 ~
        if (enumValue ==0)" c# h7 a1 Z2 y8 N. C  W
        {- z. L+ c- x: `8 p& @  @& m
                 tag_t obj=NULL_TAG;9 a3 _+ P! ?1 R' a9 r4 U6 t) R
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
0 g# a; K2 h6 I& C5 [                 if (err!=0 && obj==NULL_TAG)# m5 }$ |! @( k9 P' S
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表9 ~4 r  p5 h3 ?! [) S* ]+ w
        }; x* c) Q4 a4 e4 S3 ~
        else if (enumValue ==1)5 X$ j, I+ n3 {' r+ b
        {
$ E/ }, l4 ^5 G9 R                 int type=-1;
0 @3 S' o6 U/ [" S# m& }6 m- E                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
0 h$ Y" o3 e0 A* w: B6 [9 T                 if (err!=0 || type==-1)9 F; O9 V6 q) x7 ?0 Z0 s% y2 b7 d# S
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表5 h! ~4 O4 e/ e: E! n/ [
        }
3 U0 a  `6 }8 p  e( @! {        else if (enumValue ==2)& `. w4 I0 M7 ^
        {
7 Y& R# f2 O2 t: K6 D2 `1 @) x                 int type=-1;
, P6 R' x: B: b, V: A                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
# T2 z# N: i4 q% E2 n                 if (err!=0 || type==-1)
' q7 a/ ^- M, |' V6 [3 O" Y             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
7 X1 a; x/ n, `; i3 X' v  y) p        }
* B. q0 v, i4 `8 X+ C) I$ P, i- z, G& p7 S3 N
        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
$ H$ S' @' l! H9 G5 G$ f}
& t# n6 S6 }' m1 Q8 ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了