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 5883 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、选择对象
# H3 c+ E% [5 X% I% G9 g$ p
" h! o; P& z  O  |" H0 a捕捉
9 S. K( F% c7 N: Z9 Z! i) d: {+ B: W1 O/ ^$ y  PointOverlay             是否显示捕捉点6 t8 D$ }3 m3 [0 @" T$ R
  SmartUpdateOption        智能更新选项
: h) V0 O' m# O4 b5 |% o                             Within Modeling   在建模
. N" Q$ N5 N1 Q4 ^# l1 }- V                             After Modeling    建模后
1 c- O+ K" }. C# T% i4 d' Q. z5 B5 `                             After Parent Body 实体父后
) v+ g4 M2 n( @5 F                             Mixed             混合6 ?$ p8 ^$ E  ]5 m0 n" j2 \- p4 }
7 q& Q/ S* L1 y' }8 ~! |
  SnapPointTypesEnabled    设置捕捉点类型的可见性2 r9 r( V4 S, D4 H
  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用
3 f" i* M7 H6 j6 n& N8 z4 x; z& s  d  ^. A& [. W1 a
常规4 E8 C- r/ |- C6 I0 }' u. m0 `6 Z, N
  BlockID  控件id
3 K! t9 H* S: ?  Enable   是否可选/禁用控件
; ^( [' h* T; `5 G  Group    组+ f+ c7 y  e, V6 Z
  Show     是否可见
, D+ F7 L; i6 X/ _. A/ Q3 B$ g; W6 u2 l# x: {2 y
其它
0 M! ~# {* U4 B; q, Z% l3 l  附着: \- \. J" L& U3 l
    Bottom  底
, @2 {* A9 v& [& H# O4 x    Left    左1 R5 o9 E) ]& f/ G, K/ W+ C5 O, L
    Right   右3 O1 `' [8 [5 o
    Top     顶/ m5 e4 H- v) I1 ]" h& ^1 g& Y
' v$ R2 c% M" y$ p, M
特定于块
9 ^+ n4 `+ K& T+ B3 \# X& f  AutomaticProgression     选择后焦点是否自动跳到下一个控件
- ?- f& {4 J, S6 e$ H' M  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)3 H- B& F" T& T4 m
  BalloonTooltipLayout     动态提示布局7 F3 ], R5 \& v
  BalloonTooltipText       动态提示文本内容! c$ q: x$ k5 Y6 ^
  Bitmap                   指定图片. q# \$ u1 U& ~+ O9 @8 {* w
  BlendVirtualCurveOverlay 是否显示虚拟交线
" D6 Z8 m7 ~7 M; b, t6 w8 |$ W  CreateInterpartLink      是否显示部件间连接图标在选择条上
, Y: D  K8 a5 g  Cue                      提示2 A& i. a% P4 o

$ T0 d* D9 O- Q; y- D0 @9 N2 D  InterpartSelection       部件间选择设置
; c. h7 r9 N9 u& J                             Simple                                           简单% m- S: x" q# ]
                             Non-associative Interpart Copy Only              只复制部件间非关联
' @! Q9 ^! _$ ]0 M                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联1 B0 T* h% ~7 [1 h
                             Associative Interpart Copy                       复制部件间关联+ m! f+ h$ y8 V3 ?: [1 V
0 e4 c4 A: ]7 J8 B. A$ u2 i
  LabelString              标签标题
/ {* l: e, g* v  MaximumScops             设置选择范围
2 [7 L) |* i; n( ~                             Entire Assembly                 所有组件/装配
# l/ c$ n% V8 V& R+ l7 Y/ J9 s                             Within Work Part Only           只是工作部件) c' D8 ?  r" C0 x- s" p# a! x4 n
                             Within Work Part and Components 工作部件和组件/装配)
0 Q$ d2 g0 t+ a/ [( s3 L/ w6 [
  SelectMode                设置单选/多选
' I' _% W$ I+ p8 `( n+ L                             Single   单选! |7 o* L+ ?  P1 S, Y0 P. D0 x
                             Multiple 多选" G5 J% ~9 d- C' q7 s4 n+ V

" W* w3 s- G. N. r% T  d1 D  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)
: |! h. @) }  B) z  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)- }/ W% A! n+ u0 c+ }: z) w7 C

2 ?5 V3 P- l% Z2 K! ^: }4 G4 a————————————————————————————————————————————; I5 U  I- m+ I0 x# z
————————————————————————————————————————————
' D# D) J4 z5 k7 ?* h" a咧子:获得selection0控件选择的对象3 J7 O+ j! E% h; l: S: E$ S) w- E
      UF_initialize(); : x. c. R$ F$ w+ w
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");% I  o, h* N# P, G/ w& v
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数
" E: b+ L" @3 u& {      {      % s, a2 F. e( a
         UF_OBJ_set_color(objects[i]->Tag(),1);
; ^4 Z, i$ N7 \      }" G. D% K! r$ o
      UF_terminate();
2 n4 f! r% [4 q- E: {4 I4 a2 \! R
% y# e8 Y* m4 z: j: r* K————————————————————————————————————————————
4 O1 |( ~( O: k0 @6 b咧子:对象加入到selection0选择控件的对象列表! y4 E2 q  k6 O( U6 G+ r

7 K- I# K  G% Y4 v      tag_t obj=NULL_TAG;8 C. {/ Z$ A! S2 b" {( E; w
      double point[3]={0,0,10};
) u* e8 `% H6 c* q+ v+ D1 P/ f      double XYZ[3]={60,50,80};: ]: m, s+ T/ P
      char C[132]="";2 i' v' l7 G5 T( l# v' y
      char K[132]="";
, I, A( a* K3 j; [5 J      char G[132]="";
, i7 T8 C, u6 M# G! M      sprintf(C, "%f",XYZ[0]);
' U; S* B/ j7 O. x# V( y      sprintf(K, "%f",XYZ[1]);
. a: S7 N- v" h4 h      sprintf(G, "%f",XYZ[2]); ; I  m- x! W1 ?  H$ J1 t
      char * edge_len[3]={C,K,G};3 T* S* G& |6 X' h# z7 E, [1 o5 H
      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方
* f1 H" G6 d2 F2 X& `      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体
: q1 L/ m3 f6 X- h) r5 ?+ O
2 X" p4 @" g& q; n+ z( O7 j  z; b      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen. Y2 a4 x6 `; W
      std::vector<TaggedObject*>objects;$ N' V+ [  H* w
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表
6 o- z2 Z0 m& X+ [' ^" @6 L- G6 U      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
, }6 @: `; }- p6 T. d$ s5 u————————————————————————————————————————————, X' {% d9 C* X! A! Z6 e" _% k! ^
2 f6 [* b5 V# E  i
//清除对象3 l# ?" {) Q2 O  `3 X
std::vector<TaggedObject*>objects;- o  ?( T) i, Q
objects.empty();2 |9 o8 x0 g  E+ T* m$ B" n' g
selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
! @* T" {  g! j) y' E3 m
3 ^8 y# f  j& Q% U+ p————————————————————————————————————————————$ l! u( C. h- X% e9 r" ^
咧子:只选择面! x% W6 k$ C: U; R1 N! [; n2 z9 Y% d
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤
. b& P! a! x! A8 |
% ?. f. {9 Y7 [6 ]        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
+ O( u. s1 b/ {3 a$ c* X) ?% I+ [, G) J5 D
        //对象选择过滤 只能选表面
2 N) H. V5 P3 B1 N        selection0->GetProperties()->SetString("LabelString","选择表面");5 X8 s# w8 I2 G& i& G7 c* s
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
+ ]4 \$ y4 |0 B# H, h        Selection::MaskTriple mask1(UF_face_type,0,0);# h4 N. B$ h+ j; T; a/ n* l
        maskTriple.push_back(mask1);6 h9 V; @/ w( J5 j! p5 a
        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
6 W+ X/ \8 u  s% z. t# n& M- ?0 r" v' e% }. e% J
/ W' G8 n% v& y  A# y
咧子:只选择面 【UG本身过滤器跟着变】
4 L  w: Z3 O, N! t) \- W        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
' C# _" {: l$ Z5 I# v
: y6 i, l* E3 m6 w$ R        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
/ L# L" W$ H$ m+ _5 x- d6 n" J: H* x+ q0 f
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;. W5 ^! r1 P4 P4 L
        Selection::MaskTriple mask1(UF_face_type,0,0);, \8 {6 B! {' M
        maskTriple.push_back(mask1);) J8 m  }# }1 |) V) T1 l6 Z& F
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();' n1 R0 A! U+ e3 d1 B6 E( a
        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);
) \* P$ r1 w* I        delete selComponentProps;& m' j" T" ~" \0 c- `
        selComponentProps = NULL;
' M% j, q8 }! R9 y' F' w7 v# H) X' 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

列子$ @# p1 d6 O" u# x* ^1 W% v8 z

+ G9 A- k7 H0 n+ a% G  }————————————————————————————————————————————7 K# B3 S4 |& @$ b2 S
————————————————————————————————————————————
; }6 |& l, l1 }' ]  L8 D- h咧子:只选择 实体边缘 直线和圆弧
# g2 v6 u( ?/ K5 r- n# _9 y) g- `, ^& g: P6 \
  initialize_cb() 初始化里加代码 可进行对象选择过滤) ^# n2 x2 T- b  _3 i1 r

$ \/ [6 c- D: i6 ~4 T9 J* j: \        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
7 k9 \/ M& Z3 O  N                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
8 G6 ^7 ~# e" z4 x4 G" M3 d                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;7 P. U/ n9 n5 Q4 l' d- _
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);" O5 x( q* q" @4 s% R- N8 Y
                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);* ^4 B, D' [$ R4 c! L9 d
                        maskTriple.push_back(mask1);# W+ T8 K" {# {* Q1 @3 y
                        maskTriple.push_back(mask2);/ ^" I  Q2 y# F' @! D
                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
( r1 D5 _# a# J* ?$ P8 S- R& q4 r
1 _" w: z; W" D% ]% \//过滤无效的边缘
7 Y3 ~' y6 Y) _" aint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
7 q5 ?: w" z; H; I6 p) k{        * [0 r. o( I# V" a* x/ W
    tag_t obj=NULL_TAG;
' n3 n9 Z/ K/ q% ^  x; \    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
" n8 j% i2 |0 _: ?* L    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表
8 q" {9 G4 x6 K8 O+ ?& k* J    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表, d1 q5 J* K# n. [$ r. [' O
}
1 U2 F& o6 Z: v0 J. O! G————————————————————————————————————————————
5 Y% ~/ m3 Y; T* M% f- z! d————————————————————————————————————————————
' E4 @. |( r  [: G8 C咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体
0 {: U6 A0 H0 i0 h
  I+ f7 }2 W# U5 n   int enumValue = this->enum01->GetProperties()->GetEnum("Value");0 u6 b1 M$ c) W. [
                    if (enumValue==0)
  W5 P4 X% o2 q$ p( G- ~! d/ w                    {
$ d/ r' K5 K# M& o                            selection0->GetProperties()->SetString("LabelString","选择边缘");! @9 X: [  ]/ [3 v9 j% n
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
# }0 j5 _& K  |, j( n. r                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);4 W; q( A# a9 |7 M; ]
                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
5 Q% _2 D. w& W/ J                            maskTriple.push_back(mask1);3 c" ?+ {: z( m) P3 k7 M/ c; r
                            maskTriple.push_back(mask2);) D. l" L/ R7 u( \) A* _9 }( m# q
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
3 }$ u( `) }0 M5 \: W                    }% ?& x% R6 ~! K
                    if (enumValue==1)
3 I# {% n5 Q/ V: L6 Q                    {) r9 n( [2 O" J) n( R, X5 C% I
                            selection0->GetProperties()->SetString("LabelString","选择表面");. p6 [& j5 ?$ _3 n8 ^, S" Q
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
8 M5 n: ^0 b" ^                            Selection::MaskTriple mask1(UF_face_type,0,0);& g5 R# [- Z$ L# ?, i; p
                            maskTriple.push_back(mask1);
+ Y0 s6 @. t- h* t7 ?) i8 e                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);2 \' A6 j) i5 [$ L! [+ ?
                    }4 u3 V- `+ n. |; Q8 t
                    if (enumValue==2) " C( m* Q) ^; C: W: o9 I
                    { ( C* g2 C$ K; u# r5 M$ {
                            selection0->GetProperties()->SetString("LabelString","选择实体");0 c* E) h6 x3 b
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;0 }  T& i* u+ d0 r0 K* Q
                            Selection::MaskTriple mask1(UF_solid_type,0,0);& j, Z, w1 N& J
                            maskTriple.push_back(mask1);) Z# U# C/ O; V7 X
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);9 W4 A3 Q# p0 V* N
                    }
8 e1 J6 s+ B" T3 M; C( g) m% @
$ E) a& E) @# X9 S7 U& D( W/ r' B5 r6 h! k$ r; Y
//------------------------------------------------------------------------------0 t+ K7 ~$ L; N: F% ~8 O, ~1 O5 I
//Callback Name: filter_cb 过滤不符合对象
: D1 f9 h3 `4 A//------------------------------------------------------------------------------
& B. Y- l2 J' c" q( \int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
  y; y* C- `; Y, g{5 P( {4 x/ F- a) ]4 [# d5 D
        4 @4 [* `( Y) U/ K0 u
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");
! Z( B1 J/ n) O7 n, w$ a; n& S3 O" k  s# h        if (enumValue ==0)8 ?0 v* I2 u; d5 C8 d$ q+ W8 R1 j
        {! s* x! B& d# `" ]
                 tag_t obj=NULL_TAG;0 J2 q+ V" h- {* F0 O# y
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
0 p6 |5 s9 Y7 s                 if (err!=0 && obj==NULL_TAG)+ s2 v# t3 s' w1 r2 U3 S
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表! P" _/ h5 h, s
        }  b$ J0 L) Q; Z9 L6 @2 Q% I* |8 c7 f* B
        else if (enumValue ==1)- i1 \/ o4 ^+ ~6 m. |9 c
        {+ z9 M8 H, _1 R# v" p  [! u1 y
                 int type=-1;" H9 Q. y: t5 R# c6 k8 s( d" L  ?
                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
: U1 f; B- F8 T% i% U, L                 if (err!=0 || type==-1)
5 s8 g' h/ Z/ L) N" \4 C( j             return(UF_UI_SEL_REJECT); //不加入到对象预览列表9 r2 Y% n+ `5 U3 M& r6 m
        }# o' Q9 T' d  w1 X' y! Y
        else if (enumValue ==2)/ M" G0 |# ~  ]% }9 ?6 Y2 s' w
        {; K1 [  ~! U+ i0 h1 d' n
                 int type=-1;
" I, k  u& p8 u" p" ~$ Y  \. G                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);" m+ a# v- a/ e9 m3 k
                 if (err!=0 || type==-1)
% g9 l% k+ n1 {' H* _             return(UF_UI_SEL_REJECT); //不加入到对象预览列表- \$ W4 Q! b0 H
        }
7 t3 o' a8 y2 ]/ u, z% [, f
2 Z3 z! q8 d' w# O& W! ^        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表( s! g/ O% }! M" U  O; v8 \2 T
}( M7 J! g1 o+ w
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了