PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[求助] UG二次开发中,怎么选取特定的面

[复制链接]

2016-12-12 12:24:54 6045 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 ?" r2 R0 D" o0 N

. S0 U3 O, ?/ \  g, Z" B9 p捕捉
( W2 p6 I5 T# J  PointOverlay             是否显示捕捉点$ N7 u& q4 {4 c( w1 A
  SmartUpdateOption        智能更新选项
9 H8 J$ o8 O6 g% @( X                             Within Modeling   在建模
8 F4 H9 u1 D: E7 X                             After Modeling    建模后% u- n) j' Q8 E. d8 T; L
                             After Parent Body 实体父后
6 ~3 I" c! S& u4 E                             Mixed             混合
5 q1 m$ N3 a' D- B$ F
6 z1 L0 G. Y4 j4 P  SnapPointTypesEnabled    设置捕捉点类型的可见性0 k# V6 }9 ~5 |
  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用: P2 Z( l* ^- j: L9 j

1 `3 p! {$ E2 i7 E; j" B& P5 F/ }常规
: E# N/ c( S/ y9 e5 x& ?  BlockID  控件id
# M; |1 P" g; p5 m7 V  Enable   是否可选/禁用控件
" s8 d% O( c- P/ }+ x7 E2 A9 D5 E# X  Group    组" P1 t6 W9 `5 d" k
  Show     是否可见
! r% \- r. y  Y/ Q) o" j" W4 m
/ n# j: b% f, h9 n3 a其它 0 B9 u! z8 m- O9 [, ?
  附着& T0 o9 `9 l/ P: u* q/ a! r$ e
    Bottom  底
& e* z. d* B" O    Left    左
  E6 H% O" j; W$ R% E" g1 C    Right   右! n% n" N8 ?& b1 B8 d
    Top     顶. Y; X! F3 X; `8 W5 I  x$ i
. t9 d! q" y7 U( d  Y6 R
特定于块' C# t& M( r( W1 Y! v+ t, m
  AutomaticProgression     选择后焦点是否自动跳到下一个控件$ L1 v, B9 U$ i$ i0 y
  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片): E/ u5 i; i- @( S
  BalloonTooltipLayout     动态提示布局
1 D5 Z3 ~4 ~3 c9 h7 `  BalloonTooltipText       动态提示文本内容" K/ T4 D/ f$ @
  Bitmap                   指定图片) `! y. z# ^0 n+ C  o# l  ^
  BlendVirtualCurveOverlay 是否显示虚拟交线
5 B* ~4 t. D* o$ [) B( p2 w* z  CreateInterpartLink      是否显示部件间连接图标在选择条上! q6 b+ n/ W, m( M- W
  Cue                      提示
( M  ]1 t1 G# X) C# q7 t
$ f/ U( o6 u4 ~1 G  InterpartSelection       部件间选择设置
& c# b: @) y4 T3 j1 U0 z                             Simple                                           简单
0 W: ]9 G  e7 k/ I/ l% G7 L                             Non-associative Interpart Copy Only              只复制部件间非关联$ d4 s( Y) t  C" x
                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联
; f1 b, d( p; Y5 Q7 X                             Associative Interpart Copy                       复制部件间关联
: w# @# f8 l! W: \% O) t# w( |: q( R- X
  LabelString              标签标题7 g0 z: ?6 P# I6 F) d
  MaximumScops             设置选择范围
$ h. M; A$ o$ k                             Entire Assembly                 所有组件/装配
* u; B* j; E7 M3 {9 _- S                             Within Work Part Only           只是工作部件
: F+ x, E3 `' U: M2 P+ f                             Within Work Part and Components 工作部件和组件/装配)
+ V. m" I2 ]; v6 D9 G( S/ w! O0 R9 N/ ?: m/ G8 J4 e
  SelectMode                设置单选/多选 7 F5 X1 ~5 ^: U
                             Single   单选
4 i( _* ^- U) s7 V% J+ c                             Multiple 多选9 o" Y$ E2 a: {7 N5 ?0 V# N2 R1 q

% K; F0 j. X) R5 l8 Q  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)
0 U" L  U! ]7 A' b$ O5 M  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
7 R; N3 D, S$ R; G5 j
+ Z6 v/ I! H0 W% V& W————————————————————————————————————————————
- ?5 E  o6 r! w" y) ]8 A————————————————————————————————————————————
  b, p1 p$ @2 J# e7 N" b2 F咧子:获得selection0控件选择的对象9 G5 B# ^# [1 X5 c! `0 K; c. X
      UF_initialize();
/ _' P) o! q8 Z; j      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");* O, I8 Q( D  X7 O, |2 R& |
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数
5 h; c% k2 }' P% m      {      + v/ V; @, O% a) o# a6 q
         UF_OBJ_set_color(objects[i]->Tag(),1);
9 ^/ h/ s, Z7 s0 e) A      }  _, Q3 n0 a( @+ k4 b* g
      UF_terminate();
! u7 a# M( |7 X9 e. G
: i/ ?, R; n0 _' c* d————————————————————————————————————————————1 |' I/ N4 m6 D+ T# s
咧子:对象加入到selection0选择控件的对象列表
! t; N- q, Y6 k" _% J" X) q9 x; x$ [# h" w! [# j
      tag_t obj=NULL_TAG;
6 G. m5 J' j/ R2 j      double point[3]={0,0,10};8 f3 O- i& W( R5 ~
      double XYZ[3]={60,50,80};# y5 x; @9 G( t$ z- `
      char C[132]="";
; E* H- G3 N3 {, F      char K[132]="";- E% B5 l8 ]! m' z: K
      char G[132]="";6 j6 x: u. l5 N' Q0 z. @
      sprintf(C, "%f",XYZ[0]);
- m& W5 R3 i/ [/ w, F9 h5 X      sprintf(K, "%f",XYZ[1]);
8 A* \* G4 a. F# b" m# m3 i0 K      sprintf(G, "%f",XYZ[2]); 3 Q- N- q1 N# g! X* W
      char * edge_len[3]={C,K,G};8 }/ x; e: W4 f. k$ Z. r' N
      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方* C, C6 ~; S) S& \
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体
* |! S" n  k0 g- D( Z. a( I
5 Y- x! D1 J, h2 p4 b      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen
6 A0 B& u& n: Z; b* g6 Q( i      std::vector<TaggedObject*>objects;
, v! ^" E8 n4 |* D5 U! Y6 P' v      objects.push_back(body1); //对象加入到selection0选择控件的对象列表+ k. k9 S+ J# Q1 L( ?; T0 ~* W
      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);" F9 P" H$ `. K  o! M3 F8 W; B. J
————————————————————————————————————————————' q1 V& z4 _$ Z4 r. h" ?
* s, j  F: L- w3 W8 b5 H
//清除对象
( e" g1 Z- A, Q& ~) r( K' a2 O& Ystd::vector<TaggedObject*>objects;
! t4 O8 j- {) m4 {* E( L& Pobjects.empty();
) |6 Y8 f  l$ D9 Kselection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);9 \9 v2 x) ?) i$ U. z
  \( x1 Z8 M' {% ?0 I+ T* z
————————————————————————————————————————————, k; e2 l/ h3 b. g$ G4 S& A
咧子:只选择面
! G! M4 Z+ l4 J( g1 x6 |7 ]3 ~7 O        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤
) D9 q3 f0 X( d3 }  f' N7 O
6 O# U" x' F+ t: O7 H: _. x        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
0 V- G- i& s$ L/ g
9 ]1 T- j, [! m" W9 V' L1 j1 k        //对象选择过滤 只能选表面
+ w- s" q1 H, |9 n0 E        selection0->GetProperties()->SetString("LabelString","选择表面");
; @* r# m0 F: E7 F* a# l        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
, s3 l: H  A+ J3 U        Selection::MaskTriple mask1(UF_face_type,0,0);- E6 ], h0 y2 q' u) A5 h# m$ y: W! r# d
        maskTriple.push_back(mask1);
9 p6 f7 f/ z3 V        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);% B2 ~% o) o7 y+ W& {6 U
7 x2 ^  j; B4 U: A) q

) f# E. H; f' o+ u, `8 s4 |咧子:只选择面 【UG本身过滤器跟着变】- j; A/ u% w/ n8 R" p1 p# N
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
7 u* }. G8 y& a4 E+ J9 l5 Q% V7 Z' v: K8 M( ]
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式8 K. f. ~4 u6 }  a

3 U8 m8 S' @3 G        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
8 w3 P/ ^4 `# O! c! i: B% Z        Selection::MaskTriple mask1(UF_face_type,0,0);4 I$ e( k3 c, r7 d4 j
        maskTriple.push_back(mask1);
. t1 B4 r- j$ Z        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();
' H# Y" ^; V9 c* ]        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);" t" L; \6 E( f! i
        delete selComponentProps;
! C7 ?; f7 b, Q& v        selComponentProps = NULL;
: B# B1 c# q' V( J/ ]
) f% r7 C- b( x/ h4 n$ E
上海点团信息科技有限公司,承接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

列子
5 E2 m- ?7 u. o# I
  D  K, v: m1 g1 ?0 V# r————————————————————————————————————————————; `: ]* X& s" t" _5 J3 a  r
————————————————————————————————————————————9 k. q: C6 @. j9 o2 X0 _
咧子:只选择 实体边缘 直线和圆弧
5 k2 o) n2 q9 W: j6 }5 w5 x% S# G2 c3 r7 ]# d8 V6 r' q
  initialize_cb() 初始化里加代码 可进行对象选择过滤6 e3 ]% x6 C8 X- ?6 ]

) k0 @# U# C  O1 s! V( d        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
1 t" U( I' p* M8 K. Z4 x                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
3 }) @8 ~& B8 `6 \- u" T                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;; n. O9 t* h4 K3 G# T
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);9 l4 A/ b5 E7 v  k) C3 |3 I
                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);+ |! i. U" M  O/ y: e" |6 Y1 Y2 K  ?
                        maskTriple.push_back(mask1);
9 B. d: g$ r1 K+ e: [1 m                        maskTriple.push_back(mask2);
6 m6 V+ U8 p  ]7 P3 @7 a& E8 ^                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);4 k( r8 d, A; v1 z, [2 G
* ^  [2 A7 J: Z  K  ?
//过滤无效的边缘* @1 R; g2 E  l0 T. R) Q: i
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)2 E" k* h$ ~9 Z
{        * o% m; K* I; Q
    tag_t obj=NULL_TAG;7 Z. U. e" t' [% `& x  K
    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
0 ]3 J& V9 D9 h, t6 g    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表% H5 h7 J) F+ {$ T. Y
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表+ R  P7 ]. u6 I6 c, q) }
}+ X4 ?3 Q" }  h( A! ]9 ^8 [) S+ R
————————————————————————————————————————————
( m4 V* U/ z3 D( n% M7 L. K————————————————————————————————————————————
2 z  [1 G; G& g$ B1 B* _咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体$ ]- U* Z; Z+ n- W( Y2 M
0 H5 Z! G; r! d% k
   int enumValue = this->enum01->GetProperties()->GetEnum("Value");7 s% X7 ?6 x1 {# B! x6 S
                    if (enumValue==0)
2 u- b( y7 g) E; T* s0 u3 D                    {
4 |/ Y+ G" J. o& S! f; Z* A                            selection0->GetProperties()->SetString("LabelString","选择边缘");2 C- L# o5 a3 y1 G) B! s8 a
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;- t* D: D  X9 H
                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
. W3 @5 C+ H4 _+ Y4 j5 h                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
- U: ^* T, [* v& R0 I                            maskTriple.push_back(mask1);
/ s6 ^0 Q! ]) F- A" t. [                            maskTriple.push_back(mask2);# r6 j1 _0 M5 Y7 b- _% _7 \7 I8 g. o
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
, V" E& I+ L7 R1 Q& `9 M                    }4 l" o# [8 O1 v& a: m
                    if (enumValue==1)   M, o2 W" g& y3 U3 f1 {. |
                    {
2 M' A! j- \5 J& R+ p' j/ l                            selection0->GetProperties()->SetString("LabelString","选择表面");! w' U# _- |& [6 o) L8 Y
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;# F* }7 o( C1 w# q. z3 M. m: P" h
                            Selection::MaskTriple mask1(UF_face_type,0,0);# M" ]: |3 f# m; d/ L! K
                            maskTriple.push_back(mask1);# E) H/ D  b" C9 H0 |2 ?' }
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
% i; r) ~. D8 }. q- e  p' u                    }, T$ K* h* ?. z) ?. Q0 c5 {1 c
                    if (enumValue==2) 4 \) W9 B& k* d% p+ m$ k
                    { ) p% [. h8 H3 J! W6 d) O
                            selection0->GetProperties()->SetString("LabelString","选择实体");9 `! ~2 Z- p& B' q
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;; u, H  k+ p) ~  D
                            Selection::MaskTriple mask1(UF_solid_type,0,0);
+ ]/ B) [" F/ _5 Q4 a; s                            maskTriple.push_back(mask1);. ~3 ^" E7 F4 y) |. Y# g
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);; H3 n9 d3 z5 p  ?- A: I: x7 `+ K
                    }
5 o1 h9 }- |/ o2 v+ a2 n; @$ ~3 Q! r7 i

1 D3 l9 N6 {  \6 d) B1 L) T8 p% X//------------------------------------------------------------------------------0 I  c/ m% {5 I1 B/ N: o5 D
//Callback Name: filter_cb 过滤不符合对象' W& p* j  e+ X& S3 D6 x
//------------------------------------------------------------------------------# {8 x7 C7 V" p$ P+ k( h9 F
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
2 q% `3 l1 Z3 [' f0 h9 p{
$ B* w8 ~6 x4 m5 ]        + e- c- w9 b' i
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");
9 d6 F3 h; `7 M& V" M6 u8 A) d3 m8 E        if (enumValue ==0)
4 t  ]6 {' O' @: w  g- O        {
. u7 C9 d- d8 \  V0 _                 tag_t obj=NULL_TAG;" \  F9 w; l/ f& f8 J
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
: u, d  j  [, A. G7 |- Y  w                 if (err!=0 && obj==NULL_TAG)* B/ T* S! e/ ]6 m7 e  {
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
# K) x, F1 |0 y+ t1 Y3 |; ^        }7 c# d% ~- s7 y9 C4 B8 j7 _$ c0 O6 P
        else if (enumValue ==1)) K7 q: M' l" n& E: s) o2 X
        {
6 l* g9 q) F  E4 R0 X2 \; |1 x4 h' `- u                 int type=-1;8 g* m! S* R1 X; o5 s: Z) W
                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
4 j% R- g: E5 w! }                 if (err!=0 || type==-1)( S  s) g  [* f: U( o( c
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
$ @# @8 ]8 L8 w1 h        }
% M" X8 l# j6 p/ \' z        else if (enumValue ==2)
! v) S1 t5 S4 X" v/ q        {
$ I% A- J: v* {# ?& b* \" O+ }% I                 int type=-1;# w* [4 }$ V7 p* q6 Y
                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);" u. H6 l8 n6 p
                 if (err!=0 || type==-1)( Z; Z: b. [1 q0 F3 {. H
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
' s" i7 Y  F3 N) o        }
5 [+ T# I) I+ F9 C8 h0 U2 y2 L
; b$ f. H: E3 O, `        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
  c4 k4 _  J% H1 v, c}
" c: i! ]  b3 x
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了