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 6064 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、选择对象) }/ B5 p! w, n* U

4 r$ B+ J; _- B1 D- {2 O: }9 I* P捕捉
9 F! _0 R  d# h$ a2 r  PointOverlay             是否显示捕捉点
: M  y1 j5 ^7 G( q( K, p  SmartUpdateOption        智能更新选项
( y% s& U% H1 j                             Within Modeling   在建模. v1 W( }7 W- k% O  W# B' {; h- c
                             After Modeling    建模后3 S4 C0 \' r+ Y. a, [3 h, \
                             After Parent Body 实体父后2 x; v/ H3 G* R) I8 {
                             Mixed             混合$ K( Q7 G& l7 m
# `/ l, p$ O  A, F) X9 ~" X
  SnapPointTypesEnabled    设置捕捉点类型的可见性
& Z* p, J! n  r4 w9 I/ N9 ]' I  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用
3 }6 \' n, {/ g: ?* p1 O. }
! c% M( f. D3 z) K- i2 C0 j" y; X. H常规  ?" M& N0 }2 t9 E
  BlockID  控件id* M/ v! j2 m6 ~! [  ~1 b5 f
  Enable   是否可选/禁用控件
" D, r8 U4 p' q6 w  Group    组2 C, w, ^7 Z! \0 A6 n
  Show     是否可见6 s1 W5 [! X' ]+ X
, J' V- h# N6 f: k' N) P
其它 $ V( p' X7 k, S/ N9 O+ {0 O2 D
  附着9 ~. y. u) d4 s) q7 Z
    Bottom  底
4 L' \5 L- c  N5 d% V8 `! \/ I& n3 S. A    Left    左5 I2 u: f8 O3 _7 Y3 r  s2 D
    Right   右
* W% B  J. E( F9 `5 |) I6 `    Top     顶. \$ l$ K; b. Z- f
8 x1 r2 D3 @; t$ ]8 V; l
特定于块
2 i7 ^1 L$ G% ~' p  AutomaticProgression     选择后焦点是否自动跳到下一个控件
0 f7 O  W4 n/ f3 c2 e( K5 w! {: M  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
5 g/ L1 S' R3 W4 @5 A  {6 f  BalloonTooltipLayout     动态提示布局
! q) H$ c7 B2 v5 z! g) k: y  BalloonTooltipText       动态提示文本内容
! {* S7 R9 f7 _" s2 ?  Bitmap                   指定图片
: m8 ?: X$ L1 X& M& v, b1 }) D  BlendVirtualCurveOverlay 是否显示虚拟交线
1 x/ H* P; p' I; X  CreateInterpartLink      是否显示部件间连接图标在选择条上
& Y2 C& Q& d$ u1 V* d$ s. Z  Cue                      提示8 b' y) S1 a# z

! _0 X5 [' M4 q. Y& ?- {) p) I  C  InterpartSelection       部件间选择设置+ r8 _: l& G' w8 V1 u% G
                             Simple                                           简单
! q8 _  X3 d  c% b9 x( V9 G# J                             Non-associative Interpart Copy Only              只复制部件间非关联
9 s- L6 X! H4 P3 p+ K5 D                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联3 \0 U& P+ A) w+ M$ C
                             Associative Interpart Copy                       复制部件间关联
, [9 t* y+ u- I/ P
" d$ x( p; J2 D* e  LabelString              标签标题
- b# \1 t. g. f  MaximumScops             设置选择范围
  n  B/ k! c' z- |8 d                             Entire Assembly                 所有组件/装配( @9 Z8 z6 J- j. Y8 }" J; Q% r0 v0 K
                             Within Work Part Only           只是工作部件; }; f4 q3 e& c( E/ d
                             Within Work Part and Components 工作部件和组件/装配)# k' W. G' L2 h
- M2 m3 ^# r6 y% j$ J; y7 J. t  H
  SelectMode                设置单选/多选
* D; ?+ g# Q; Y2 S1 G                             Single   单选
& _- P7 l8 L  n                             Multiple 多选9 S& N# y  [! r' b$ C* }1 D. f

& {; x2 l& t, `  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)/ h! p1 C; [  Z  `8 o1 b' u
  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
7 N% K1 Z9 B0 O1 K
2 e* n9 h3 R# Q4 ^! V————————————————————————————————————————————) P$ h; Z6 v& _0 X! v' n
————————————————————————————————————————————" @& ~8 C, X! C
咧子:获得selection0控件选择的对象
$ F1 ~. `( K; H      UF_initialize(); / N* m! h0 ?) a
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");4 |: P' f5 X* s9 N
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数1 h5 z2 O! l7 N' N
      {      
# v3 q* O& B' ], P2 ~: X6 u$ }         UF_OBJ_set_color(objects[i]->Tag(),1);$ a. \5 \$ z( ]# `
      }
& Q) ]% i5 U" U5 V) o8 d) Y      UF_terminate();
; |# n+ {% |" S' t% B9 R+ @) u$ M
————————————————————————————————————————————
$ w8 h  q9 G9 _$ E$ H咧子:对象加入到selection0选择控件的对象列表
; \* c, w$ Y7 q# \! c& q8 G% V  U  I  W& B, _9 n* s
      tag_t obj=NULL_TAG;
. a9 o) I, y$ E7 Y. m9 q8 \! y      double point[3]={0,0,10};9 c2 W! Y  d; K. H7 Y8 Q6 t& ~
      double XYZ[3]={60,50,80};2 }" U5 S" E7 S/ i- b
      char C[132]="";8 z  q' I, ~! N7 c' v4 d5 I' L
      char K[132]="";$ R; b/ k% J! u: a0 V
      char G[132]="";# S& T7 t# [2 D) ~* D6 {3 ^
      sprintf(C, "%f",XYZ[0]);$ w5 J- M4 b2 i3 ?" c
      sprintf(K, "%f",XYZ[1]); 9 i0 k1 h$ Q  N1 R! v: a- h1 y1 k
      sprintf(G, "%f",XYZ[2]); & b% X0 F4 s' @2 @5 c; q# z& X
      char * edge_len[3]={C,K,G};0 p. o: H; x. W' N* C9 {* [% y
      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方
2 _) m$ n1 c6 ?+ R5 |' C3 t      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体" N$ J9 V1 M% z8 |8 |' ^/ u
  r) X& k# h4 x) U. @
      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen2 o+ Y5 H; V, P% l  x
      std::vector<TaggedObject*>objects;5 t) [: K0 g4 k5 A/ |+ I6 ]
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表
3 z% @: J" z! A' r. g# E      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
0 R& }% V: g7 R: X————————————————————————————————————————————
- T7 ]! }% Y' r$ d& P( \3 v9 P9 N! S" Y, M
//清除对象
1 \" o$ `4 v5 X3 W; N5 lstd::vector<TaggedObject*>objects;' |2 I/ V) \# P7 ~% y4 U% \
objects.empty();* T1 b$ ~6 X  E# `
selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
  \) O+ T: V: X% R$ J0 a
- e5 e% p" j5 t! @————————————————————————————————————————————; @+ \7 ]9 p( j2 {
咧子:只选择面" K4 Q! I; O; Z; k0 j7 g  b% L
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤
8 I* J, J& m0 T2 K3 S/ ^
9 P3 e8 Q& ?( J6 n  C" X0 Z" z1 P        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式( l3 [  _. A. J$ q9 z& u; i
% K$ f- y% a7 b, x3 U
        //对象选择过滤 只能选表面4 W) i% a( [) [! M8 ]: L
        selection0->GetProperties()->SetString("LabelString","选择表面");( S. Q3 c# u2 ], Z1 H
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
1 p  Q* M& B$ }0 N) z0 ]1 M        Selection::MaskTriple mask1(UF_face_type,0,0);) ?: X  K' i7 k7 U5 p
        maskTriple.push_back(mask1);9 R+ V- \1 v) @  Z7 m" K/ ^
        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);, N+ J" h1 |/ C  j, {5 x0 _# L
1 O; Q5 t1 S1 e# F% J

* J0 b2 e( H0 h* `3 Q咧子:只选择面 【UG本身过滤器跟着变】
3 ]7 ^1 S1 ]& j% _6 E5 z" m        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
8 ], _( u: f! X. Z) C8 Z6 ~( w3 u4 j% W) u+ }" {
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
7 o' X# f& s1 R4 a( s& g/ {: }# f1 Q8 G  I/ ]( L
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;5 @# a2 {5 ~& g% u; K0 _* ^# c
        Selection::MaskTriple mask1(UF_face_type,0,0);" u4 D2 N0 {4 S' U2 N
        maskTriple.push_back(mask1);! [! N; R/ f6 z' w
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();
) k; f+ E3 |7 c( P' |- |3 @        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);. G) ^9 c) r, l4 Q2 ?1 V4 P% n
        delete selComponentProps;: b' E" N3 ~1 |+ T* m/ I0 y* x
        selComponentProps = NULL;1 c9 i  E: ?9 [# X
. b# Q) V2 S3 g' 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

列子
/ q$ |; \! P. d" B/ Z7 t+ O' K- o% i2 c% G. |# k' h
————————————————————————————————————————————2 e7 V4 D0 [7 Q9 Y
————————————————————————————————————————————6 q+ U, \+ S5 {3 W% [) n9 V$ ^2 P* J
咧子:只选择 实体边缘 直线和圆弧/ v  t, F7 m' U1 H; V4 [1 ^

8 A! Q6 w  p" w' ]- Z9 q4 K  initialize_cb() 初始化里加代码 可进行对象选择过滤
% v) H  c6 |: u6 l% M
6 g. Y+ ?  ~2 Q8 ]        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式- ~. r% Q: J4 d6 q! ~
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧, G9 O1 }2 h0 W) X; E
                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;- Y. |6 u* q+ J4 R: @
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);5 r+ D6 F& p; ?+ D. v2 m
                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);8 w! A4 E" C- N' i) c: k/ X
                        maskTriple.push_back(mask1);6 ?+ W2 ~  l9 @7 e  N
                        maskTriple.push_back(mask2);( \9 Y7 B7 d0 j- v
                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);# S1 s. `2 A  B* h; L* U, `
0 m/ I  ?7 p$ E7 e) C# u7 }
//过滤无效的边缘
% w% l& {! s% k; F; eint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)8 X1 _, c! n" V+ x
{        ! D" [$ \: e5 R( F# x
    tag_t obj=NULL_TAG;7 L7 Y, n" P5 P1 s2 ~
    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
, T6 B5 a! o) W0 E% V0 t    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表0 x  K0 o% c+ v, J# m2 Q, K. G
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
. ^3 f. K/ T5 Z6 c  r( m}
2 e, y& {- D/ R* R3 z————————————————————————————————————————————
' Q  {* y" R. J. |. J( f————————————————————————————————————————————% m; M4 a+ b6 M$ p2 c5 A
咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体
7 ]4 v9 {! e) T; i. c* `! E
  I3 c% P2 P) K- G( |* o" M2 j   int enumValue = this->enum01->GetProperties()->GetEnum("Value");$ F% g5 [# {+ h) L
                    if (enumValue==0) & I4 {, L. j3 R$ P& l; d6 E5 t( ]
                    {- c% C7 y  y# O/ {
                            selection0->GetProperties()->SetString("LabelString","选择边缘");/ m; w4 V& d: o0 ^2 ?
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
9 b% e  h6 h+ ]7 w) V. F- h8 o7 p* y                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
) p: G; U3 D; Q& B* i" U5 s6 j                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
2 {; g! L) R1 l# C+ Z  _0 n. N                            maskTriple.push_back(mask1);* m% u# d! j2 w
                            maskTriple.push_back(mask2);
6 A% }! Y6 {& [) c                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
5 n- g0 w( {: d+ ~                    }" P2 @9 v" u: Y9 [; Z& B- A: W
                    if (enumValue==1)
6 D* H" Q; S( E2 d5 R1 J                    {
0 |5 @3 r" w1 f% H3 p                            selection0->GetProperties()->SetString("LabelString","选择表面");, h* W4 u' S% m4 ]& ]! z& {* M0 p
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;4 [+ q/ m+ \8 T1 E$ g$ M
                            Selection::MaskTriple mask1(UF_face_type,0,0);$ R6 V" T# U- A5 t% m$ ^) _/ w; V
                            maskTriple.push_back(mask1);
: }- m2 Y% |. }" v                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);9 _! y) N1 a9 S# B. V8 z( n
                    }. d8 D: }6 Q5 W* R, E* E4 D
                    if (enumValue==2) + v1 w, B  J9 O) p* c# U* P/ p! y$ c
                    {
5 ~0 D0 K4 J* ?; p: I: s                            selection0->GetProperties()->SetString("LabelString","选择实体");
" i* s5 L; j" C6 h2 L' F                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;. A6 O3 \+ ^9 j6 C
                            Selection::MaskTriple mask1(UF_solid_type,0,0);* s$ I! h, ]& g7 d4 m5 f* \
                            maskTriple.push_back(mask1);
+ c! D  A; y/ x7 {                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);7 B5 C- u7 w9 m8 e
                    }5 y2 r$ z8 X* z, l- y

6 e- b" i3 F* u) J  N6 q
) G1 o+ s, X/ U1 H; U* J//------------------------------------------------------------------------------
' }7 X9 h: V% Y' u  C//Callback Name: filter_cb 过滤不符合对象
6 x/ k! H& e9 C( u//------------------------------------------------------------------------------
2 p( o$ H, `+ b( @7 V& y* Gint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)( @! h0 n. c8 e1 O8 i$ P
{
" b/ q  D! {6 t* L+ U        
7 T& W! V1 ?+ v9 [) h        int enumValue = this->enum01->GetProperties()->GetEnum("Value");# }7 a& K/ K% ^% l/ b, ^
        if (enumValue ==0)) u0 B  f  j! @0 Y: A  X8 M' @
        {# L  k- B1 K1 B# \, b
                 tag_t obj=NULL_TAG;
  h. |- V5 P6 L& c  V" z                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
0 K, k( W+ ~( o- j                 if (err!=0 && obj==NULL_TAG)
" D1 r9 n0 h3 y* b+ d9 O             return(UF_UI_SEL_REJECT); //不加入到对象预览列表* v# h8 v9 S0 n7 w% N* Q! \+ Y9 L1 I
        }
9 u4 Y( w; v, A& ?: d: [        else if (enumValue ==1)6 g7 |1 C2 g" m
        {# p6 A' L0 Y3 {1 _5 K4 z. U
                 int type=-1;$ f; p6 W- ?! C. I1 b; b$ D4 R& O! b
                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);( Q( k+ @2 E; x/ D/ m) w
                 if (err!=0 || type==-1)
4 g( T! g; Z6 Y             return(UF_UI_SEL_REJECT); //不加入到对象预览列表0 J5 a$ q# A% x0 T& Z" S- ^7 m
        }
, ^! E7 W0 A7 a# P        else if (enumValue ==2)7 Q: H1 |' g: r  o) J1 Z
        {
1 ]7 P1 W  x$ ~4 ^- N                 int type=-1;
: d; P5 R. r. ^  V                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);2 b3 h* S5 v7 X$ T$ p4 O. I  `. V
                 if (err!=0 || type==-1)
) I) ^5 Y  G/ D6 W5 C. x; [             return(UF_UI_SEL_REJECT); //不加入到对象预览列表$ ?7 R; h' c3 h! `
        }
/ O2 C% k/ `  a3 F) ]8 h8 C  b' X. T! o% H' [# A8 @0 C8 P$ }, s
        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
* |1 ~2 r7 `$ u: _& v6 L}
, q. n: M3 H( m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了