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 6044 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、选择对象
% X  J" N& \. `& K9 V9 u2 Y7 K: F+ C& Z' ~; ~6 y$ X
捕捉
9 p' W9 Z( j0 I3 `5 s! `  PointOverlay             是否显示捕捉点! C. _) O- Z" Z& f+ `7 @
  SmartUpdateOption        智能更新选项2 E0 P7 [! Y. x
                             Within Modeling   在建模
" ^: C1 c5 w2 O, P2 z% n% W                             After Modeling    建模后
5 {4 f; W/ O" m# }4 J; i$ ~                             After Parent Body 实体父后
) q3 \; X. ^9 d* T                             Mixed             混合; Y) a& L+ Y5 j# x6 a' G% M

0 \( w' p9 r, ^+ _- e  SnapPointTypesEnabled    设置捕捉点类型的可见性9 q! {4 `3 Q7 q9 |# g* ?
  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用6 `4 J+ e8 D6 ?
1 S1 [) {3 C4 e$ g; \
常规
3 G6 U, z! o" S, M5 w  BlockID  控件id, x/ O! N! v  i
  Enable   是否可选/禁用控件5 o" A  Z/ W- P- b( `, I
  Group    组. S$ V: i4 W! ]/ b3 ^# D
  Show     是否可见
0 j$ c% i) V+ u9 P2 E) ?5 ?( }* H* |) R. r; C4 v" y
其它 / K) X3 x/ T6 R0 N( z, [
  附着
/ v0 b* Y8 ?% b    Bottom  底2 v. K* m* w& j% O& a7 E
    Left    左/ v% L- I, q% u, L
    Right   右: o4 a, a$ s3 ?! \6 R4 X
    Top     顶1 X5 d3 K9 v9 Q5 `/ U

5 ~8 T* a. j# E; M8 p9 X/ ]) ]9 ]- k特定于块
! Y# y+ J- i6 @5 p7 H2 ^, S  AutomaticProgression     选择后焦点是否自动跳到下一个控件
, U0 y. O. N1 G' b$ {8 r' S: r  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)& s+ |/ ~" k2 ?& j( x# M
  BalloonTooltipLayout     动态提示布局7 N5 ~6 v$ b3 n5 w, g. M' n' R, z
  BalloonTooltipText       动态提示文本内容
5 _) P- ~5 ]2 P' A/ [6 Y  Bitmap                   指定图片4 a4 d2 U0 M$ W, h! x
  BlendVirtualCurveOverlay 是否显示虚拟交线
9 U. P+ _  ^' _( K/ U  Q$ z  CreateInterpartLink      是否显示部件间连接图标在选择条上! p  P/ x% j5 y/ `
  Cue                      提示
. o5 Q4 j( G& c
4 W' l& G- ^* e; Z3 J1 R  InterpartSelection       部件间选择设置
8 p# M5 g8 w: X: `2 N0 {$ M                             Simple                                           简单$ ^. g' j5 k% s) s8 s. _" S: q* K' V
                             Non-associative Interpart Copy Only              只复制部件间非关联
' s! o' X+ A  ~( f) Y                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联. P0 V+ `6 H! M  m0 b* X9 C
                             Associative Interpart Copy                       复制部件间关联8 |1 y% ?" X2 ^  s* ^- J
/ x3 H3 ]1 \9 u' x) _$ c
  LabelString              标签标题% Q! Y/ }* z) j. x$ K
  MaximumScops             设置选择范围
! l& E* w/ L0 y* T. P                             Entire Assembly                 所有组件/装配
, K- G2 O( d8 }9 m: H& l8 |                             Within Work Part Only           只是工作部件
/ T# w8 q$ r- y( u2 Y                             Within Work Part and Components 工作部件和组件/装配)
/ A  S% ?6 K$ o0 |4 I; v# B2 N/ n: k9 b2 m7 B! x
  SelectMode                设置单选/多选
/ z& z3 w0 P  ]9 m+ l, z: Q3 Q                             Single   单选
1 a! r2 c5 Q( g$ G. n  Q+ [                             Multiple 多选+ e5 ?1 E+ C) F% I9 |4 _
0 a* E) F/ W8 A
  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)0 w. O! f) b( e/ n
  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
' n2 S$ `9 r. k; V& a% C
* ]3 ]+ f" i2 V3 G; W  {. R: h  H————————————————————————————————————————————
( J; Z) E/ P' n0 b% a0 {2 W————————————————————————————————————————————3 Z' L5 k8 |: b0 s5 |# ]& S
咧子:获得selection0控件选择的对象: m, E5 J# E2 V. z+ X7 v& K
      UF_initialize(); , M- Y2 Q3 @0 h' E0 X9 E
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");
7 o7 i# O  g+ C      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数! @. C, W; b. }, Q
      {      1 D/ R& a8 U2 B$ f
         UF_OBJ_set_color(objects[i]->Tag(),1);
+ y9 T% L# m* C8 I6 A      }
- h' h) O) x; }' k( \. [      UF_terminate();9 s# V3 Y) F8 n2 F* i

* R) J9 t3 Y0 T1 Z6 E3 u————————————————————————————————————————————# a) D0 G9 a& b8 f6 W4 g5 r
咧子:对象加入到selection0选择控件的对象列表
2 y  S0 O* ~* j+ J3 y' j  o3 u; H* x9 n) O# A5 L
      tag_t obj=NULL_TAG;3 }( s& P& b8 p7 p- \
      double point[3]={0,0,10};. u8 F" E, K& L! k9 J
      double XYZ[3]={60,50,80};1 M7 A- B( h( W5 q
      char C[132]="";+ a. ~& O+ {2 M# U& \4 \: B
      char K[132]="";
. B, G5 H7 z% d( X6 G      char G[132]="";; k/ }! Q6 d9 q: _
      sprintf(C, "%f",XYZ[0]);# I  d% Y& ^2 k* V4 n
      sprintf(K, "%f",XYZ[1]);
9 y3 S) F( {. D# a+ T4 d& B$ }      sprintf(G, "%f",XYZ[2]); 2 }, M# n' M1 v. v9 d  ]
      char * edge_len[3]={C,K,G};  u( L. J3 T, n4 N- ^  F% }
      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方
% o, I: I9 w: s! z      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体
, [2 X" ^2 |& B( C
( l6 j7 t2 `" o4 y/ V      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen- E& z, t0 `2 K' t7 x5 i; j% `
      std::vector<TaggedObject*>objects;7 _5 M( q5 f1 \. F# r6 V6 U% j
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表
5 w! p7 _! q9 m6 W2 c      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
0 B2 W8 b- A% b) t% X————————————————————————————————————————————7 l, n* x! S/ }/ _

6 [3 E! ^' d/ j0 P) g; R9 K//清除对象
. h. h" h* H& ?# k8 Istd::vector<TaggedObject*>objects;
( v* g* W4 b$ v0 oobjects.empty();  n2 `0 ^5 s1 G  D
selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);, [! l1 L, E3 I- z6 M

# `, Z. Y0 I- m% t, c/ z" }$ h————————————————————————————————————————————$ ^6 Y; y! S, O
咧子:只选择面
% ?" O7 `6 ^2 R5 G, z# L        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤  W6 m- N% i7 z5 p. P# E: b. E
! h6 r1 ^6 ?; Y0 p) Q; f
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
+ i2 {6 Q. O4 l: S+ e- ~6 n3 X% R* k& c# T0 C) v
        //对象选择过滤 只能选表面8 p' }" d, j& C5 y
        selection0->GetProperties()->SetString("LabelString","选择表面");
+ g1 c: Q" ]* Z& k+ X: e6 q        std::vector< NXOpen::Selection::MaskTriple > maskTriple;6 {: D& Q0 a8 ]( u
        Selection::MaskTriple mask1(UF_face_type,0,0);
$ m7 _+ M% S3 {        maskTriple.push_back(mask1);
' f! f4 }" {* w# o( j6 f/ _        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
/ _: S/ d4 @! \2 X4 z3 y0 k
7 O" Q6 s( w4 J* ^. F, Y# m3 p0 [1 y2 }
咧子:只选择面 【UG本身过滤器跟着变】
" M" ~! l* a$ u9 S% v        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤    8 C8 s. m+ d0 h3 }7 U! i3 B

0 Q8 z6 }) Y% M$ U% f        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式/ B- F( ?0 I" a- M9 ^
. _7 t& N3 |+ c6 v
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
3 N( b" A( K, J        Selection::MaskTriple mask1(UF_face_type,0,0);
/ b! E& p8 N9 [        maskTriple.push_back(mask1);, ~6 p2 i/ G4 _6 `% A
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();: @9 N% g( ]! I; ~  d, o
        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);& y. W0 ~" t% T
        delete selComponentProps;
7 y8 A& u; G/ |0 S8 V0 F! w        selComponentProps = NULL;- P8 P$ z" |2 S
% a8 \$ z: n" ~* Y" X
上海点团信息科技有限公司,承接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 w! p( s6 j: N# g/ D
1 {. q0 K$ ?, l8 J. |* i) t
————————————————————————————————————————————
- t9 o  o, Y2 F' l————————————————————————————————————————————1 g9 m2 C* g7 Z3 w$ R$ c
咧子:只选择 实体边缘 直线和圆弧, }$ L3 B  h0 l3 m1 A

# s& ]0 B! V& l5 I& [9 t; ]! J  initialize_cb() 初始化里加代码 可进行对象选择过滤
* a) X- G& G, E4 I: H' w! ?. j/ }2 L' Z! ~$ }' |5 E+ a( X
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式# A9 i& T' X# S
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
, |, v1 f/ [. M: S, C                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;0 t  O# [+ b. G' l5 }
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);! l4 M1 A3 t) m7 g- G0 X
                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);  J: ]7 n8 m( I, q9 j
                        maskTriple.push_back(mask1);
' j8 ?$ k7 ]4 m                        maskTriple.push_back(mask2);# I0 ]: K0 T8 w1 ~
                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);6 L( R0 Q$ T. p& e' p* k: m

% ?. H5 W& T  E8 ]//过滤无效的边缘- g6 E" A5 J. {% z; m! a
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
& I4 {! k! s% K7 i& m0 y{        4 e: a1 t" C  D4 ^7 a
    tag_t obj=NULL_TAG;
$ X9 R0 x* p5 b, X$ m  j    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);+ N0 R2 F$ R% r# e( {& Y
    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表
' @& J9 E1 u0 [$ }$ ]    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
" C( X9 E; i& f; {, \}
' s( Q+ K! E# X8 ^8 c9 U————————————————————————————————————————————
1 V4 @' ~, P. W1 b) l————————————————————————————————————————————
6 m1 W! ~& O: m咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体
( E) h, W1 C; m% s: [' a( v4 ]4 D& y2 \0 ]6 e% ^
   int enumValue = this->enum01->GetProperties()->GetEnum("Value");
* |) s# Q: Z; n3 f                    if (enumValue==0)
, q) d! P6 T+ g% n                    {
6 o. Q# w6 e, b! c1 q                            selection0->GetProperties()->SetString("LabelString","选择边缘");8 |/ v  f' C$ I' o
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
6 k1 ~0 a  p" |5 w                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
; B. u8 z% S# u; K0 \: X' r$ |6 O5 ~                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);8 C8 l4 e& W! z  f# t; L' b
                            maskTriple.push_back(mask1);
! v7 l6 ?/ Z- u' j: I5 A4 A& G( I                            maskTriple.push_back(mask2);5 m* G( y0 E  B) h
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
+ b' ^; V6 K# N, Y5 _* R, l                    }2 V' P* `# H# R' r; j
                    if (enumValue==1)
. H3 C- R5 D* m" W( p. d                    {7 S& J; b& [4 r. j* W! q/ c
                            selection0->GetProperties()->SetString("LabelString","选择表面");
5 x9 g- J8 q2 J/ ^3 F                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
% G- o, G) o+ s; O, A; z                            Selection::MaskTriple mask1(UF_face_type,0,0);7 W. v  K7 b0 \
                            maskTriple.push_back(mask1);
; k1 z. k7 _) u7 _# f. s5 W' H                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
, R/ F/ l* K# I. D2 P                    }
. t. B2 X% R# N3 v                    if (enumValue==2)
2 p% c0 n* O2 e- B9 Z; S9 W                    {
' q# [8 P, C- X  y- M  c                            selection0->GetProperties()->SetString("LabelString","选择实体");
+ ~: c/ q: n0 R                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
: Q/ v; N! c( r; S% ?( L                            Selection::MaskTriple mask1(UF_solid_type,0,0);
$ g) ]) F! T) U. o/ w6 @0 [# O                            maskTriple.push_back(mask1);
, W0 Z$ S: L" D2 a                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
, P/ a0 u  w& H& B2 w6 j3 u/ Z                    }) X% b6 [$ j) E* K9 X! z
  J% H- b8 j) T/ i+ V
! G% |# s, ^  v9 H* H# W8 y
//------------------------------------------------------------------------------5 M7 |1 B& t% I, `, o  {
//Callback Name: filter_cb 过滤不符合对象
, d5 e" M5 e& e5 k4 E9 J, v//------------------------------------------------------------------------------3 X" L0 m: O' D, r# _! Z
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)# S  H# S' }* D+ k& {9 d
{+ @- u3 K" o, ?$ q2 I
        4 x+ {* A# e: I
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");& o- [& G- d9 ^
        if (enumValue ==0)/ z2 H8 r6 Y1 I& U
        {
" j+ d2 f2 l0 u8 Z! M                 tag_t obj=NULL_TAG;; V  ]4 p4 e  X( n( S: Z
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);' }1 S1 _' K. E! |4 J2 W' e; F3 {2 o
                 if (err!=0 && obj==NULL_TAG)
" ]( k4 P# X, y& W. d  t$ u7 L! r             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
' @% [2 P! Q8 T: g( R5 b        }: K& I, ^8 P3 A! S& W
        else if (enumValue ==1): |1 y- G. l- Z6 P
        {8 ]  q; g4 b# S! }. I( B% P8 _/ u: ?
                 int type=-1;
; s- t6 j( d1 b  o" v                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
( u1 C$ q2 \' s5 @  j) |                 if (err!=0 || type==-1)
* I# ^- T: ]. H% K             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
# r) _3 D0 R( V2 h; d8 f        }% A5 @# e, H# k0 V
        else if (enumValue ==2)8 E( f8 j) ?4 s$ H, b
        {7 d5 u9 @& k  W3 q! G9 @
                 int type=-1;3 [+ {' ~( O2 o  k, q* t0 W
                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
& z; o" F  D  [1 a1 T& r                 if (err!=0 || type==-1)
- g$ N- p0 ^- l4 Y) `             return(UF_UI_SEL_REJECT); //不加入到对象预览列表" @* R9 a% ]  }6 P* o2 I
        }8 J% |& `+ E) w

$ c) \1 y' s0 ^" ^& \3 I        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表0 u8 S- G6 Z9 ?3 o" n$ a
}
' D2 [- B+ K/ I+ a1 v
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了