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 5572 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、选择对象5 c/ Y3 L% p  y. H1 Y; `
+ ~3 D1 U- A" Q7 m7 C
捕捉
; p% Q! K" s$ I. L  PointOverlay             是否显示捕捉点0 D; V# M* [3 s' f4 g, i" H  w
  SmartUpdateOption        智能更新选项
1 h9 O7 F7 T/ c% [# \( p: A- {                             Within Modeling   在建模& [; k6 Q$ S5 ]6 |8 S4 L+ R
                             After Modeling    建模后
4 m4 W4 U; ?' {" C" a                             After Parent Body 实体父后3 e: v" I8 M1 d' h6 w
                             Mixed             混合% U# N1 T8 D& K4 x; m; U

- Z- L) i- `% @) E. C) A, C  SnapPointTypesEnabled    设置捕捉点类型的可见性
8 P, N# C0 g5 R* r" ^) H, @  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用7 w' e% E0 [; D" g; |) \" S

; s$ y! ?, B$ z8 B常规0 j  S8 Z3 }. h; l/ Y, q  Y1 ~: x
  BlockID  控件id1 y0 t4 i8 E, A# m
  Enable   是否可选/禁用控件2 N1 L' C4 R! o" i( |2 V
  Group    组2 l" ]2 U1 x. c0 v
  Show     是否可见* G2 M% j% @4 V$ p8 y- o
# z9 c3 T8 K7 O) x: N  K
其它
2 b1 Z) X. v7 H# O  附着
( Y' n) B* p/ B    Bottom  底
) _+ R1 \) U' _1 i7 }$ |7 I& f0 B, D$ g    Left    左
* t2 }: o8 g8 L$ Q    Right   右2 i- Y/ `3 X) s
    Top     顶: E, `& \1 {' W) J
% E$ ]# a% @; v) D# D; Q
特定于块' v# U# m6 L9 ^
  AutomaticProgression     选择后焦点是否自动跳到下一个控件
( b* O' E* a9 o( U% @2 I; ?) I, D  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)9 l, z' |, h3 L$ |% s
  BalloonTooltipLayout     动态提示布局
. _: |1 b2 n( c9 ?. B) ^  BalloonTooltipText       动态提示文本内容
7 h  C- Y8 q; h4 ~* k5 t  Bitmap                   指定图片
. A& h: s# Y4 q! o/ ?. h+ x: S; i  BlendVirtualCurveOverlay 是否显示虚拟交线, {' v" L& F3 N/ O5 Z
  CreateInterpartLink      是否显示部件间连接图标在选择条上
9 M  a( ]: z% f  Cue                      提示( }$ l. G! M; O, m7 _

/ Y( J5 y1 C# `2 n1 O! Y; i  h  InterpartSelection       部件间选择设置
2 e! e, ^- k, E" q: v                             Simple                                           简单% Y& c1 Y0 i4 o) W$ V! `0 t
                             Non-associative Interpart Copy Only              只复制部件间非关联. ^7 {) m0 i, ?% n& |0 |
                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联* h! X' u) B+ J# P& ~
                             Associative Interpart Copy                       复制部件间关联
7 E, [6 |# k4 n. R6 h  q+ g
' l) g! \; `) l0 `  LabelString              标签标题
" B9 g4 |( Q2 ^  MaximumScops             设置选择范围9 R: J. y" p4 ~
                             Entire Assembly                 所有组件/装配
: a$ H: }5 \" M5 D3 d) ]9 X1 }                             Within Work Part Only           只是工作部件
6 r+ Q- H) s1 t" K( X                             Within Work Part and Components 工作部件和组件/装配), f. x# p0 h8 y9 z0 I$ T
% b: o/ Y! q" \$ l3 E/ g) u+ z
  SelectMode                设置单选/多选 7 ]! b8 c3 D  W  \% b
                             Single   单选# I# p5 y9 s& R: ^
                             Multiple 多选  S+ _# i+ e4 B" Y, K

, ~% Q/ U& h; R, z  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)
* w9 ^% ]+ r8 a, I) B0 a3 T  {! @  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)& j: q2 a' |4 m; P) O7 {
+ l8 V& z) H! h& R
————————————————————————————————————————————
* u/ v7 V- O7 U7 W9 I  o————————————————————————————————————————————
! R- J# b0 A2 K# L& V0 Q咧子:获得selection0控件选择的对象0 J+ W: A4 X" t  r4 l
      UF_initialize();
/ @/ w" M  x+ u; W! a      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");; u) C! U4 t# l* `
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数/ N( u1 z- ?4 ^. ~% }
      {      
# I! C- M( Q8 [& O6 d         UF_OBJ_set_color(objects[i]->Tag(),1);. Z1 t/ M. ^- D/ b! Z
      }; C" v! L) f  X1 L" E8 e
      UF_terminate();& F$ P! Q6 ~6 O' A* G* ]' M% v
) x- s" z( y7 l0 X' A4 u% r
————————————————————————————————————————————
8 w- n1 j; @+ a1 h咧子:对象加入到selection0选择控件的对象列表
1 W# M" I5 t- m2 G: s2 I& e. |' ]8 K8 p, F3 }
      tag_t obj=NULL_TAG;+ a3 e* u  U) @" z- K
      double point[3]={0,0,10};
& u3 d5 W( n3 R9 v: Y7 k  K3 o0 P      double XYZ[3]={60,50,80};7 Y4 T. _7 D  O" I4 A7 M: {
      char C[132]="";
1 P4 {' g$ G  [. t2 ]      char K[132]="";
- v3 [" R7 Z4 L2 A$ s  }3 d  T      char G[132]="";% ]( [" I: C$ G" B) r6 y; g
      sprintf(C, "%f",XYZ[0]);
0 l) t# J3 N( U" v0 t) a3 `      sprintf(K, "%f",XYZ[1]);
) k: N0 |' \/ u. V/ d/ m: Y0 e6 }      sprintf(G, "%f",XYZ[2]);
, {' C9 b4 v) d! |' {9 }  ?      char * edge_len[3]={C,K,G};# u4 U8 q5 U8 L) n% b
      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方; V1 Z! y" l4 F) ]9 }7 B
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体* w  L6 x, H+ _0 p4 h
; k% p: `3 G4 t9 P
      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen# i5 E. V( a" |5 g
      std::vector<TaggedObject*>objects;/ r, S  `$ Y* o& F" [- b( h
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表
, b0 R2 ^/ i8 o* e/ s& P6 p      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);6 L" n. A/ t' n- F% M& @
————————————————————————————————————————————# P; O# j0 D( O$ _8 E( L
3 t# ~' y/ w" y1 q, U
//清除对象) j5 i' |0 U9 Y5 J( z$ u+ r6 E
std::vector<TaggedObject*>objects;
( N- ^- [4 p! H2 u) @7 N- Sobjects.empty();
- U, \3 T: S* E" q- ^0 }selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);9 a& g) [+ L' N

' X# f7 @1 O$ |* E4 {: C8 U3 B9 i————————————————————————————————————————————
( i7 Q. B5 h; O. t咧子:只选择面) o0 G  `2 O( z" r* g* y
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤8 U$ V2 H0 Q6 O% K! G/ U& R
3 r% ^6 \! M9 K
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
) K4 o) D0 F( \" A. I3 l3 g
9 F/ {6 y/ {- ?5 z        //对象选择过滤 只能选表面" m4 z/ S, R& s7 H5 T- C$ k9 Y
        selection0->GetProperties()->SetString("LabelString","选择表面");! `) \- Z( ~- r2 ]2 s
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
/ w( t3 }/ g3 f8 g; |        Selection::MaskTriple mask1(UF_face_type,0,0);7 `/ S0 ?0 C$ k5 G9 i/ ^0 r/ n0 U2 ~
        maskTriple.push_back(mask1);
& d2 F) O) s; E% B% y        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);& d# \/ R6 y) q2 Y3 z/ j: n5 \
, u! C4 c  a# U
  W$ k' }$ Y+ W' t6 V
咧子:只选择面 【UG本身过滤器跟着变】% o1 J; R9 }, t7 [! I* b( a; E8 @
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
# e8 ~, H  z% K+ h- n6 w9 w1 s8 \* @6 [. y1 j
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
; @4 }( ]# E* L( O# V
( M, R( E$ b, {3 o7 t$ W; X0 ^        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
; r% R- I; c: J8 b5 A4 l( W        Selection::MaskTriple mask1(UF_face_type,0,0);
# M& I4 Q; b/ e/ P( g! I        maskTriple.push_back(mask1);
  |2 O+ z  \& Q/ }. _, D        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();; x! N- |- U, X
        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);+ Q* F5 n, q0 m4 a+ ?
        delete selComponentProps;0 C" p% J( I- _4 s4 k1 ~
        selComponentProps = NULL;
6 r& K% F# \; |' G( N) a5 n3 H; W) W3 X0 B$ u/ [$ D
上海点团信息科技有限公司,承接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

列子2 Y4 h1 o2 ]# J) u' v. Q/ x" ]

  A( c+ h# R) ~————————————————————————————————————————————- p! P, z% B6 q" J% |
————————————————————————————————————————————7 k; k# V4 @$ W/ o6 Y
咧子:只选择 实体边缘 直线和圆弧
! k3 L+ m7 M% L' P. w4 P
, D( P* x+ G1 t) e, h; K" B3 t  initialize_cb() 初始化里加代码 可进行对象选择过滤
- `# m) G- S2 I* a, d' q
8 x0 K' h2 h4 h  T& k        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式& e1 S1 F' D: {+ p) S0 P1 k5 k& L. F
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧2 l* `; j$ m# x2 }, Z* t8 ]
                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;( `; V7 S$ H$ N8 o: y. X2 L1 v
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
; K8 S: p4 E+ f2 c3 D2 T- K                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);% }+ S; r+ {, N6 g
                        maskTriple.push_back(mask1);
! ~# s6 i, M- ?* o8 X  R                        maskTriple.push_back(mask2);
: Z6 ~; p$ v2 R) U% h                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
3 k, z6 u% M- R  `# W( B, j% Z& ]. l* G% X- I- m2 O( k
//过滤无效的边缘
( ?9 ?0 R. l2 M" w, Aint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)# N* V4 M% J/ d& ?  J- g
{        6 ~3 ~/ n3 H& s: O: F" z+ I5 _
    tag_t obj=NULL_TAG;
0 Y" f# P2 r7 f2 M$ O    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
; U- M/ X) Y- t3 k+ T) }    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表4 l8 c" \" ?1 b/ C. m) |4 T
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表  |7 O% w+ n6 h. r0 J& r" Z
}/ E9 C9 |- O0 p) Z- ^1 ]7 {! V8 f
————————————————————————————————————————————! Z& I! j( ^) a1 q
————————————————————————————————————————————  b$ c0 M$ A9 o! q
咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体
/ Z( }! Q' W. Y" |- k% {7 C
" j) Y; ~! i) D. y$ |0 L+ k. q4 H   int enumValue = this->enum01->GetProperties()->GetEnum("Value");
7 W% _9 W3 N4 `  W) S& b                    if (enumValue==0)
: d) U' a4 c% _: q+ \: T+ i                    {( w: S' E, o, ]
                            selection0->GetProperties()->SetString("LabelString","选择边缘");5 V- u, W. L' Q
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
$ J+ m/ n3 b5 g4 ^7 R                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
& B5 \, v& W' @& N' I                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
! b0 w* U) Z$ i9 H: K: O0 `3 ^1 s$ ~, s                            maskTriple.push_back(mask1);: l; `  b, O2 j$ b" Q& F/ X: S/ F% S
                            maskTriple.push_back(mask2);8 A6 U! w+ P- p% ^- l
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);& K2 o! e+ ]4 k! A' N9 l
                    }
7 x4 l) ]$ }, I1 q                    if (enumValue==1) 4 Y  B5 F7 D! ?- ]
                    {
" W7 J3 P7 ]$ ]# u                            selection0->GetProperties()->SetString("LabelString","选择表面");
, V' U- H* Q4 {# |. d                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
" ^9 \  e" U/ @7 j, G* }                            Selection::MaskTriple mask1(UF_face_type,0,0);: r. t9 P/ i' p+ v
                            maskTriple.push_back(mask1);
0 F6 }. T# X5 {6 i, ~# y# F                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);. L# t6 j1 ?+ ^* M# ?) B6 `2 x0 K
                    }
% J: t6 t6 d' T6 J( {' T8 I$ B2 e                    if (enumValue==2) & E0 N0 a+ O4 {; A2 K
                    { 3 @# `* D! F: x8 {: l# g
                            selection0->GetProperties()->SetString("LabelString","选择实体");
/ Z3 x6 L" y7 j/ e9 U3 w) Y; N/ [                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;2 b/ Y& H3 U6 l" s
                            Selection::MaskTriple mask1(UF_solid_type,0,0);# I9 `* h2 W/ l/ _0 @( q# W
                            maskTriple.push_back(mask1);
, y$ U# x1 Y0 _' G9 l1 l6 S                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);4 x6 b% q0 O2 K# K% V) Z# C: y
                    }
( {5 S6 _* K; L9 x! W
, H; }$ M) e0 L! \5 s9 ]6 L/ E+ P
$ j2 ]: g7 Z- G, q* n3 \//------------------------------------------------------------------------------# s1 p: \3 Z  s* o% A4 F5 `5 P
//Callback Name: filter_cb 过滤不符合对象
- V$ i+ i4 L& @; q4 t//------------------------------------------------------------------------------' M4 e: I8 Y: H
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)8 A3 [8 H4 p! {* J3 h- T& w7 r
{  q2 G7 o* C) z1 X4 d
        
; `  G  F, p2 `- k. N, M; Q        int enumValue = this->enum01->GetProperties()->GetEnum("Value");
' S' y5 C0 s# K6 ?* {, ~+ P7 r1 z        if (enumValue ==0)+ k7 o, c" U$ x, ~7 }
        {
$ p+ E4 E/ d. T                 tag_t obj=NULL_TAG;( ]9 z  _0 l7 w5 _  R, f
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
' I6 `( {* K& I8 X/ Z  ^9 S/ i                 if (err!=0 && obj==NULL_TAG)
* G) B6 C2 @7 J6 i             return(UF_UI_SEL_REJECT); //不加入到对象预览列表  c3 }" E! ~  [
        }
9 Z) q, s! T, k: L        else if (enumValue ==1): d* W* W. z7 g- Q9 s. A$ T* ?& d
        {
7 s* @/ e/ j7 Z; ~$ Z4 x$ b' y1 o                 int type=-1;$ p6 K& t" X6 d
                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
% m* E' w2 F+ }4 `) w: \                 if (err!=0 || type==-1)
" L' u5 U7 D' T. Z             return(UF_UI_SEL_REJECT); //不加入到对象预览列表* }+ ^! D: J3 s* w% O( R
        }) K" n' e5 f' b" U8 f
        else if (enumValue ==2)) ^9 r2 l: C# j6 l2 [
        {+ v& M: X* L+ r3 ^8 ]8 U/ B
                 int type=-1;
" t4 T+ b- N! Q$ |/ z' u8 _                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
- E4 r! U) P1 w1 b- S- S! m; s  y                 if (err!=0 || type==-1)
7 G) ?' i5 @; F! m9 H             return(UF_UI_SEL_REJECT); //不加入到对象预览列表- P  r+ X' I- p9 O
        }9 [! @. G7 Z8 j% h1 s; l, Z7 i

1 d' k* j" C/ i- X! T0 @        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
) n8 g2 F$ N/ P}2 [4 x0 m% J: g. x/ 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二次开发专题模块培训报名开始啦

    我知道了