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 6012 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 `& ]5 u$ A; k% T* |" T$ W4 R/ c4 Y1 ~; y
捕捉8 {$ E) G7 \8 z" |% p( N
  PointOverlay             是否显示捕捉点
# w9 W! X0 a# P3 _* h/ D  SmartUpdateOption        智能更新选项
, n( _% k6 d0 v, o. q; T3 g, M                             Within Modeling   在建模
  J" u, |, N9 M6 t6 S1 S                             After Modeling    建模后
0 [  _' q* N0 n- y5 _                             After Parent Body 实体父后" F3 k' c$ w% J  ]
                             Mixed             混合
: L1 J' x2 L, w% X! c. d6 I7 H8 y$ Q+ O8 C( n" ~
  SnapPointTypesEnabled    设置捕捉点类型的可见性) C6 i9 w$ r/ X. y* l" C; C9 ?" I
  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用( n# w# Z8 G7 M) A  ^' r1 p

# ^- h: }% y/ T2 F3 }* V  N4 Z常规% P% t3 c# y, r5 v3 Q) \+ o
  BlockID  控件id
& m0 Z$ b1 G( l8 V- Z  Enable   是否可选/禁用控件
$ z* p6 f' I5 w4 H, c% V  Group    组
/ r/ C1 x( z$ Z- ]$ T- S) W( S2 e3 i  Show     是否可见* X0 b" u& a9 ?7 f, Z# _- g2 D
9 Q9 f% W+ G0 i# W  K! M8 l
其它 ! x8 m$ X7 i. {7 [" `' M% Q! k1 G
  附着% B' y8 @) ]7 f4 n3 ?7 i0 M
    Bottom  底
6 f0 M2 t. }4 q# ^* e0 Q7 _    Left    左1 T7 n+ p) ?" p6 o! S8 U8 S
    Right   右
. `3 E' e0 t# n9 d- k    Top     顶, Q# \( Z& P7 T

. S8 G# T% n: w$ u' Q特定于块" u6 ^+ i- L; E
  AutomaticProgression     选择后焦点是否自动跳到下一个控件
! N% q' {, W$ Z  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
9 k. ]" b! r1 n, L  BalloonTooltipLayout     动态提示布局
  g. p2 W$ I9 n, G7 ^) w  BalloonTooltipText       动态提示文本内容& S9 j  R  s3 w
  Bitmap                   指定图片
) H1 L. b5 _8 D" `6 g  BlendVirtualCurveOverlay 是否显示虚拟交线5 r9 V* n1 T1 |# E; d" ?1 l% \
  CreateInterpartLink      是否显示部件间连接图标在选择条上
0 D  p! g! t* w' F# i4 o' \& }  Cue                      提示  a; ?+ U7 p8 Z" J1 O; T
8 n2 i. X8 Z4 K, ?  f7 p6 [
  InterpartSelection       部件间选择设置' N9 V. ^! k- Y1 X& J
                             Simple                                           简单! ~) U2 V( U' h2 z1 k6 f
                             Non-associative Interpart Copy Only              只复制部件间非关联
8 e' C4 J  e; R& s( R4 K$ Q                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联6 n' V  a' [) y* j/ ^% w; `) C$ G
                             Associative Interpart Copy                       复制部件间关联. F$ B9 j6 f$ B* @( N

8 |# c1 p7 G9 l5 ~+ B  s: G  LabelString              标签标题4 M- g' A1 l; u# H$ E2 M
  MaximumScops             设置选择范围8 _  u# V' H' E& K% _* g3 j/ u
                             Entire Assembly                 所有组件/装配) e3 P. C5 {$ x) U, V6 q1 U' ^0 R
                             Within Work Part Only           只是工作部件  H9 i7 i. e9 p$ e$ f8 G
                             Within Work Part and Components 工作部件和组件/装配). c5 p- R, J6 k3 g
- W3 Q% a* W% j" j! p
  SelectMode                设置单选/多选
3 O& b/ ^1 I$ l; C$ N' C$ j5 z                             Single   单选
& \1 `% V7 K$ [( w0 U                             Multiple 多选! I8 X5 ~% W; X6 ~$ V# c# g

( |  f5 p  l. R4 v5 R/ b5 i  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)1 |5 K, _$ `9 k/ B
  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
1 j. @2 u6 f: q" G
- b/ c  |/ Q+ h0 k* m. ?  K1 }————————————————————————————————————————————
1 u3 f9 m! ?" i+ h————————————————————————————————————————————+ y& F1 W" X3 ^% U5 F" M7 Z
咧子:获得selection0控件选择的对象& s! {0 b- Q# v
      UF_initialize(); 2 L* S4 L0 P+ Q
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");
  I# a4 Z1 c" C( W      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数2 _" q) o* o% ]# d2 H2 `
      {      
8 U5 _7 O" z1 V+ F, h         UF_OBJ_set_color(objects[i]->Tag(),1);
2 w6 W; c% F0 s' C3 ?      }
, n6 |% e6 v( o% j4 {      UF_terminate();
2 G, ]% G3 z) y: e0 S" m8 N
7 O) C6 Z2 B( y) X+ X1 l. [5 }————————————————————————————————————————————
8 B$ X3 u2 z% b6 i9 `  s咧子:对象加入到selection0选择控件的对象列表2 ]+ O9 \2 I6 @

: Z# n2 B3 t2 I/ w/ [  ~: z      tag_t obj=NULL_TAG;
. x' M& Y" p/ |, z+ T' G9 b      double point[3]={0,0,10};
1 b1 a4 j) x$ K, b      double XYZ[3]={60,50,80};2 F% Y! e. V$ c' J4 s  M1 i
      char C[132]="";
. {; u1 I3 B5 _      char K[132]="";- L; |4 ^2 Q% K. K, W  ?
      char G[132]="";) @3 N4 O; p) e# W* F. `2 ^; K6 P
      sprintf(C, "%f",XYZ[0]);6 l8 v9 N+ u7 |8 N6 q
      sprintf(K, "%f",XYZ[1]);
( g0 I6 g* r% ?3 d" f0 P4 h      sprintf(G, "%f",XYZ[2]);
2 Z$ r1 q! H% Z; M      char * edge_len[3]={C,K,G};- V' T0 }( e2 P1 @4 c+ T
      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方( b8 ]& k' z  a2 }, ?6 `1 I4 [
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体
1 _% ?( v0 z# G$ \* y. [5 R! w: S+ R4 i# q0 w
      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen
8 w8 d% y: x5 _7 q& E2 i      std::vector<TaggedObject*>objects;: i" E- ]/ m- [  Q
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表$ p( P+ B5 P  s7 P
      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);! N% [1 \" d9 \' x9 [, g5 _
————————————————————————————————————————————
7 M% Q( J" v& U( f
* ^" a1 t0 g! w9 x4 t; F+ E) {) ]//清除对象( l/ m& L* {) |4 Y9 }+ b* ?) c  ?
std::vector<TaggedObject*>objects;
. u8 S7 Q7 ^1 P( f6 `+ V4 z  Vobjects.empty();' Y/ d( [7 q- x- a. b  \
selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
" v4 M" N# R3 f" T
  p: d. {( v8 Z# b+ ?————————————————————————————————————————————
( k- ~6 T  y! Q. {; J咧子:只选择面7 P. N1 J) k2 z9 C
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤
" c. _- ~* N2 [$ K
; m9 L9 q4 u  h0 t        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
* i* @' V# c! Z4 T! c( \3 H' t3 P( l5 K6 K: m+ h# y" Y7 a' n8 u
        //对象选择过滤 只能选表面7 O: a& r5 y) F8 n
        selection0->GetProperties()->SetString("LabelString","选择表面");
, q6 K1 m+ @" E        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
1 {$ n) z; C8 G- u        Selection::MaskTriple mask1(UF_face_type,0,0);% B- }. }5 ]. Y! ~+ n. V4 ~
        maskTriple.push_back(mask1);
3 l* ?7 U' \/ p+ O+ A( @! y        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
, Q; Q( G8 R* C) s+ U( p( e3 N* S6 m$ K' \& I0 b: {. X
  R0 m/ X: }$ b; z6 W( V+ s3 x
咧子:只选择面 【UG本身过滤器跟着变】* l8 T' |, ?, D0 K' ~! w& f+ A5 Z0 g3 [
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤    ; p" [: A6 {. `) U9 P' S8 T

4 p7 E2 y! M1 U% t8 i        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式" f' y% y" ^2 s/ p  d/ A6 q

- D; ?* z" g5 k! O  n/ s1 z% Z        std::vector< NXOpen::Selection::MaskTriple > maskTriple;( V4 Y( {7 j2 o
        Selection::MaskTriple mask1(UF_face_type,0,0);
, p9 k5 q) e: G: }. j9 s/ I        maskTriple.push_back(mask1);% i* m6 @" J: K$ p
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();* `) Z* J* z9 }/ h! V
        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);
; }5 z, H9 |1 q) @        delete selComponentProps;
5 J  I6 d2 G/ s& G- |" R/ |- r        selComponentProps = NULL;
. T) I1 [6 w9 Y8 u
! @5 R8 V2 i8 x, I  d/ w0 e
上海点团信息科技有限公司,承接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

列子' i' p* u% P& H( D

% s3 F) I8 q- t3 m————————————————————————————————————————————
5 L4 h; x( f) b* g' Z2 b————————————————————————————————————————————& L+ x8 i* @8 m: q) r
咧子:只选择 实体边缘 直线和圆弧
7 R- o% X, E2 j# @% t. G/ \% ^9 M
+ S. z0 r- y+ w% G+ j7 y  initialize_cb() 初始化里加代码 可进行对象选择过滤
2 D; F. Q% N1 {* i) ^: G! W: ~
+ V/ D& d. q8 d# `        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
& D. {# j/ i( @5 j, o- h( |                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧) l" G7 H( p" F
                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
1 p5 n! ]. _: b                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
4 F; e3 F: w( B9 `" \( V6 Y$ ~                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);. C+ `, ^! `. N& k! m( k$ S
                        maskTriple.push_back(mask1);
: u/ k3 [: H, V( s6 |                        maskTriple.push_back(mask2);
; J' O- V$ @3 i& V9 P) M                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
* y8 c% j' Z5 E" z( H+ i2 [) |6 }0 ~
- r2 B% y( V; a3 G//过滤无效的边缘: t  q# r5 m  x; [9 I( ?
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)3 o) s& B* Q, B% F( s8 t" n0 a
{        ! u- r5 G# B( T9 |( [
    tag_t obj=NULL_TAG;- y; T$ r9 ^1 r* X, _' f- B
    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
& l# }4 }. u- |  u2 p    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表6 i- O& @# @; V, J/ ]
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
* D* [4 X) g3 g5 C}$ N7 D) f: `$ \1 L9 y5 z8 K0 o
————————————————————————————————————————————5 Z4 J" c4 |) n5 @" ?+ n
————————————————————————————————————————————
0 c- H+ b  A  B9 s* n9 |# r) l9 f4 i咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体5 z! U9 s+ G; }

7 {  X/ H' i+ I5 _9 x   int enumValue = this->enum01->GetProperties()->GetEnum("Value");
( D4 T7 m! Q' g& |( N                    if (enumValue==0)
' ^. H2 i6 ?# d# G1 }                    {* ~, r% Y: t8 ?: j) S
                            selection0->GetProperties()->SetString("LabelString","选择边缘");
; b( F4 a# f, R, t& ~" L                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
& J$ ~7 E% V4 H$ v, U" v                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
- K' w6 r# V; j8 e2 d                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
" K) i2 a6 K  R                            maskTriple.push_back(mask1);
& e% G$ ]$ O  m) q* @                            maskTriple.push_back(mask2);( B) g( k1 u( t: o( O6 J
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
! Y: E5 }1 B0 }3 N' x  G: s  M% H                    }! y6 a( M0 I5 d) d! r7 A6 |1 i
                    if (enumValue==1)
. e/ W- t: X- T6 \0 p* T                    {
# S  ^  |' s: a8 k: o. u8 H' `                            selection0->GetProperties()->SetString("LabelString","选择表面");2 [/ n( n$ w7 K& p/ ]
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;! K7 p* R1 C# F" F
                            Selection::MaskTriple mask1(UF_face_type,0,0);
" H! ~) `) F1 G  P% k6 R7 a- |                            maskTriple.push_back(mask1);
6 I# n1 F7 V0 Y/ p3 ^/ [  e                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);7 _' I8 d3 F1 ~8 d
                    }8 J7 [/ T% @2 p) y4 j+ m2 u
                    if (enumValue==2)
0 b4 e# T  T- \" T                    {
3 i; l) ^- Y( R' V. [9 @3 u& R                            selection0->GetProperties()->SetString("LabelString","选择实体");, q( z8 i% X- ?5 `' U3 I# ~+ G5 ]9 X2 l
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
9 P" Z* }' I% }- q8 g                            Selection::MaskTriple mask1(UF_solid_type,0,0);
7 Z$ D0 o: J5 O1 {* S% P                            maskTriple.push_back(mask1);
2 g$ b, [0 C7 z3 e( `( M# b+ U                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
" ], E) C: _& n/ m  w: b3 D                    }& j6 J5 s$ s$ B% i8 k

- U8 r6 K3 Q8 o7 P- h% f" H/ k+ S2 r5 G* n
//------------------------------------------------------------------------------  m$ F0 \. A5 m6 E
//Callback Name: filter_cb 过滤不符合对象7 U! q3 l9 r; B4 s+ q: g
//------------------------------------------------------------------------------! U1 d6 ]! i9 L7 ]+ \3 d- f
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
( I  K/ x, O. o6 ?9 T$ b{) @' A" [9 W* P$ f" B
        
7 d) n9 ~- @; ]. E' ^: b        int enumValue = this->enum01->GetProperties()->GetEnum("Value");
, f, F- w* ^5 c        if (enumValue ==0)
  E  U/ S4 ^" A# Z& |; @        {* M/ x# n. ]1 j
                 tag_t obj=NULL_TAG;* I$ L. W& y5 A4 y
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);- {$ u4 I1 Q  p- @% ~" W
                 if (err!=0 && obj==NULL_TAG)% e1 F# E9 c6 F! d
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表1 E$ e: E% f& X  _) V$ t5 m0 W. k
        }
% s8 ]0 k) I. q; J/ B4 ^+ w% [        else if (enumValue ==1)
1 L8 L( T* R0 h  A        {8 j0 s3 f: {( p* y( A" O
                 int type=-1;/ G: Y4 A- X3 a- u$ [
                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);6 T4 r( n, m; _& \8 G$ S. `+ T7 Q
                 if (err!=0 || type==-1)* e  n. A' c) L# V! K& `
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表8 y4 R1 G+ r8 Y% E
        }9 G8 |8 H( j' d( y" [9 o4 j7 W
        else if (enumValue ==2)& J) T5 m9 P' }5 D
        {
3 T# |7 q1 g+ l8 D4 ^                 int type=-1;
- K9 V" x8 ~7 T" R  A7 w                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
3 M1 M' D' M3 B; d3 D                 if (err!=0 || type==-1)
+ L& N6 ?/ X9 X5 Q             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
* U: [5 Z' M# {" Q        }
# c. s( }! ^0 e( e; u6 O
& h+ r& c5 r( [1 X, V- ?        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
: I  [2 B0 n6 ~, K4 g}
2 C5 {! E9 B- d- |1 R& f% d) h6 G
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了