PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

2016-12-12 12:24:54 5948 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、选择对象
. N& g) @0 E9 t: g$ V  ~6 X0 x7 Y. L/ {
捕捉
; C1 w; h+ Z* v9 `  PointOverlay             是否显示捕捉点" T1 s8 @- Y0 {: U% g
  SmartUpdateOption        智能更新选项
! t$ A' I$ G2 j9 e( H7 z                             Within Modeling   在建模
. r9 x  U1 Y1 Q' S2 z3 @7 M" k7 J                             After Modeling    建模后$ v) r" Q. ^8 b0 C) x3 {
                             After Parent Body 实体父后! o3 y; x: S7 l4 W2 d
                             Mixed             混合
7 E. f7 l3 s, t) _  E$ ?3 m
: {/ M7 P0 g' ^9 d# b( Z) ?5 O2 A4 A  SnapPointTypesEnabled    设置捕捉点类型的可见性  q6 [% `; l" V# C
  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用
* m* N7 x# _7 O; E; T2 H3 Z
) f: f; a2 b( U0 u& ?( n. ~常规
: |7 w* j# ^! n( V0 `# I  BlockID  控件id
+ ^! e9 J! I+ O/ {  Enable   是否可选/禁用控件
# U# F4 x! ?/ j( f  Group    组3 H5 ]4 P; t) y  S- I0 d# k$ Z
  Show     是否可见6 G3 ]" i4 }; R( o: {
, S, C2 A7 X$ j4 ~8 C
其它
. B% P; L/ o5 e  附着
3 o1 q. J! e7 M. m- {& Y    Bottom  底
9 R- A6 d% n8 m% s8 P7 T& G    Left    左
4 {9 J6 C, f1 o# ^5 b    Right   右1 a3 D! f8 h  q3 O: e2 ~8 z
    Top     顶
& u$ m5 x4 l  |5 r# t8 m6 E
3 u' V. S, G2 y5 B, V4 y( b特定于块
; o0 a6 U5 ^0 J" E# |3 s6 B; S  AutomaticProgression     选择后焦点是否自动跳到下一个控件& `+ J+ w' w1 B4 x+ u& B
  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)
) ~' Q  r: k6 P9 d5 F9 y  BalloonTooltipLayout     动态提示布局
8 T$ i1 h0 ~  X, `  BalloonTooltipText       动态提示文本内容4 [& b. Z% D# {/ i
  Bitmap                   指定图片) G& q& X7 \( y$ s; g2 N2 L
  BlendVirtualCurveOverlay 是否显示虚拟交线+ @- A4 I2 Y; j
  CreateInterpartLink      是否显示部件间连接图标在选择条上$ f! M7 [* f/ X1 j
  Cue                      提示  f3 U- A7 Z( y0 p) s$ `

: g6 T9 [7 f( H0 a( I3 O  O  InterpartSelection       部件间选择设置2 c, T& q# S* R' {( M
                             Simple                                           简单1 _" ?$ g5 ]. F9 r% h; Q. I( L. Y% g
                             Non-associative Interpart Copy Only              只复制部件间非关联3 G( P4 o* P: }  U, C4 \9 i
                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联4 ]- M3 |6 ~, a. V- o6 Z. V
                             Associative Interpart Copy                       复制部件间关联3 ?' _! f" Q8 ~/ T

# y' B8 [) O7 ~2 ~  LabelString              标签标题. g0 J, L' G6 p' B" X% L
  MaximumScops             设置选择范围8 Q* r, [$ s" m, T, c% I9 V  W
                             Entire Assembly                 所有组件/装配8 c/ N  X3 `- s8 }, i6 Z# @
                             Within Work Part Only           只是工作部件7 |$ s! t) z' f& B3 P- G
                             Within Work Part and Components 工作部件和组件/装配)4 d/ ~# T$ V) _

) u# Z. S7 O; n- X3 V  SelectMode                设置单选/多选
1 F, A; r6 \/ k# t6 F& d- [                             Single   单选% ]( [( ?, e3 c) p- ]
                             Multiple 多选& \; i. G( e8 h& }

! d. L; e0 h2 b: i# Z! g2 w9 K  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)
; s2 r/ l9 t  b& a/ I( z  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)
1 `" C( v5 N9 A- E4 x2 {$ G
4 ^+ G" O! z3 j) ~+ A# j; @" c- g5 R————————————————————————————————————————————
$ H. M" s% _5 F1 z; q  D3 l————————————————————————————————————————————
* B% w) O# {2 s# t% B咧子:获得selection0控件选择的对象
' j. O/ G/ O9 T: w      UF_initialize(); ; {9 ?6 V" U! O" H: r
      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");$ f9 u- D1 Q: M. c7 I* g6 f
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数: F4 q) y1 r$ H. L) R
      {      : {( N6 O" V. Z/ z) w% h
         UF_OBJ_set_color(objects[i]->Tag(),1);
3 s9 u1 X* g& \1 M      }* e( K8 W2 ~' m5 E
      UF_terminate();# D$ i4 ], n& G2 e7 s

$ D4 _4 J: I! ~# f————————————————————————————————————————————
# K. \$ }5 c7 p  ^$ ?咧子:对象加入到selection0选择控件的对象列表
! N6 {: a0 ^$ P3 U/ e
6 O8 H' P) P$ Y; _' W2 b1 Q      tag_t obj=NULL_TAG;  \6 S9 o6 M6 _; P/ b% j# @
      double point[3]={0,0,10};( T3 h" g+ d5 b9 U' x
      double XYZ[3]={60,50,80};
3 ]! r9 u7 V; p' B      char C[132]="";
: v; o) F$ P9 y' \9 q      char K[132]="";
0 G6 E2 U& E" z4 f; i1 r3 @      char G[132]="";
  ]) |3 M  B* @# z, I      sprintf(C, "%f",XYZ[0]);
* C3 _2 J- X7 E8 B( r      sprintf(K, "%f",XYZ[1]);
! M7 ]4 G- v$ Q, j' P# q' d6 @4 E2 U+ @      sprintf(G, "%f",XYZ[2]);
9 _6 K2 c7 k" {" y) D# O: {3 ?      char * edge_len[3]={C,K,G};* h# p. K% n: N7 ]9 [
      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方
  S- \1 I5 |) I) t7 o      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体+ h5 p1 m7 z, t8 r

, l. R! n: a7 m1 j+ c      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen
- C( U7 t+ a+ }/ `: o5 v      std::vector<TaggedObject*>objects;: Y: k9 D7 g- _7 w' T
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表* T  x; C  z3 e# S8 Y( A2 a8 M
      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);1 K% z% g( `& ]
————————————————————————————————————————————7 h0 G; Q6 f9 k6 v4 G1 x; n

; J& \- D6 J$ U, w2 {//清除对象
8 Q0 i: [8 Y/ \8 ^: `8 h5 @std::vector<TaggedObject*>objects;" ?9 k+ Q4 @5 w; k% A
objects.empty();
1 X" D$ z% H4 ]5 q/ l. o' v8 u; Tselection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);* j! g! f: I* b! P5 ^) p% k4 X7 H
" B' ^: Z" o- y
————————————————————————————————————————————; A; r) P# n1 f) _' |* q- o
咧子:只选择面8 B8 D) p4 }) n. ~6 N
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤# a; Q5 {- X# _; j7 B) b& m: @) b& K
! w% o( s3 i4 U' E
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
3 L9 j( J" y1 i+ L0 b. J( |7 @2 k# Q. J" a% f
        //对象选择过滤 只能选表面
$ c4 D" a  S8 a' U        selection0->GetProperties()->SetString("LabelString","选择表面");
* ?+ Z# Y0 C0 H; V; N        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
" i4 _8 V  L+ d# \* s! a* W, G7 j  G5 H        Selection::MaskTriple mask1(UF_face_type,0,0);, O4 P) k9 ~' Q* L2 n8 `
        maskTriple.push_back(mask1);
0 V1 N8 D6 }& V- t7 o        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);# t. @4 {0 h7 f8 k/ ]$ c3 O) G. T+ A
* ?, W7 W2 c# p7 q. m
0 {' [* T& a3 @1 U
咧子:只选择面 【UG本身过滤器跟着变】) X5 i0 B, S5 f9 R. A" F
        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤    1 B" v8 h+ U. a& J

1 I3 n' a9 `: O: B! g. ]        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
1 Z: q5 N; n( E4 S# T
8 r9 w" \) ]$ L  j7 N; s( l        std::vector< NXOpen::Selection::MaskTriple > maskTriple;+ O, z& @; T7 ?% ?; G: ^5 q) j
        Selection::MaskTriple mask1(UF_face_type,0,0);2 C, T4 R8 z; X' D* N
        maskTriple.push_back(mask1);
  M; l/ c5 `1 y  M        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();
8 w2 N+ z0 u- D        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);" p4 h: t* h+ g1 p# N3 o
        delete selComponentProps;
( U% t; ?& h8 H6 t        selComponentProps = NULL;% f* Z9 u/ |3 p$ h+ }! n
; Y5 Y$ ^- o' L% P* v0 ~
上海点团信息科技有限公司,承接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

列子
; j9 F; d8 Y% x! I2 E, X
5 }3 c; @8 s: j. \  M9 P, X( y. l/ E————————————————————————————————————————————
  u* _4 L& \& K————————————————————————————————————————————
1 n0 ]+ }  s. a" Y4 n咧子:只选择 实体边缘 直线和圆弧) o% p+ F" @" I8 @
3 A3 i$ U# [* H6 ^, H& Y
  initialize_cb() 初始化里加代码 可进行对象选择过滤
  G( J& i# ?* C  i  h
+ I) G$ S4 e; z3 ]! z        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式. k4 G  S3 o8 v! c9 [) K- R: K; G0 b
                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧$ C2 k: K: ^6 H4 V8 ^
                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
& a" q$ l+ `' T                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
4 J( l8 i2 `1 |# |                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);! x! i' H; \' l0 y
                        maskTriple.push_back(mask1);+ L2 _4 X. K' @/ B8 E
                        maskTriple.push_back(mask2);
. l6 l1 n! q( _  [                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
7 I2 }  [7 K. ?$ J# R1 P. e6 V' M( d' k3 y6 m
//过滤无效的边缘4 c, A3 ^6 h3 B2 y# M, N
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
( w' t( Z# Y) R% v5 f# r{       
0 `+ M. g* ~# I2 B1 u6 f    tag_t obj=NULL_TAG;$ [3 \- m9 R( c4 ?
    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);  ?  |+ _4 o' D$ E9 J$ ?
    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表5 K# x8 g2 g2 U3 `% r4 u" S
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表
4 |% t7 f: P7 E& E1 L+ O. z9 I4 R}9 O4 x& s- V8 ^( k( b
————————————————————————————————————————————
6 x6 P* ?6 S' E————————————————————————————————————————————
; w& L& J# ~, c& i. g, \5 B+ C- K8 A咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体
4 z, M, x+ p( C- n8 H0 B9 t$ E, N# d' _( G) c0 c
   int enumValue = this->enum01->GetProperties()->GetEnum("Value");0 g4 G" x2 l& s* i( m( M
                    if (enumValue==0) " ^3 @3 w7 s# {$ r7 F, X' h2 a
                    {3 q& Y& i& R! s7 B, \; q
                            selection0->GetProperties()->SetString("LabelString","选择边缘");
. E) p2 \3 F7 A                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
, H* h; j/ v  b                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);
( e. x, v$ L: }2 ^* }  S                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
$ I9 v; {/ r  V% F  n3 e                            maskTriple.push_back(mask1);
. R* A1 U/ v/ r; w) }                            maskTriple.push_back(mask2);+ O7 L# L3 E; ]# O3 ]) r/ \% {
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
; f  y0 G8 S* a$ C# v0 A5 ^. f3 F                    }
( K) K2 }# m  p6 J                    if (enumValue==1)
  g8 @$ e8 R6 i$ j                    {8 E& p8 t* K& x+ o
                            selection0->GetProperties()->SetString("LabelString","选择表面");8 S  a6 ~6 c2 x! W
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
; H. ^9 [1 Y  q/ C  p" n7 l                            Selection::MaskTriple mask1(UF_face_type,0,0);: p3 c! o+ b# L% B) L. q" `
                            maskTriple.push_back(mask1);+ c, @; L$ J  P6 ~
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
) n% n) @  c% Y' F                    }0 ^4 x6 h# v; J) t( K* x
                    if (enumValue==2) " D! a4 d) v9 z; a  {; K$ a0 L
                    {
5 r  z% n- [" a. G                            selection0->GetProperties()->SetString("LabelString","选择实体");' j! P: W2 U9 n5 |9 O$ Z
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;/ x; e5 S0 X- Z/ N
                            Selection::MaskTriple mask1(UF_solid_type,0,0);1 g$ D2 _9 T' _
                            maskTriple.push_back(mask1);
5 D- Q( z! I* G9 h1 R- g$ ]( r% P                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);$ m( \/ K3 V0 O3 ]
                    }
- _0 {; a% o" L2 _1 I  W7 t- j- G: s
& o6 p: {- [. T; n& }
//------------------------------------------------------------------------------
$ z  }0 x- T% n/ z7 R//Callback Name: filter_cb 过滤不符合对象
! x; y7 U, P) V! {//------------------------------------------------------------------------------- Z% [; F' i, L7 d
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
0 h% n; v: X* @9 F- c* H, W+ X7 ^{
  U. c" ^# w% w- B) P        
4 E# M$ Z# u' y( o7 o8 H        int enumValue = this->enum01->GetProperties()->GetEnum("Value");
* I# ?) X0 C; N# f# U! y, E$ v$ B        if (enumValue ==0)
* p7 P* A5 z; h; t        {
6 ~  t6 W; N0 D- @- m                 tag_t obj=NULL_TAG;4 ?" M* Q. s, W
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);/ L1 M4 U% l* n
                 if (err!=0 && obj==NULL_TAG)' k& v* Y- n" S- |1 Z. A& R" G
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表. ]9 j, t: L# M2 @! f  f& z* I! o
        }3 l" q1 j* E; \- e
        else if (enumValue ==1)$ z, [/ s4 }% L& z. p
        {
5 G0 P& b& M& W% z                 int type=-1;7 k) R7 R' \1 n8 T' v5 @6 q
                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);7 }, r3 @2 E& K$ C
                 if (err!=0 || type==-1)0 {; J( W' i; d; _. G: I8 I
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表7 C+ ]' I! Q3 h5 P1 D
        }+ G" l% A$ t) [7 C, w1 p
        else if (enumValue ==2)
  h/ T2 V! i& M* T$ q! @- H5 L        {
$ G& d/ c3 W9 V: D                 int type=-1;9 i, e; [) V% _4 w9 ^/ `
                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);1 l! n" c5 G0 M
                 if (err!=0 || type==-1)5 [7 M5 ^* {) l* [
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表
4 N. i) l6 A5 q9 R) c2 ]# O" b& A        }. \8 k$ w! L0 d6 B/ N
' g1 y7 G% R4 t, @9 m9 m6 i
        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表
5 J, E0 N1 ~1 D' w$ |}
+ \, N# d( c9 L- v& z6 k' F7 z# \- ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了