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 5523 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 K% }4 M. Y1 e) L

2 g# L5 p- u! k( K6 w捕捉
; Q( f+ n9 c$ p! m6 g  PointOverlay             是否显示捕捉点( g5 J- [2 x) \' a( o
  SmartUpdateOption        智能更新选项1 F0 H  m- D- o& ?& E
                             Within Modeling   在建模' L0 p. ~7 z. k( W) d% I1 Z8 z
                             After Modeling    建模后' P- l% F( b+ M) R8 n
                             After Parent Body 实体父后
- l0 H3 I# d6 f6 I- |. W2 x                             Mixed             混合6 `) h' H5 c8 `, A, v: Y% O

1 y1 p/ B! O. ?8 [" V# w% h- q  SnapPointTypesEnabled    设置捕捉点类型的可见性3 @$ p% ?7 G* k0 p& B9 {  u' K" j
  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用' e0 q8 t0 N3 V7 }' O% _+ W5 O

) M$ J4 R* C9 x; t常规
" o+ d! J% x% Z7 u6 c  BlockID  控件id4 X& x- Y7 B* H# I/ q- j
  Enable   是否可选/禁用控件
. [7 y6 Y# h! x, |9 s  Group    组# u3 e& B& V+ x
  Show     是否可见+ l  J+ q' s0 s$ k: {" z
2 X" D- i/ B! w) x
其它 3 P8 w4 v, h. b3 h) H' f
  附着
4 x% G: y/ ~( S+ w; q# K' q    Bottom  底
9 T9 g3 }/ Y  ]( y( n( g/ Y    Left    左: D% h( m1 U" V6 N, A1 x
    Right   右
( z0 C. A- U" X. Q% B- R. C    Top     顶
1 S+ _. F' q* D  m( o8 }# w" \& `; `9 V
特定于块
: e% T) [. h; x. ~. R" L/ O; x. H  AutomaticProgression     选择后焦点是否自动跳到下一个控件3 u6 H/ k! Q. ^/ w8 j' q3 s
  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
1 N) K+ C0 I* _5 E  BalloonTooltipLayout     动态提示布局
  X' P2 q1 _5 q& u- o3 T7 f  BalloonTooltipText       动态提示文本内容9 K8 s! g5 @3 X4 k  r7 J
  Bitmap                   指定图片
7 Y$ l- h- ~- U& y  BlendVirtualCurveOverlay 是否显示虚拟交线
$ x# ~9 J* F9 ?: f# x' ^; o  CreateInterpartLink      是否显示部件间连接图标在选择条上  s, M$ T' J* @) K0 x
  Cue                      提示
% _9 @* l5 x8 m5 N; B/ b4 f' g
. a% M9 j4 D- a% q2 P; E2 ]  InterpartSelection       部件间选择设置
5 Z- k3 N7 ?) m& u. [/ |                             Simple                                           简单! a9 l+ j7 Y/ S) M  U- H" v+ s
                             Non-associative Interpart Copy Only              只复制部件间非关联" A, P. @$ H" a0 s
                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联; G3 J5 F, y2 q2 ^
                             Associative Interpart Copy                       复制部件间关联& a" L# `( l8 R4 i* O+ x

" U1 ^2 }( \. g6 p  LabelString              标签标题
- X  X( E0 B4 V8 V# u* R* J  MaximumScops             设置选择范围
9 N, Z# R. N2 M7 T. ?                             Entire Assembly                 所有组件/装配
# g1 o1 s. {- `- X6 K                             Within Work Part Only           只是工作部件% C4 s4 g/ }6 u/ a# E0 F. p
                             Within Work Part and Components 工作部件和组件/装配)
' Z1 z& e) F! I! m5 v; _5 E- a" }, w! f7 D2 w% Y0 q7 Z  U% r
  SelectMode                设置单选/多选 $ ]0 c" n: o( v0 g$ y5 ~1 `- Y
                             Single   单选
: |1 x& Y& U: _                             Multiple 多选) K  \2 B" l' E) L1 `* s

: {% k0 L9 e  y& u7 L6 N  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候). v3 N+ h2 O7 C. b" I  I  v
  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
5 x. v* {9 j0 z6 A3 N6 o9 w/ z, D1 u( ~: Q) k
————————————————————————————————————————————
9 I8 t! M0 A+ r! a" I& C0 E————————————————————————————————————————————/ \2 K( Y5 F" b7 \% d
咧子:获得selection0控件选择的对象
9 Q/ n' @$ B8 p- Q( ?8 a7 }      UF_initialize(); * J6 T2 a) q5 o  p& P
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");
# M# w# V/ h' p) n; z% [      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数
" H2 x/ k. n8 k5 N$ R" L) G+ v7 W* ~9 B      {      & |# W- S% q: N( i7 K0 n: w
         UF_OBJ_set_color(objects[i]->Tag(),1);
. M! R& a0 J( r      }$ C; n' Y; P" |
      UF_terminate();
. o  A/ ]( v9 s; R/ s/ C6 g; D, q8 `5 M3 M
————————————————————————————————————————————* g8 {# c6 b) w
咧子:对象加入到selection0选择控件的对象列表  @" f' h3 A; B% F: B. [7 g
  ^# K9 E& Y( F
      tag_t obj=NULL_TAG;0 q9 U: \# |; S
      double point[3]={0,0,10};6 }1 w% E. |( F5 }/ H4 J& g
      double XYZ[3]={60,50,80};! l% {$ Z# [0 S$ [, l
      char C[132]="";4 n1 f+ N" a: w0 G) K' t
      char K[132]="";
% u1 p/ i( d5 U$ y, o! j      char G[132]="";4 b# M2 M' n: Z: K" r
      sprintf(C, "%f",XYZ[0]);. ?/ H: R3 W! L1 H/ [
      sprintf(K, "%f",XYZ[1]);
6 Z+ x4 [  O3 K0 h+ t. g  W      sprintf(G, "%f",XYZ[2]); ' r" l7 d# F" [7 }" p$ K  W) C  I( ?
      char * edge_len[3]={C,K,G};) A! [6 X2 R7 {9 r' d8 ~% w! A
      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方5 t8 X" l9 T, R5 y& t( U
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体  s/ w% o. H; x% u% A
1 x( L: |5 X3 n* N& W, z
      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen
2 R3 v5 k! G! j      std::vector<TaggedObject*>objects;1 B) b+ G  x& ~" b' X  J. a
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表% f& b  m4 a6 Z- c
      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
8 Q% i4 m6 c5 O% ?1 b  X) g' U————————————————————————————————————————————  B7 a. O9 s2 v3 K6 Y" u9 r! Y2 A6 F

/ I$ u: G" R& v9 T! w//清除对象, _. m7 o6 }! J( B
std::vector<TaggedObject*>objects;4 @& w! D, f' v$ P$ _& n
objects.empty();
& `! Z  {( l2 V; w' }# _selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
# n# m6 P' E: W; [
* ?, C1 b# ^/ ?' |0 E————————————————————————————————————————————/ p, T3 S' z% d) s4 S6 i: f
咧子:只选择面
% l* \" f# A* F- V& k" A        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤) E  {" Q2 a5 p

' y7 M) T! A9 @! M        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式1 c! u. E# X7 w0 m8 [+ D3 z1 j

: ?% @/ B% c9 z/ i6 D        //对象选择过滤 只能选表面* |0 o+ |: Q: K! s
        selection0->GetProperties()->SetString("LabelString","选择表面");8 y. k* Y0 k: q3 w
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;- R* ?* W+ t: e: p& {+ z$ S
        Selection::MaskTriple mask1(UF_face_type,0,0);7 N4 G' Q3 ^) a7 v
        maskTriple.push_back(mask1);' I) o# h" a6 ^. `; u
        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
- P* `5 c# ^4 \& e6 ~9 Q& z
6 d: p2 b3 k6 D" W5 M" n8 X6 h8 o/ M% b( {9 h7 V3 y5 g. f  k
咧子:只选择面 【UG本身过滤器跟着变】
$ i% p. r( c# v3 J        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
8 D/ H. p! I" z. d# F$ {& Z( n7 M  r; ]# Z
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式0 R3 a' X4 e$ K9 f2 o! k" y

6 p$ ^% i+ X( {" _5 w0 ?        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
  }& w9 c5 _0 j" H: j/ _        Selection::MaskTriple mask1(UF_face_type,0,0);
5 C: J+ X) x! F! F$ j        maskTriple.push_back(mask1);
; O, l: J9 V+ r, `& V        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();
8 u5 D* \6 P4 E# _+ O        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);- `+ d5 ^1 ~' Q
        delete selComponentProps;7 B: ]+ r/ I8 M) o/ o2 ]  o7 F1 w
        selComponentProps = NULL;) r7 h" t" m! }: I! m9 J3 I+ s+ V

$ q5 U  C; d  H- z" 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

列子
& v- I: H8 b/ W. v8 k. }
6 h) n' U9 u; ], ]6 ]' C————————————————————————————————————————————
! ]5 `! m3 T+ F0 T$ I0 n————————————————————————————————————————————
: q" W" I( S2 f# }% [  K咧子:只选择 实体边缘 直线和圆弧! h& q" d4 b9 ]$ m$ s+ \* ?

6 G) j( K- h7 P1 k0 C% s  initialize_cb() 初始化里加代码 可进行对象选择过滤6 A5 f& @2 ~+ M4 H

( }5 Q' p" n, t1 V# t1 c! W: ^        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式; L8 T' x9 |3 ?3 `! p) B+ ?
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
1 k6 l6 @+ r% C' Z+ D                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;) h! T, `- @1 z" D2 i
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
% d! Q4 {* N- o/ Z                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);5 B0 I0 ^" ~' D0 E; {9 l
                        maskTriple.push_back(mask1);
" Q: N' ^* Y. B& d; h8 \' X1 W                        maskTriple.push_back(mask2);/ ]8 n" \1 e; i9 A# z& q
                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);: P. P9 `1 H% a, m5 ~. h
6 z0 R9 b% v# t8 n
//过滤无效的边缘* K" _1 h) L! b; p
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
/ q( W& e9 z, o, s! Z{       
9 @/ |8 [+ p9 {" v0 E$ d' \    tag_t obj=NULL_TAG;
$ @5 y1 h! N2 P    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);, N$ l4 r* S& [! q+ a
    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表8 J6 q2 E, B; w
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表* o8 c. T$ P! O1 }7 d: D, M
}$ L" Y5 g/ E5 _# u  B; p
————————————————————————————————————————————
0 k" p' p+ h3 b1 R4 l/ O7 C. D————————————————————————————————————————————! Y/ y" p' R. j- v* l, z/ R
咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体
% [8 |8 M" E' w  g9 ]8 I7 Y; [0 |. a  D' p0 |  N
   int enumValue = this->enum01->GetProperties()->GetEnum("Value");
3 I$ s# d# W! {  [, m9 M                    if (enumValue==0)
+ [! W) B% S0 \+ N8 p0 m                    {
' U  L! j9 V3 w2 U+ Q, U& I                            selection0->GetProperties()->SetString("LabelString","选择边缘");! _5 B& ?6 l- R8 d# S2 p
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;+ T2 O: R4 s" e, `( p# k
                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
4 m9 y5 ]; v8 B8 S, W                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
4 v" x- M% j0 u% D/ u# W                            maskTriple.push_back(mask1);
$ x0 _8 \! F# y5 a. {                            maskTriple.push_back(mask2);, q+ d- R, Y- P# N
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
$ x5 E  Q5 R& k# A$ s                    }3 z9 j# I9 V! g$ z# O
                    if (enumValue==1)
7 b) e# O- b( h                    {& P* r- I2 Y, s! }* ~
                            selection0->GetProperties()->SetString("LabelString","选择表面");/ z9 }' Y* g3 j2 ]4 L
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
* k' r2 P  I$ e                            Selection::MaskTriple mask1(UF_face_type,0,0);/ R% ?, S& j9 v% U  d' K
                            maskTriple.push_back(mask1);9 m2 Z; z) w( {
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
$ x4 I6 Q) h9 I) i1 _; U                    }- N7 j% R/ N, _1 c
                    if (enumValue==2) $ A, N% z1 J2 L- n) u7 x/ [6 O
                    { ) K5 t. l3 p% c
                            selection0->GetProperties()->SetString("LabelString","选择实体");
! k3 s* W# t- Y                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
" \% ]9 u! t# g3 ]: x9 }                            Selection::MaskTriple mask1(UF_solid_type,0,0);
, t. [" @. B: f7 j                            maskTriple.push_back(mask1);
; R- n& [# t2 _( C' S" Q                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
  B% Z  R; d3 I" r                    }' D. W& f- z9 h7 X) z% `" O
6 |" h3 t' ?5 i' \$ {0 W
2 u1 [. q8 B% v7 l6 e5 t
//------------------------------------------------------------------------------
% w/ i8 J8 z/ S7 `+ A//Callback Name: filter_cb 过滤不符合对象
  T: h0 L3 f' I; t. s. @4 K* t//------------------------------------------------------------------------------) C( b3 W+ u8 @1 F
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)& A+ A0 j7 \+ {
{
! Q- B$ p6 m/ ]' @$ z        1 M$ v: f* p  ~( |* J5 y
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");" U7 d. q: k3 n( s% Y. M8 j  p
        if (enumValue ==0)
' u- `, x; h3 D+ d        {
. k2 w/ D! }) e0 Y                 tag_t obj=NULL_TAG;
/ Y* l$ j- z" ^( V                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);9 B9 `% M0 `5 i* X4 F& N
                 if (err!=0 && obj==NULL_TAG)+ D; F, v1 _8 ~! a, _8 g, b
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表6 _5 U6 x' P* `9 r1 E
        }
) R7 P$ Y) C+ C' G+ g8 o        else if (enumValue ==1)
5 k: z3 r1 u* x' S  P5 {' L        {
6 R9 i9 c- S& Q8 w% f2 S& K' j/ e; S                 int type=-1;
& V% E( `& ]% [9 H2 J                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
. x# C% H4 p! Q8 ^: y                 if (err!=0 || type==-1)
# o- s0 J/ h5 B, X             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
0 _* |5 A- c, ], k3 B; ]( Z        }5 P7 Z# ~# i; {) J
        else if (enumValue ==2)0 ]" \& ?* v: J8 c
        {; U) i* y7 o9 _8 E# K4 `8 H
                 int type=-1;
6 k. g1 E6 F8 N, z1 I7 Q5 u3 @8 Y' w                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
+ O) }, J4 p; i+ z& u. Q3 \                 if (err!=0 || type==-1)
) I' p; k- s* B; G' E1 N% t) ~             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
& x/ W2 Y: g, l        }: s1 u9 ~' J% z, a) S

1 J8 I  w+ }- [7 H9 W3 l        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表$ s3 D6 P! v; V' e& K
}: i; J/ o6 x5 R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了