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 5884 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、选择对象
6 D/ g! M  p1 e: X3 T9 W: h; g' v. M* x" {6 K
捕捉5 j1 m( D  l7 j1 B1 \$ K9 _
  PointOverlay             是否显示捕捉点
" z% \2 `/ t- T' Q$ @  SmartUpdateOption        智能更新选项" K0 e2 S) v& X3 L
                             Within Modeling   在建模& R; x( c1 T; I6 w( S3 M
                             After Modeling    建模后
; P; d" ^) o, L! X: n& ^                             After Parent Body 实体父后3 }: v' c5 n  z: U" H: M$ k5 k' P. ~
                             Mixed             混合
% Q' ?+ ?7 u, ~& F' U6 Q' _
& L) Z9 y+ \+ ~9 M  SnapPointTypesEnabled    设置捕捉点类型的可见性5 w9 l. B4 b, i4 h
  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用" |' f' t2 w. t: O3 Y2 r( Z9 P5 A
- k6 n6 V. C/ w5 `5 \8 }6 @
常规! M  R. E) z5 W1 H
  BlockID  控件id
1 v/ S' b4 J# _4 t7 J- L5 L9 D) X  Enable   是否可选/禁用控件8 D& `! y1 z1 W) A
  Group    组; f! N7 q% B4 M$ T9 V
  Show     是否可见
7 J5 b7 n. Z1 q4 s0 G
7 ~1 G: q- e7 y; d. b; H5 b1 W; s其它 6 q$ O$ K" n4 f9 P. D8 k3 }( k% \
  附着$ c6 k6 f9 y/ M- y) ]% w
    Bottom  底" a) u$ U8 K$ q0 J; j+ K
    Left    左- g+ [/ d  R* \: c6 l
    Right   右5 Q$ x6 M5 c5 p- L
    Top     顶' n8 ]0 l% `  i6 e

5 P$ {7 S! e( l/ \; I- }1 o特定于块* G6 `# r9 u; @0 [( h) V& a
  AutomaticProgression     选择后焦点是否自动跳到下一个控件
' e# n3 a6 G; o0 D2 s5 K0 n  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
8 |: i1 N/ @7 E- j+ E  BalloonTooltipLayout     动态提示布局  `* ^! ^8 Y: [7 B0 k/ E7 Q* P7 o% C
  BalloonTooltipText       动态提示文本内容
  M) E5 I% M, B( K3 t  Bitmap                   指定图片% y+ G. z% ^  X5 R/ u8 \
  BlendVirtualCurveOverlay 是否显示虚拟交线
" u) Z$ p) g1 O6 Y7 V  CreateInterpartLink      是否显示部件间连接图标在选择条上0 B  q. |1 Y6 B) N# e2 I. A
  Cue                      提示
  ^9 {5 ^6 N4 [8 K6 s6 b4 ^0 p# h- l- O. ?
  InterpartSelection       部件间选择设置
: {" c0 o- V  Q; _( ?) c                             Simple                                           简单( Y2 S" T6 k1 R
                             Non-associative Interpart Copy Only              只复制部件间非关联
5 F0 m9 X$ n9 Q7 z% ?! z1 R0 X8 k                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联
$ x& m) a( X7 I& ^: z6 J                             Associative Interpart Copy                       复制部件间关联
4 ^; R9 X4 k; V8 E
; `- C: S0 l/ s( ?  ?8 L  LabelString              标签标题
& u+ y) f9 p5 j  MaximumScops             设置选择范围+ N% t, `" U; W  ^
                             Entire Assembly                 所有组件/装配
4 D% i: E2 p( k+ n- _                             Within Work Part Only           只是工作部件: a  W' S: k5 u7 d9 x
                             Within Work Part and Components 工作部件和组件/装配)& t/ b& q1 I/ }9 k' {0 j

' H6 _) @+ R& j& m1 y  SelectMode                设置单选/多选 - h+ W" ]  ^2 c
                             Single   单选
- X4 i1 m+ b$ K) a- p                             Multiple 多选
) n2 T, s% h8 M* P. O, u9 O5 I& A% C
  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)
7 W9 ~# q# Z3 h. {7 p( R7 d, f# R  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
% @* G2 e0 V* ~- w- f5 P6 [  }* s# c& k: L; e- t! C1 f( U
————————————————————————————————————————————4 n, X6 Y, c, O3 _
————————————————————————————————————————————: K, n' g' M4 b: y6 L4 e
咧子:获得selection0控件选择的对象3 l" x3 L! x; t% ?2 Z/ k
      UF_initialize();
4 T3 _: X* D6 x      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");
% a" b) E; d4 l% d; x) L+ X      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数
* T" N8 d9 [3 ~. Z2 U, c      {      
0 s) Y* D- y1 Y: h* ^         UF_OBJ_set_color(objects[i]->Tag(),1);( `2 L& d' J. [7 w. c/ T7 q
      }; x" z! u+ F; I7 k1 ]1 D
      UF_terminate();
. m5 [' i# M" m2 b+ T& G# C& x
3 J$ [( Y& B4 l  c/ C————————————————————————————————————————————5 z7 q2 N: ~4 C% Y9 j! L. Y; Q( x
咧子:对象加入到selection0选择控件的对象列表
/ P7 e8 P2 T6 p6 w) O; A7 B* B" D1 q! s2 L! y
      tag_t obj=NULL_TAG;3 F! l; D3 o- G" x) P
      double point[3]={0,0,10};
- B$ {! D% s& i% M, q0 o' h      double XYZ[3]={60,50,80};& r# `+ U; j% h( j& @" x: a2 a
      char C[132]="";; d; V& B- k, U! K2 B
      char K[132]="";
+ C: g; G" V" t4 F4 q      char G[132]="";
$ _7 W' l$ A! \: v; B4 t      sprintf(C, "%f",XYZ[0]);" X# f0 v: N; w% ~) ^; R
      sprintf(K, "%f",XYZ[1]);
5 Z; k; g: l7 A2 X      sprintf(G, "%f",XYZ[2]);
; J- R+ ~7 X9 u' g  G0 j' V$ A0 R      char * edge_len[3]={C,K,G};
) F% b& N/ q. b! q9 d      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方5 M1 |! z3 W) {, \
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体
9 U+ k% a' j- R+ t4 d
) \' a& S5 a: b1 l- |7 O      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen
$ U) p6 T+ S# J- F8 V      std::vector<TaggedObject*>objects;
  Z, f; E$ {, |" A% F9 A- ?      objects.push_back(body1); //对象加入到selection0选择控件的对象列表" D. V8 W6 t4 d6 E
      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
6 h# I- g( {9 N* u. G4 ~. i" d————————————————————————————————————————————3 k  Y2 G  E/ _. ?6 F2 w: |

0 p1 C. f; A5 r: M  M# t- w//清除对象4 y" _1 @) k5 m2 F6 s
std::vector<TaggedObject*>objects;
7 P6 d! D" }+ J4 e2 ~5 c, Fobjects.empty();
; a" e, f% d7 @( x7 m% [& E: sselection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
% Q* e- `" C' P3 L$ l( y8 I% a0 f: p6 }, y& `
————————————————————————————————————————————2 B4 k/ i8 l2 W0 T  }9 x
咧子:只选择面
9 A+ M2 h) ^9 S+ h        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤: t0 N5 G8 `7 U! ~, c

; `( D( \+ o" E4 K        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
% `3 w3 r. [) I% @9 |" }  q1 `! L" I
- [8 V! ~9 ]5 E  H$ y' N        //对象选择过滤 只能选表面" i4 n8 a1 S3 D* y# D' `0 f/ n
        selection0->GetProperties()->SetString("LabelString","选择表面");
/ m6 T  e! E9 }        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
% O! J: z: H2 T: Q: o% G1 q" x        Selection::MaskTriple mask1(UF_face_type,0,0);' q8 U1 a; K8 {7 T( T
        maskTriple.push_back(mask1);
% u2 K  w: B) N( s2 D7 \7 ]        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
: v' T% A$ e' [/ _. p
: G+ s" T$ ^/ D+ b/ N+ s* p! X/ F3 m: s2 D3 k
咧子:只选择面 【UG本身过滤器跟着变】
* p: B% D6 f: l, u        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
: q: w- u) b7 @; [8 \2 d$ M. |8 T1 F( Z3 {
) T7 O/ q5 e3 D. p  Y0 v7 \& V/ U        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
% d9 _# a( E% t$ w% {/ i% A+ V0 f& t3 |4 ?: r* l; }
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;; Y0 u& g* q& p: |. |: a3 k3 u( \
        Selection::MaskTriple mask1(UF_face_type,0,0);
5 K8 d) T* {9 C        maskTriple.push_back(mask1);
8 W0 E1 n: s, V  K, B        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();7 |7 L" j4 _. Q1 W. F9 p9 `
        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);
: w5 o! |" h2 X- E        delete selComponentProps;
; V3 G& |4 t* v. Q/ ?" c( `2 O        selComponentProps = NULL;
* [2 {  v  b$ v" B- K' P) Q& d+ c7 l# K) g' q
上海点团信息科技有限公司,承接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

列子
8 i1 J. k! [- w" c. }2 [( F7 J. [  a8 g8 \& E# o: w' ]8 q
————————————————————————————————————————————
+ U3 |, N# A9 B2 W" ]$ a————————————————————————————————————————————; b, T8 D2 E# d' ]3 Q
咧子:只选择 实体边缘 直线和圆弧
; S; \0 E8 n  e( c3 f# v  d" K  Q, B3 A8 W6 `; w9 @
  initialize_cb() 初始化里加代码 可进行对象选择过滤
  I7 ?6 i( J& n! E6 ^7 U, @- m. t: }8 \* X  l* \, N  z
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式! i9 _1 R5 ^4 U! x) E% q8 D
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
# ^/ P& i9 b; W* H) x, X+ R4 @% f                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;& U7 d+ z9 C4 U2 t  i2 M- \! e
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
9 F. R! ]4 ]/ k3 [# t3 D4 Z. D5 Z                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
- p3 S4 e" d: S! E* a) c; e                        maskTriple.push_back(mask1);
& s% W" U% l/ d! L+ X! m                        maskTriple.push_back(mask2);
5 K0 J9 N' z3 `# e. L                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);  \: @1 X5 P& Y6 ^& z

/ V2 q$ x1 S5 a. S# ]/ B//过滤无效的边缘
. q' k8 y# h$ |; b. D& g. \1 _int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
4 R2 X* ~. R% O6 \* P1 y- J5 g+ t{        : L% U; }* A3 d2 `9 ~: _0 S( X+ P
    tag_t obj=NULL_TAG;7 E! |/ ^! [! Q6 i* v
    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);' B4 @! T% c! m5 F$ L
    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表4 Y+ l8 M  r; r" [8 {2 F: y
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
" |+ H) g, G  E: ^- J1 K: o}6 B/ W. d& i8 |
————————————————————————————————————————————2 b, l; T- }8 B2 V3 d# U- L. v7 ^  r
————————————————————————————————————————————
3 r/ H. a/ ?7 G! N5 ^. T3 v  c咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体7 C3 e; w$ x3 d, a: }3 b
, l, q- r0 ?( N
   int enumValue = this->enum01->GetProperties()->GetEnum("Value");9 K2 v) Q' I" D5 [
                    if (enumValue==0) # k: ~- C" ^% r' O* ~5 f6 M; ~
                    {
: ]: L/ a% Y+ k- p                            selection0->GetProperties()->SetString("LabelString","选择边缘");4 t0 l3 X; X5 w! a! o! J
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
3 J6 h. W/ n' \. x- Q) T4 S                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
; t5 a  h" }* Y( ]; J3 M& a: m                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
7 T# u9 j# r1 s; b: r                            maskTriple.push_back(mask1);/ }2 C0 W, v# A+ x$ M4 t' f
                            maskTriple.push_back(mask2);/ W, L/ h" l' s: K
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);% x1 x; A5 A: ?  ~
                    }
6 f5 _/ X5 j- D  |! c0 Y                    if (enumValue==1)
9 M# w7 g+ \2 ?8 _: b                    {7 _) g4 k, m! }: k3 M6 Z' \7 t
                            selection0->GetProperties()->SetString("LabelString","选择表面");
5 J: X$ E3 F( S; t" t                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
- Q& b  ~- {1 X% N, C2 h                            Selection::MaskTriple mask1(UF_face_type,0,0);
7 A, `" I, Q3 z! r                            maskTriple.push_back(mask1);1 s# S% x4 q7 j* r1 C7 r
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
7 A2 H8 n* ~6 j) V                    }
$ R; z6 ]/ Q5 t4 H2 {+ o+ h                    if (enumValue==2)   Q( z% j0 i8 O7 F! K0 w( }
                    { " e0 w' ]. ?5 v; ]
                            selection0->GetProperties()->SetString("LabelString","选择实体");( M# i( ~* i7 T1 V8 [$ D
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;0 |* b8 t: s: E, F
                            Selection::MaskTriple mask1(UF_solid_type,0,0);. @, `7 a* m: a0 T
                            maskTriple.push_back(mask1);
& u! a" N3 X# \# U% r                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);* ]. S$ a  F& o2 g$ b
                    }
2 Y/ b% r+ o) B; u. i7 }% B! @: |+ s+ }( v! W1 k9 Z

# @& d% [7 i$ C% q8 \//------------------------------------------------------------------------------
0 @: w& }& F% u' G1 ?5 I, s% y4 I//Callback Name: filter_cb 过滤不符合对象
/ M, S: z' x5 }& Z. c/ P  x//------------------------------------------------------------------------------, S4 C$ n4 K$ \+ u# |1 L) n
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)8 w0 j4 z  C( S5 @; O
{* x6 ?$ o& N  P% W$ N! F5 I2 d
        8 E" O- l( i! j
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");; b& Z) G' @+ U
        if (enumValue ==0)3 k* L5 Y' G4 O( V2 w. T3 Y. i
        {+ N8 z& N. `5 g5 u
                 tag_t obj=NULL_TAG;2 w* f& \) E8 g  {
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);7 Q; I  ^5 P" T7 \5 [5 c5 a
                 if (err!=0 && obj==NULL_TAG)
; g1 |" _- e, C+ ?8 B             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
: Y" A/ r& }8 ^( H: P! Q: [8 o        }# d2 p( s$ ]* R- D/ l
        else if (enumValue ==1)
3 l5 k$ ~& H& J3 Q/ {        {* M2 o9 u) K* F2 ]: }9 a3 e) l
                 int type=-1;
& k1 H. E5 p, v% g# L                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);$ H5 |' t5 Z8 N2 K1 U& _
                 if (err!=0 || type==-1)
3 ^+ U$ ]5 f6 n% |4 o             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
0 Z! @6 L+ P9 g! D        }
. @( p0 n! J& |3 i. q5 @        else if (enumValue ==2)
& Z# _, z! A( S/ S  @        {" N! t, O- e4 W( f: _
                 int type=-1;  f1 p2 j2 b5 N  E+ j
                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);3 Q" D6 g2 J% Z1 t. u
                 if (err!=0 || type==-1)
+ a& M4 c: e9 V5 {8 |             return(UF_UI_SEL_REJECT); //不加入到对象预览列表+ s6 j6 \) r. ?9 \7 `7 \
        }
9 G$ K1 z1 |. q1 y
" D. k3 [: M, q& l6 ~        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表, a1 v* l0 P0 N9 ^
}
" z- _; E0 c( L/ T8 K
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了