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 5992 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、选择对象
1 A" P! r# X- R
- X3 @, w" i" }; R捕捉- M1 m* {; @* d6 B/ p1 I# n) l; t8 B' s
  PointOverlay             是否显示捕捉点' O5 ]- b$ t* k1 `
  SmartUpdateOption        智能更新选项2 j# v$ g1 Q: y, {% U! q7 O' `
                             Within Modeling   在建模  T' R# ]8 M5 R- r- p8 ]$ t0 a7 R! [
                             After Modeling    建模后
! k3 }* R8 z* U/ D7 F, N                             After Parent Body 实体父后+ J& o+ f# V' b$ B2 _9 ?
                             Mixed             混合/ f; M; q$ A3 P- P& R6 T& L; Q4 q
% ^) h5 y1 N4 ^, p; O4 M
  SnapPointTypesEnabled    设置捕捉点类型的可见性
: p& [5 o' W" g/ c! p, @' k7 J; _- H  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用8 E! ]' j0 k- r

( [: [, ^! J5 f4 b常规1 i4 T4 {* U4 L! c
  BlockID  控件id
5 ]0 g3 G5 r/ H  Enable   是否可选/禁用控件+ z& E9 g- o% W
  Group    组
  Z& {0 \: ^# u9 @, L2 W  Show     是否可见9 C6 V$ v. }1 I

5 c' T- Q; l$ n. A9 k$ v其它 / a0 m- ]0 x8 Q. z; b
  附着1 ^1 G. Y$ b" @7 d
    Bottom  底( ^/ l+ E% E3 u- Z; |* p0 F
    Left    左' F7 G7 @  y% p2 a3 r" r) E2 w0 c
    Right   右
  [0 R2 e" ^7 u1 l    Top     顶# E- }0 F! g" [- c

8 v3 }& d) b, N, i6 w5 f- b特定于块
+ ]( n3 m2 g: j: c  AutomaticProgression     选择后焦点是否自动跳到下一个控件* X, y0 H% W) n) Z' n# S
  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
5 `6 ~, {& o, ~5 K5 d  BalloonTooltipLayout     动态提示布局0 v+ {' a" `8 V
  BalloonTooltipText       动态提示文本内容
* G! y4 H( ]* w" Y6 e; ]) b: \  Bitmap                   指定图片
& b( |- }2 i# R! }! N$ Q  BlendVirtualCurveOverlay 是否显示虚拟交线
1 F7 }; l& b9 N% S5 I, u  CreateInterpartLink      是否显示部件间连接图标在选择条上
. _& R3 H  ^' N$ P  Cue                      提示' _' j5 d& b" Y1 S8 z* h: m, B/ Z: {
5 |( I# r# P& U$ p
  InterpartSelection       部件间选择设置; T# u3 q- ?8 x3 Y
                             Simple                                           简单. R8 r# a( w7 x; k; k) ~
                             Non-associative Interpart Copy Only              只复制部件间非关联
. t+ n& L" ^, F# j3 |# J! }0 W                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联
! T) V1 Y: N1 h' \" ]                             Associative Interpart Copy                       复制部件间关联5 b+ A1 p6 H  |$ F3 l) F
9 U0 K( ^; u8 d5 H0 ^3 U
  LabelString              标签标题
, x9 `6 C; i# z! s" B  MaximumScops             设置选择范围$ k+ o. G! k: E' P) o& U) w0 N$ Y6 q0 m
                             Entire Assembly                 所有组件/装配) z3 w. t! X- @, @3 I
                             Within Work Part Only           只是工作部件, X7 s5 n) G  F; ]2 @! C" ?' ]. D
                             Within Work Part and Components 工作部件和组件/装配)1 C) I7 |: F4 p7 S# E; p

, f0 j  M  i) @1 C% {6 }  SelectMode                设置单选/多选 , P" o; {5 D/ v% v
                             Single   单选
$ R6 q; u2 _) ~# |- j) a/ m. C                             Multiple 多选( H% C0 J+ @0 }! J( L

( m1 p; D' {1 {  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)+ q, k6 ^' B4 L) E6 E
  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
1 h0 U1 F- `4 |( b% f) \
" x- L& l6 d4 d: I& w# h, V) ?————————————————————————————————————————————
2 @% Y5 {; ^& B+ E( _————————————————————————————————————————————8 ]4 |  v, t6 `+ @# F7 q
咧子:获得selection0控件选择的对象
2 e( j7 }0 _  Z# E* V$ o9 s" K      UF_initialize(); ' I( V. J5 ?" }& L
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");
* @5 M4 R# a3 S. U( T      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数
& V- L% |; J% h2 {      {      
* U2 o) q2 ~1 M* o         UF_OBJ_set_color(objects[i]->Tag(),1);& a& L# e+ T  `
      }
- L2 \% W: o7 l5 \0 \9 |      UF_terminate();! @* \' ^! V% B

3 u- U- ?9 T2 g0 j6 h; B4 ~4 N————————————————————————————————————————————3 y1 @( ^4 b, w, E7 i. x0 c
咧子:对象加入到selection0选择控件的对象列表8 s4 H( d$ Q1 R8 t, c/ k

: ]* k; k- x+ G4 N      tag_t obj=NULL_TAG;0 n% R# q0 Q4 x/ j; v: b: x- z+ n* n
      double point[3]={0,0,10};) Y2 K# n+ L& ]' [
      double XYZ[3]={60,50,80};
. ~+ O- K# `6 Z* ^+ o      char C[132]="";
$ i" O- V% q$ Q! b( U* q      char K[132]="";
( E2 l, e& i& N: ^! }      char G[132]="";
" _2 q0 ?9 _# x9 j9 \0 I. o, ?      sprintf(C, "%f",XYZ[0]);
0 f- b3 D6 g  t$ Z! J3 g      sprintf(K, "%f",XYZ[1]); 0 A" i% u# d# q( [+ h4 [8 P
      sprintf(G, "%f",XYZ[2]); ; {) C3 c5 ], u5 @( x4 \
      char * edge_len[3]={C,K,G};
/ x. o6 W4 u. N. o0 L- J      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方/ ?& X3 p3 N. m" e+ V* i. V
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体" O+ Y9 W, r& Q/ J0 D6 j5 Z

8 a& U& O) H/ [. G) ?      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen
2 c+ D; M& M* C5 {; Z      std::vector<TaggedObject*>objects;& l& N0 Z4 b% O7 p% x' l$ @
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表
4 s' N, k$ I: f) p      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
) D7 A& ~4 [1 h( D————————————————————————————————————————————6 q2 ^* p! ^; x0 ?) _

) V2 u2 _" t, O  d0 I$ @//清除对象
, \% N# ^, s( V/ k6 jstd::vector<TaggedObject*>objects;
: O- s* _; D" ^" M5 jobjects.empty();1 ?( L7 e3 S9 [4 j' ^+ @1 {/ ~
selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);+ k. i* ]9 J, G" Y

" S! y: y1 N- ~& \- P————————————————————————————————————————————
8 O$ |# R& z8 x咧子:只选择面7 i& c/ _5 S1 c* c8 M/ X! e0 o# a
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤
6 @2 m5 S! ?1 I3 t; c( G' i+ m% X, D$ Y1 j
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
5 r7 B$ J7 g: y0 J* n6 o  i8 k. }9 X3 y% K: U) V* b2 W4 Q/ \
        //对象选择过滤 只能选表面& U; }2 x5 e* d; W; l; }( b- g
        selection0->GetProperties()->SetString("LabelString","选择表面");8 x3 ~! T0 d- r0 a
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
  r# q  v( L+ f% g' U' D        Selection::MaskTriple mask1(UF_face_type,0,0);
+ a& ^' F( M0 V8 s& }6 g! p        maskTriple.push_back(mask1);
) `. `) }( a' ^        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);( ]! c: M) K3 v

; y& ]5 _7 X$ j8 [4 j$ b. ~! L. [$ i3 C
咧子:只选择面 【UG本身过滤器跟着变】
! i0 r1 |) ^2 R  y        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
9 R2 r. o/ I) \; }3 c% n7 K7 I) F  F2 q
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式. s; i  ~4 H  J7 }( O
# B) B( c: g. s( T" g
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
+ [" k% g: ?! |1 t5 ^( k5 W) d& D        Selection::MaskTriple mask1(UF_face_type,0,0);
* Z. x( h- N) l% i        maskTriple.push_back(mask1);% b/ ~, s1 \1 v% a
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();
6 j( T1 A( r% k' a0 I! N9 k        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);% ?7 x2 [& z! J% X& x* q" X
        delete selComponentProps;* L5 T  E7 M$ n) T- A
        selComponentProps = NULL;
) b1 u2 M* Q) Y$ o% x# z. T  P0 `- p8 M; Q* Z
上海点团信息科技有限公司,承接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

列子4 e  \# h0 X/ L3 N' {
* o- V" [8 A0 @
————————————————————————————————————————————2 f3 ^' s6 y  f. g0 ~! _: [
————————————————————————————————————————————  g3 \- e/ r/ q, g0 p
咧子:只选择 实体边缘 直线和圆弧/ _; ~2 l; r- N, d: t% A
" h$ I+ m. S$ M+ x
  initialize_cb() 初始化里加代码 可进行对象选择过滤: X8 n5 _' P! L5 h2 P- l9 J
+ L- D5 L# H! V; I8 }
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式8 ?, R2 ~+ l/ C
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧7 r; F! h. [% V$ o% W6 g9 h; H
                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;8 w6 }4 n; i) x5 o  T9 _# L2 D9 B/ G: r
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
6 S4 Q- i! t6 E: _& z                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
, ^: I7 C! u/ n; J# E6 h8 u( I                        maskTriple.push_back(mask1);
. S! r: Y, G. b2 X3 f                        maskTriple.push_back(mask2);
' r% D% L" x! Z                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);1 @' f+ t( Y+ i  g4 \
8 o4 N: ]$ G% g
//过滤无效的边缘
& c+ S1 @- B" x6 Pint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)' K; O1 q4 j: E6 z6 y$ M6 F
{        1 m& c- K% t/ l9 ^2 g5 v
    tag_t obj=NULL_TAG;; K' _; H: }8 E- p, O
    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
* v' y+ {# U& e6 l    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表: Y& }: y0 O, [; H/ M
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
; K2 O% F- z" o: _& [2 P& K}# J5 e, |1 n: F/ W( F9 ^
————————————————————————————————————————————) a/ {: n4 M. f# V6 q! R9 s
————————————————————————————————————————————
& W3 I* ?# [2 l" _2 V咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体9 E9 `# _( p/ k* y: p

* P4 \8 ~  _( L+ p9 K6 F   int enumValue = this->enum01->GetProperties()->GetEnum("Value");0 z% h$ S( y" h
                    if (enumValue==0) 2 Q+ Q' u0 g, ~: v7 N# J
                    {2 W. `4 G+ V. v6 S0 Q, q0 k8 T
                            selection0->GetProperties()->SetString("LabelString","选择边缘");
5 f/ b# r' u( ~) x: P  x                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;9 B- v$ R$ s8 u/ q! `9 ^
                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);; s4 n3 c  k8 O! V3 N* ^5 X
                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);/ F# E. p) a8 i2 j
                            maskTriple.push_back(mask1);0 z4 K: c; `* J4 C- J
                            maskTriple.push_back(mask2);
- M" I# R5 T, T( r: U6 B9 f: T& r                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);" E8 ^6 V; v" {& z# S& K4 @' `1 L( B& ~4 o& I
                    }( G- a. V; j+ f# T1 _9 {/ i2 y  [2 U
                    if (enumValue==1)
% q9 A$ {5 O6 w                    {
+ G1 d" g/ p4 e                            selection0->GetProperties()->SetString("LabelString","选择表面");
5 u* a7 z; J3 _) K8 V+ ]7 f/ J( F                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
# h2 j- A( Z2 A, Z$ {                            Selection::MaskTriple mask1(UF_face_type,0,0);  h) R2 W  ^! J; [" v2 R
                            maskTriple.push_back(mask1);7 L3 ]$ H: w5 z5 U0 t" `
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);6 {: P2 |: \* Y* `
                    }
8 \4 w' z1 ], T: k                    if (enumValue==2)
5 H6 F! P" c: Q  Z' t$ z% Y4 W  q                    {   H/ b9 r" @; w+ X9 _; o5 s
                            selection0->GetProperties()->SetString("LabelString","选择实体");
3 p. p' }' j) i" z6 f" ?) v3 C                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
% i( e3 p3 |4 v' s$ q                            Selection::MaskTriple mask1(UF_solid_type,0,0);* c+ K& Y" k6 ~  C. i. X( p
                            maskTriple.push_back(mask1);/ Y, x( m) m$ h  e! i' s/ ^
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);* g% q" ]3 p" I3 h( h6 W& A
                    }
& r' N: m# P( I5 }* T
$ N: w' s, k7 e; F9 g) I
- `# G7 A3 Q7 j; P9 V//------------------------------------------------------------------------------
# z& {: Y5 {- Z- u9 A* c: L//Callback Name: filter_cb 过滤不符合对象- e' e3 p6 _8 S% E" X& [& b
//------------------------------------------------------------------------------
7 I# m6 z" x2 a' N" Q) zint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)# {$ M$ e0 x) ?# d/ W
{
5 j. G8 R0 V7 Q3 u9 h/ {; m' M        ) [/ H) f1 p3 w2 D2 O$ l% O0 k, ]
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");
: R1 d6 ~! ^, V8 T* a0 \        if (enumValue ==0)  J( r- Q# E2 a" k7 }. P
        {
5 h" r; V% b8 Y- p9 R                 tag_t obj=NULL_TAG;8 p0 g8 c! m0 v4 s
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
  j  m# S( ], E' {" S                 if (err!=0 && obj==NULL_TAG)
, {8 t5 Q8 F4 z# I2 ^! q" Y             return(UF_UI_SEL_REJECT); //不加入到对象预览列表' k# `5 X5 u) f8 R2 e
        }
! t9 \& N' [+ ^( C$ g        else if (enumValue ==1)# ?( ~& l) S% Y% l5 w1 f6 w8 L
        {" ]4 N0 @# i2 m
                 int type=-1;3 l( E( L7 T5 m- ]$ F6 Y" f
                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);, W9 J" t  U, F  `2 x" ~- N
                 if (err!=0 || type==-1)' I8 |& h9 K+ _9 a: u/ @1 x; i
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
, l! x4 C7 r, r7 X        }* ?; R0 h" g: }
        else if (enumValue ==2): ]1 T. c" V/ D3 W( {5 ?0 A  `
        {" Y$ C. `  `% T" x/ U- g
                 int type=-1;
! O2 |( A/ w( m# J/ t1 C                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
+ v: M% c( v; G7 z                 if (err!=0 || type==-1), ^: n; L/ m( s# Y: [
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表" J& O, ]! @: e2 T5 s* A% V# m
        }
8 f8 v; C8 k9 l! T2 X
1 L. P3 J% n. x        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
' k: ~5 B$ b! e6 i: k}7 d+ Z4 k: V3 P- B# ^( |& ]# Y" L
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了