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 6042 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、选择对象
$ @+ f  ?- p9 p6 N6 U, w. i
4 Z: Z# N: Z1 m4 H  h捕捉
7 h- e9 T% W2 b( u  PointOverlay             是否显示捕捉点
( Y- h& b" G6 S' _7 Y6 U% `  SmartUpdateOption        智能更新选项, ^, _% t3 ]' e, O/ ~" P5 d8 r6 B
                             Within Modeling   在建模# S$ U  u8 ?7 c5 D+ K
                             After Modeling    建模后
* D5 }$ `) A4 J) A                             After Parent Body 实体父后
8 m7 D. Y" u3 ?- j! [( q                             Mixed             混合7 w  e( E! Y5 t* \: J# q5 ~
+ r  ]1 i; K9 l" X
  SnapPointTypesEnabled    设置捕捉点类型的可见性
' J* U! n7 |, Y  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用# ^, o( h- Q7 B( r( P9 Z
( O% s- y  }2 u: g0 H- M$ N; A: U+ w
常规# J0 T' R6 D2 ~) [. Q; k8 N
  BlockID  控件id9 t" U8 j0 U& z' w& k8 b% T/ ~
  Enable   是否可选/禁用控件
" D7 u. A* t: `" c/ h  Group    组
. o; ^5 d: r: d3 Q6 g4 ^  Show     是否可见
: }4 R* T" x' R" k: _* f3 N4 o/ k2 @; l
其它
- Q& s# e$ q7 M) ^2 N  附着
3 w* z% b' B: \/ n$ A& x! D    Bottom  底9 D* y, g- \/ a" L" L: C; G$ Z! q; V
    Left    左
! g- o8 q, a& N9 k% S2 a% H    Right   右
! `7 e% ]" G+ t  u8 @    Top     顶+ n& x$ E' r; D9 j8 w1 d" g

; P$ [, j% H. k$ }# \特定于块
( ^( _! D( M$ Y3 D, i, y1 y  AutomaticProgression     选择后焦点是否自动跳到下一个控件: l5 l) g% }2 b2 ?3 i9 e! R+ \
  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)/ e+ }  q% ^! y+ t5 {
  BalloonTooltipLayout     动态提示布局3 \3 z: Q, o. e1 x* u2 r% Q% r
  BalloonTooltipText       动态提示文本内容
( J; E- m4 i, c# ]- }& u  Bitmap                   指定图片$ I, C$ Z& J) h# g$ ~' `/ b" ]
  BlendVirtualCurveOverlay 是否显示虚拟交线
/ ?6 m( ~9 g4 b4 j  CreateInterpartLink      是否显示部件间连接图标在选择条上6 {% A% P+ f2 l1 ?! d
  Cue                      提示: j7 R5 S3 B* Z7 U- M

# n" ^- w- Q( `  Y# n) S  InterpartSelection       部件间选择设置3 E6 q* L: b# {) ?
                             Simple                                           简单* G5 m8 i# G  C2 E
                             Non-associative Interpart Copy Only              只复制部件间非关联! P4 L& q2 P5 Z
                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联
% T- t% V) ?: K6 v. M4 F- z! H                             Associative Interpart Copy                       复制部件间关联
" o# _& ~2 p: U5 O( B' @
2 b6 l0 [1 O3 w/ K0 z6 s. A1 c  LabelString              标签标题
+ d* d5 l) N* @* c  MaximumScops             设置选择范围
! _; M# V7 F5 A6 {. _$ s0 G, }) I                             Entire Assembly                 所有组件/装配
1 g! w2 }6 O- g5 W9 G$ ^' G% E/ d5 l                             Within Work Part Only           只是工作部件
; u4 D, [& L$ C                             Within Work Part and Components 工作部件和组件/装配)
" E6 S& m2 B# `5 n* {% |% p1 N7 s" b
# V( F0 F: s7 x/ Z: \% [& W! k  SelectMode                设置单选/多选
  D) ?6 ~7 b8 l: N7 }' E" c                             Single   单选
0 O: X$ @4 ~% R: q" o                             Multiple 多选
9 k2 Y2 R2 [: o' b, o" ~- P8 f" r! v) e) l
  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)
2 i4 O+ j* J9 {6 @. c  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)1 p1 |: E0 p3 ]: d

4 Q' E+ a% {0 q3 {& ?  `+ k5 @————————————————————————————————————————————
, ?5 q" _1 r* q2 k4 _2 S/ H2 a————————————————————————————————————————————
' P3 m5 ~8 S7 O3 b& K+ n1 ?咧子:获得selection0控件选择的对象
/ [9 X) g9 a+ f      UF_initialize(); ; g7 I/ b. N# q( a
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");
0 F, K" R; o7 j: `) F3 o4 N      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数( H9 @6 ^6 a  ^" g/ [8 h' B0 C% z
      {      
  m  ~# z! ^6 m! ?: P) |         UF_OBJ_set_color(objects[i]->Tag(),1);- Z6 J9 u9 F) p" y  A4 W9 \
      }
7 w) v  r% T* U! J      UF_terminate();
7 `3 t2 J% X: C/ y/ C8 i$ x! {- ]3 E& l& e/ w0 v
————————————————————————————————————————————! I! Z+ Z; q& T; S! ]+ L. |' V
咧子:对象加入到selection0选择控件的对象列表- E( G% d. D! H2 n/ n5 @; X
( N0 b- a$ j- Z1 y9 h/ H
      tag_t obj=NULL_TAG;4 s- _. _0 C, a$ W8 i
      double point[3]={0,0,10};0 I. W; ~# }! L! h/ y: x* e
      double XYZ[3]={60,50,80};
4 j: T2 b# z! U- a; D      char C[132]="";
! G/ N0 `3 U& `/ D6 k8 c+ D  }, p" K      char K[132]="";
2 F# T  L! _# `7 Q+ c      char G[132]="";
' p4 H; G- _# ^2 t6 C- n) J" V      sprintf(C, "%f",XYZ[0]);
+ x, H4 W- N6 B      sprintf(K, "%f",XYZ[1]);
# d  T8 e# x  D% y5 y# P2 u9 @5 s      sprintf(G, "%f",XYZ[2]);
9 F2 t  D4 M' X5 ~4 H      char * edge_len[3]={C,K,G};
9 u1 r+ U& U& ~  c1 O+ g      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方( u4 C2 n! F' m7 g1 ]4 B
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体
- ^3 c- S( L; k8 g0 b# J2 ~( A6 [5 W7 K& N6 z! c
      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen
# k( ]# v4 [. q) c* K      std::vector<TaggedObject*>objects;3 |0 B& \9 q+ L4 M: N2 {$ a
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表! c! l6 {) U0 v
      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
3 a) z1 r+ y. W————————————————————————————————————————————
/ ~* M2 `& ?3 {: X) [5 c( x" J" l/ e; b5 a0 ?! h
//清除对象
3 r0 w- K' Y8 F* G3 P- T0 p. z, [, tstd::vector<TaggedObject*>objects;% u6 g2 r6 U* A  o3 s5 J
objects.empty();
$ T2 I1 h8 i7 Z$ K) w+ n8 Eselection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
) {' D5 m* Y% [/ b  p: x+ F  n" a* O. o8 U4 d3 t" _
————————————————————————————————————————————
- A  r! C  K2 G/ ]8 p0 _3 ?0 p, u- Z咧子:只选择面9 Z4 j& p& ^7 t' M1 N  W" U. F, Y* W
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤* j9 J4 v, N: }: I5 w

, f. P+ `8 C, h0 |# n# d" U, Z        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式: ]! J/ N8 t% t6 M8 e7 R5 C
. |" `0 Z, I3 V' w7 y
        //对象选择过滤 只能选表面
  s- n# k. c, z  J( _        selection0->GetProperties()->SetString("LabelString","选择表面");
0 o: p! B6 L" Z0 f# F" d7 n1 K" ^        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
9 ^8 X) Y' M: U4 m: c% k: F        Selection::MaskTriple mask1(UF_face_type,0,0);
3 ~4 o8 l- O% ~        maskTriple.push_back(mask1);$ c8 c8 B* n3 g" y& @2 y
        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);: H# F8 `6 E; a- X0 u+ i/ X/ }

% v. B: ~, E. P
2 ~9 Q% g* Z/ E7 L9 g咧子:只选择面 【UG本身过滤器跟着变】0 V* h$ Z5 b1 E. [/ u
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
) u* h; j! Q8 @: P# p: Q  H& R0 q7 j0 J+ {2 Y' Z
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式/ _9 N8 y' M4 k) I5 u  p- V
5 U3 n3 N2 _! c5 x3 o  C# D' y
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
; h1 A8 a' l4 R" M        Selection::MaskTriple mask1(UF_face_type,0,0);
# g- Z' v/ z! p+ F- `6 E0 y1 l) Y$ w" n        maskTriple.push_back(mask1);! N( a6 J. [0 z& v2 K
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();
& q* R6 y0 ]+ z# Y5 z6 n4 r        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);
3 w4 u- J; D+ P1 {2 R! I6 C        delete selComponentProps;; i+ z) Z1 E1 H% E. H# d
        selComponentProps = NULL;5 G$ ]4 Y- L1 ?
; I8 J9 O6 w# W+ f  Q7 Y
上海点团信息科技有限公司,承接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

列子( [) L1 |# Y6 n' j

7 U+ B2 J+ H4 [% L8 f————————————————————————————————————————————7 d: F9 j0 U" r3 ~$ i" j8 ?8 \
————————————————————————————————————————————
  F5 f* @6 W. H; j) Z咧子:只选择 实体边缘 直线和圆弧$ K3 M( \% C4 I0 F$ ?0 V* K

! {: D; L5 P* c0 V8 e( H  initialize_cb() 初始化里加代码 可进行对象选择过滤
0 a$ N) U5 ]4 |- L) x4 B$ S/ Q* i' `) K
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
* ^( @; f) S: h                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
" U4 T" z7 [# j1 ?3 N                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
# Z; D* \) C/ p; `! e/ G0 i# u                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
3 M; R  d4 K" Q% y; f' N0 \6 m                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);7 ~- X- Q& X7 [: U2 Q
                        maskTriple.push_back(mask1);
& A' ~; S# B* Z* a% y4 r' X                        maskTriple.push_back(mask2);
% y& Z1 M& W& D' i                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
: |9 c- E3 q4 j) t7 X& @9 ?3 w5 Z
5 `8 G* @% K0 l' H* o//过滤无效的边缘
- ^3 S* N" A1 M; Oint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
! P+ F; w' f6 G& t% s- B' v{        % b2 H3 X/ u! i% p0 n
    tag_t obj=NULL_TAG;
" T7 N( L9 w4 w: G7 V    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
0 c0 d4 X4 n0 H3 K    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表
8 z  @& k3 |  [' f* V* ~, l    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
, m* X$ G* X  W}7 X# K9 P+ q  r* n# n8 u9 l
————————————————————————————————————————————
1 t3 e6 I$ ^# V' ?5 N6 S( z————————————————————————————————————————————
' m/ V  {# d- O& C8 E8 @% p咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体
: e" K8 P/ k  t2 }
/ z8 M/ m. ?6 \6 e& J   int enumValue = this->enum01->GetProperties()->GetEnum("Value");
8 E6 |+ A$ l9 v* ~' _$ m* ^                    if (enumValue==0) ; y( s8 K: i+ R+ _% X$ f
                    {
7 W) [0 \: B- J                            selection0->GetProperties()->SetString("LabelString","选择边缘");! |+ k6 I" ?5 H0 d6 S1 y
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;- H& ^- ?' M9 _/ q
                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
5 Z6 e$ t! `2 e5 D; c3 v                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);0 ~; O0 J' |. Z* `: q, L7 |/ S
                            maskTriple.push_back(mask1);
! _  H2 |3 T8 M: }6 A# k                            maskTriple.push_back(mask2);
  g- ~9 I' z* w$ E  P  w: f                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);: h' t& ]* ^( \* M7 Z
                    }
# i* ~( H! `# o+ b                    if (enumValue==1) 6 U; f3 m0 V- S6 _; K5 C3 J
                    {- f  |8 m6 L1 @/ z
                            selection0->GetProperties()->SetString("LabelString","选择表面");! L* [" ^* Z2 P7 W' D7 d0 `
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;) `, i& {' d6 a1 J& N( v- ~- J9 R
                            Selection::MaskTriple mask1(UF_face_type,0,0);
- G: G; v( ], I. I+ Y                            maskTriple.push_back(mask1);! A# A9 o8 f: }0 b9 G8 U  [0 ~
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
0 X+ \5 Z. _0 |! {+ A# I2 y, X                    }
8 `1 V. w1 v- j  z) A  V                    if (enumValue==2)   a$ w7 h5 t# c' w6 m% I* I7 i
                    {
; X- L& A7 J0 ~                            selection0->GetProperties()->SetString("LabelString","选择实体");
: d' h3 Y$ K+ s                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;) V" }/ t# h# B; \% f0 U
                            Selection::MaskTriple mask1(UF_solid_type,0,0);' q  |0 B+ n) x( q$ b
                            maskTriple.push_back(mask1);
0 o9 a; k+ X: r                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
$ `7 ?7 z6 p6 B$ @6 f8 m+ w! ~                    }
' r0 ~! W/ B/ a: l, N" L# H1 r4 }. a  ^& d; w$ V2 r0 ?

" `/ m6 m  c0 [1 N//------------------------------------------------------------------------------
& j2 E" n* o% x! T% o$ Q//Callback Name: filter_cb 过滤不符合对象' d0 U& o  f, x! m
//------------------------------------------------------------------------------( n1 k* X' Y, ^$ v, J& x( ~
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
; B4 A  u) e6 y' X{
- {  ]2 t: Y8 _+ h3 m" o+ H        
' m! v, e0 I% \; h8 A+ h9 A        int enumValue = this->enum01->GetProperties()->GetEnum("Value");
+ Z" X# {. o1 q        if (enumValue ==0)
/ Y3 n9 U& Y4 w+ T        {' Y- g# F) l4 B1 ?
                 tag_t obj=NULL_TAG;
0 ]$ ]. x- }& t4 ]+ b( |4 @7 `1 {7 n4 W                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);( c$ ~; Z, r, B$ {
                 if (err!=0 && obj==NULL_TAG)
. i, L7 n( x2 i3 {             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
" b/ a! l" n7 f! d( p        }: `& l0 c8 @2 V; k4 Q
        else if (enumValue ==1)
0 a+ x9 y3 \3 p: [) }) ]$ a+ [8 ?        {$ x4 K( s* D3 z0 u1 [
                 int type=-1;, f' P' n+ m" W0 Z; O; ~- y
                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);+ v" {4 ~- [; k& o( @9 ?
                 if (err!=0 || type==-1)
% W9 x. {" u: {             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
. [8 j0 u+ G  C. i5 }: ]        }
( W( E+ e' V1 J        else if (enumValue ==2)! H5 V  S4 @) |
        {; ~. z7 M* p- [, }( f
                 int type=-1;6 h( Y. h+ x: S% Y8 m
                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);
! p" ^# K& X6 d* r% u- \                 if (err!=0 || type==-1)
" K/ H8 I6 j) T0 j7 l9 T/ {             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
  O" f& a8 K4 g' u* m        }. u  A+ E+ @1 ]) C* k4 q
, b! A/ H" I/ p
        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表  E; K2 F6 t' C2 n
}
( K- U5 l8 P- z; B  ~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了