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

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

[复制链接]

2016-12-12 12:24:54 6155 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、选择对象9 ^* G0 Q% K" r7 _1 C* c" o

7 f$ u& D  z5 ^  c* ^& u捕捉
, L& a* k) r) L  PointOverlay             是否显示捕捉点
+ z6 Z+ b2 H/ [- L: z$ n  SmartUpdateOption        智能更新选项
( |/ o3 W8 q% T; u* ?$ E                             Within Modeling   在建模4 K- J" o, T' a# P0 {6 ~
                             After Modeling    建模后
& a0 j. d6 W: r3 @; ?. |                             After Parent Body 实体父后2 u0 P0 F, M' p
                             Mixed             混合
8 F1 Q/ Z/ a! z1 z4 `9 A4 ]$ H" G
1 E# `8 a3 K3 w. A1 l  SnapPointTypesEnabled    设置捕捉点类型的可见性
# t+ i) E2 d3 A4 V* I  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用
0 N2 q$ E" \7 a3 Q0 N) P5 B0 }; y1 [
常规: X5 Q2 |2 o- n  D# t* Y5 {& P
  BlockID  控件id; q  P+ m+ w  b- b
  Enable   是否可选/禁用控件
; r/ v$ s4 z0 Q! W  Group    组
" P, m/ _) U# t" l* m2 P- |9 ^  Show     是否可见2 q+ c4 [' D2 D5 c) Y  p& e
# w% Q! R# J7 d& d
其它   Y6 `; Q3 t7 Y$ Q7 z
  附着: Z9 G7 ^0 f5 \' Y
    Bottom  底
; O& `2 k8 p4 Z* x* b  W# N3 h    Left    左6 e) _: C) t* Z
    Right   右
/ ?: D( G; k! n1 `( [    Top     顶8 X8 p6 [* [# ?( G
' j% N$ B2 _( S/ p: o
特定于块  c* R$ L* m: O5 v6 S- r/ I
  AutomaticProgression     选择后焦点是否自动跳到下一个控件& w* ?" f# U4 y- G6 E
  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
( e: k( C6 t1 L! k. b  BalloonTooltipLayout     动态提示布局
( `4 Q: B7 ~6 r& w7 ~  BalloonTooltipText       动态提示文本内容
! S  ^+ v; Y' ]" ~7 G  Bitmap                   指定图片
; [1 L* H4 S+ I8 Y. S1 m3 e  BlendVirtualCurveOverlay 是否显示虚拟交线
6 |4 y& j: x' R" A: b% ?' ?% Z  CreateInterpartLink      是否显示部件间连接图标在选择条上
* L/ h- b4 T7 q! F  Cue                      提示& |' W/ l. E4 s
+ p7 ?7 K- U1 g" g0 {: f$ ~
  InterpartSelection       部件间选择设置7 S/ H: e3 l0 L8 g* P0 p' J
                             Simple                                           简单3 g. {$ O/ F. O# Q. D: \
                             Non-associative Interpart Copy Only              只复制部件间非关联
6 `# O  l6 B! ~6 f& e                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联$ `- ^) V% v! \! @& }/ P5 T
                             Associative Interpart Copy                       复制部件间关联
7 Z  `0 ~. u4 {6 q; d1 d4 r2 U' ]1 ]2 ~* K+ ]1 x5 |' X2 z( o5 B
  LabelString              标签标题0 Y% h) j- k$ }) N0 J, |, t, z
  MaximumScops             设置选择范围
0 J; a* W1 u4 R* w0 L, }& [) z                             Entire Assembly                 所有组件/装配
2 w% U! l& ]; d  \8 b3 Z+ Q/ f. G                             Within Work Part Only           只是工作部件/ Y) z8 N1 f2 c) B" x  d" ]% {$ Z
                             Within Work Part and Components 工作部件和组件/装配)
) }: t3 }! P' A' v5 ?( u
. s$ x6 c% ?' \7 `' I; E  SelectMode                设置单选/多选
2 G* z$ V; i( n+ M                             Single   单选. q. k: h- Q4 B- @! e# F
                             Multiple 多选: s7 s& E4 w. A% ^" j  p

3 i% f. s: T+ d2 r) [  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)
, Q2 [- \9 v) u: Y# P7 j& a  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字), _2 S% f  v/ _8 R) h0 K

2 y, p$ S* K* Q( _& W————————————————————————————————————————————* I1 Z0 @. P3 j3 m% V, W5 V
————————————————————————————————————————————, s4 M1 c2 T4 U1 a  s/ T( h
咧子:获得selection0控件选择的对象
! _) ?, k  [* A3 _' b      UF_initialize(); & O% x& O$ _' y5 N( }+ `3 c) e# D
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");& I/ I2 i# I" Z* f- H
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数7 w. e6 o1 Y; W; w
      {      : b5 C& D+ x% v7 v
         UF_OBJ_set_color(objects[i]->Tag(),1);
, ~5 b! b$ \) N0 R0 m) r      }
! T3 x/ E' i# d7 S: s- ^8 ]      UF_terminate();
( C$ y" O' M% ~; u& i
  q# |% I) V" a————————————————————————————————————————————
* f" b$ g5 q4 O& H咧子:对象加入到selection0选择控件的对象列表* }; u( \$ M  o+ H* M
& w; Q8 {2 U2 H0 [% a1 ^0 i7 P
      tag_t obj=NULL_TAG;
$ Q1 O" S" J  n  c7 Y7 E- _# o) Q* z      double point[3]={0,0,10};
2 ~) ?. s+ v/ v      double XYZ[3]={60,50,80};! o7 n4 ]! r0 r
      char C[132]="";& r3 Y9 R; E& G) L( D. d& w
      char K[132]="";
* k; {) ~5 ?1 d* r: u      char G[132]="";
; T- i8 x) S. g6 l$ |- g      sprintf(C, "%f",XYZ[0]);
5 z5 p0 x! K$ F7 s/ k8 x      sprintf(K, "%f",XYZ[1]); ( \) ?% R9 G; h2 E' W% x! J1 P
      sprintf(G, "%f",XYZ[2]);
" C; Y5 ]6 c! W# }3 k/ F      char * edge_len[3]={C,K,G};
" n9 |* D6 s. }5 Z      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方
) G1 p. `( C: }  J% F      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体& X5 _& x; Y$ O4 A
: j7 l) q. }& i% ^) j# s
      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen
) g1 S: c! D4 w: l5 \$ o1 k      std::vector<TaggedObject*>objects;
/ c: a/ Z: O, V' B      objects.push_back(body1); //对象加入到selection0选择控件的对象列表/ t  y+ B; f5 a' z6 U
      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);/ p9 ~: ]1 d& B
————————————————————————————————————————————
3 i4 ~5 v# d, G; j9 h0 s; D' {3 U5 K
//清除对象
4 k7 [% m% Z" @6 \std::vector<TaggedObject*>objects;
( F- \2 R. V  j$ N& a3 o7 dobjects.empty();
& {- W! A' M0 Y& o# _) dselection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);
/ g: P: g6 b. s9 w' d+ M6 c6 k7 s
2 o  _. G" y! S' o————————————————————————————————————————————: s) v! C8 j. S
咧子:只选择面
' Z) }1 ]9 C0 {( q* M1 q        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤( _  n* M. k# ~
! X- `2 k7 i4 m$ T# |
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式, N' @' r: R9 A0 b3 W' E  d

# D# Q) k' n9 b+ l        //对象选择过滤 只能选表面
" ^1 A' ]% @; ~/ H* m& c9 m0 a        selection0->GetProperties()->SetString("LabelString","选择表面");
1 ^, ~1 h+ ]. ]2 H% H! r& l        std::vector< NXOpen::Selection::MaskTriple > maskTriple;/ C, C& B' ~2 d4 [4 w9 o8 q% D
        Selection::MaskTriple mask1(UF_face_type,0,0);1 l! R5 `- o' {& ~+ @8 \
        maskTriple.push_back(mask1);
$ F1 h# Z2 s8 ?# ~- C/ E        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);: {- D) l9 g+ N

+ N/ A3 x3 N$ r# [' Q  t5 M0 f: g
( a2 H9 b+ S" x7 ?7 I" s咧子:只选择面 【UG本身过滤器跟着变】
" ~2 t; d! i8 G; [        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤    + A3 r" {# R8 ]2 }" a" K

$ m7 L& g& W. v, l. X* x        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式+ w7 \5 G* T, C- k. d7 R

- Y  E1 d0 [5 e$ y7 l" l2 m* r0 e/ B        std::vector< NXOpen::Selection::MaskTriple > maskTriple;" {1 d( ?5 }% m) w9 |
        Selection::MaskTriple mask1(UF_face_type,0,0);% V' ^' h! b* z) w$ Z+ e
        maskTriple.push_back(mask1);- E/ d& E8 B& a. E, Z* Y
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();# ]0 F* A9 _) G( `- W
        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);2 L- [4 {! U! V- L) d
        delete selComponentProps;, S/ k6 d; J; s  |% e
        selComponentProps = NULL;
+ Q8 @8 ]: j3 A  h. N) [! E, ]( Z. O. v+ @& S2 F
上海点团信息科技有限公司,承接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 N' i  j2 F1 l& c( f6 D* w7 s
& L% ]  @  K  m6 G# J
————————————————————————————————————————————
: M2 h3 N0 F* B9 i3 d  A————————————————————————————————————————————# _  v5 K3 X& D% X. v( Z# n
咧子:只选择 实体边缘 直线和圆弧
0 e. J6 a. C' T  e7 I* h2 q
* X" j  o* V# ~  initialize_cb() 初始化里加代码 可进行对象选择过滤' r" B. y3 u9 ?  Q, \3 A: |

' ]5 w+ r* d& ]( A+ Q) d        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
7 A' U/ [9 D( u8 s! |" X                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧5 E. V9 V' v" W" w' E
                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
! D1 }" _! P5 M! j                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
! I5 Q# T- s, {( y( D7 V                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);! c! q% V- \8 [  t
                        maskTriple.push_back(mask1);
# y) x+ B7 l$ `$ K, \                        maskTriple.push_back(mask2);6 N* O: u4 f) |  |9 X+ k
                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);# z' R6 d* L: s. G6 \
7 j5 n- t/ j; `4 n1 z. Z2 a" X
//过滤无效的边缘
; t/ g9 r4 [% n) E3 M9 M; @0 v3 D& C. Jint ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
6 ]7 l6 P% U7 ?, ~# D7 q. A( ?{       
/ b2 D& `2 n7 Q; f3 q5 M. ^# F/ m    tag_t obj=NULL_TAG;  [  `) i1 g  d; Y
    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);
3 v& n3 E+ ]- a9 W5 a: }3 O4 }    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表
5 }2 u$ f# G" ]+ h; M2 g: Z( C    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
2 T4 w( c# \# }. v. i3 |# @' K+ L1 `' _}' u9 U0 _3 t- i9 w- y+ n4 L1 y- z# Q
————————————————————————————————————————————' T! q6 T& L) `- {9 [$ l
————————————————————————————————————————————
3 i; Z8 O, f# o3 D9 H* p# H3 v  H% s咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体$ m; E! K: T2 m8 a% [! P
$ o" Z% [  g% l, H( v8 K$ K
   int enumValue = this->enum01->GetProperties()->GetEnum("Value");. ~( j8 r" i- d0 r
                    if (enumValue==0) : G% Z" l7 ~/ Z/ c8 k/ G! W3 m
                    {
- [6 T, G/ I& a0 m                            selection0->GetProperties()->SetString("LabelString","选择边缘");
  f+ j" Y7 t; R3 F9 Z7 f' p                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
4 _/ Z0 A2 L8 U' H( _* {                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
0 ]4 [7 ]' |# \                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
& a: N: ~) i! F7 _. P1 F                            maskTriple.push_back(mask1);
; A, q$ u: U$ Y8 X% O2 ]                            maskTriple.push_back(mask2);5 s8 H8 Q# l8 t5 D3 d# w
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
$ \* r* t" i  ^3 R3 G$ R                    }1 u5 D  |. T% F& K* v
                    if (enumValue==1) : Q8 O/ E5 C& L* {
                    {
* j. F, {5 `$ f' w                            selection0->GetProperties()->SetString("LabelString","选择表面");% S( g0 i3 q5 u( |; @' ?# V6 R
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;0 s" i- A0 s4 x
                            Selection::MaskTriple mask1(UF_face_type,0,0);
5 Q2 V" @( P: m' Q5 Z9 W5 [; H                            maskTriple.push_back(mask1);
' R7 ^/ v5 ?) Q8 M& B* [                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);. T* g# i0 t& ^: ~9 l8 P( p
                    }0 \+ _9 x+ r, P" O( f( a4 B2 ]& g5 d/ ^
                    if (enumValue==2) - y9 M/ y; z; y' q* O
                    {
* x( K+ Y' z5 q! |8 b                            selection0->GetProperties()->SetString("LabelString","选择实体");
( H# w& ^6 n* @' n; L/ @                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;+ X3 Y0 ~# \! a/ m( E7 Z  n  |
                            Selection::MaskTriple mask1(UF_solid_type,0,0);$ a) F6 `, t; O. b) C0 {
                            maskTriple.push_back(mask1);
) V. ~; z8 @* U+ J                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
" Y0 V, u% F( A, p9 y                    }
1 x- y' j& T7 q9 m0 |8 k
7 Z% B8 m2 G) _, r* o) T9 V5 b+ W- ]3 m' H) Y
//------------------------------------------------------------------------------
- O" X' S  h  K1 n: V$ m2 C//Callback Name: filter_cb 过滤不符合对象) ~$ S+ z/ e; F" ^* i
//------------------------------------------------------------------------------6 @. V' e2 |' e) E4 v4 s
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)7 d, W% h: M* ?# Y8 n& ]* S. `
{0 `2 k- V3 t* D0 A0 h8 [0 N
        ( ~; B) F6 A" @; G( u
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");
6 `2 v8 a( f- J, X" I        if (enumValue ==0)
) N" l& o" a( l5 H' s1 R        {
: l  b/ R1 a6 E. u1 J                 tag_t obj=NULL_TAG;$ o7 f, g# @* t4 i8 J
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);! \7 b8 e/ q: e9 E$ ^3 k
                 if (err!=0 && obj==NULL_TAG)
! p7 J2 F1 z% G* w+ _+ {- B             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
4 j3 F% B8 k& f% w        }
, N4 |6 K* p- |        else if (enumValue ==1): I1 X* f! e0 H: G' R& p6 U" {
        {7 X3 t6 B( W, q
                 int type=-1;
" ]9 h/ z* ~; h4 v                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
& [4 C' C/ e, V0 A+ B& g                 if (err!=0 || type==-1)
. }  Y  h8 R, f             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
0 E. U7 i& ]4 P6 K$ h        }
" X0 q* l: |3 j5 C0 T# y        else if (enumValue ==2)
% l/ v6 l2 c( P* T' c; j        {
) h+ U4 x2 L3 T" W9 r  z; i  P                 int type=-1;
& K/ x3 Z- A( j6 y2 n                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);' ~" W3 y  W* c, w" M  u! t
                 if (err!=0 || type==-1)
2 R  z5 C2 A3 E% M( ~) c             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
, i& Y. i+ f$ v' Y        }
- Z1 V7 d2 l" _/ [* x+ R8 L
  ?' H! C* y% O9 z+ L* I        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表. Z3 A! X5 {  ^6 M; {- N9 Q+ W
}
% j7 B' Z; S) Y% A) F1 [6 i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了