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 5993 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、选择对象0 @' b5 C. {2 V& S: t% L

5 s" @6 E6 v9 f/ g; u8 u捕捉
2 ~) w! l: s/ W0 t/ x1 C! Y5 ^) q7 B  PointOverlay             是否显示捕捉点2 U4 `8 N" B) G
  SmartUpdateOption        智能更新选项: H2 ^& [% @% d( x5 d0 h
                             Within Modeling   在建模" P8 x& d; n8 f% B. G& k( ]
                             After Modeling    建模后" v. s6 A! Q" s7 r( F, o* D% {
                             After Parent Body 实体父后4 w/ Q3 {& j' S3 v
                             Mixed             混合
  L+ f( l/ {$ T0 o4 J2 X+ v
" @6 l) c9 F7 D4 N  SnapPointTypesEnabled    设置捕捉点类型的可见性3 |/ G9 r5 y! Z7 f& P
  SnapPointTypesOnDefault  设置捕捉点类型相关的内容被启用
0 e3 S1 q' |' S$ B6 w5 S
: _  [, p% t3 W; f( F* ~常规& s. j* \" ?& N* Z
  BlockID  控件id' \! Z: a7 {( O$ r+ ^7 {
  Enable   是否可选/禁用控件
; y/ R, p, `0 t2 g# P  Group    组
9 t3 `' N, `8 N8 ~; m- _/ ]  Show     是否可见$ r# o- J" u+ T( N6 ^0 {' M1 \
& m" m$ c; y3 H% K& X# x8 X
其它 ! G3 B8 N: B3 q. O: a6 C8 v6 Q1 t
  附着
5 `- D; C- \3 Q: P0 L" z& |    Bottom  底
4 K. q5 t7 @4 @" K$ k  r1 p7 p+ }8 b0 j    Left    左* U4 H. `5 @3 k7 K2 k4 _3 f/ N
    Right   右/ M( F" G& f* q7 ]
    Top     顶
* u* G5 m% @0 X5 a+ ]. ]2 w. T* K( D4 M& ~) V
特定于块
# m4 k( h( g8 a; z8 r  AutomaticProgression     选择后焦点是否自动跳到下一个控件
' e# J* y8 g8 ]. h  BalloonTooltipImage      动态提示图片(鼠标移动到控件是显示图片)6 A9 H$ N+ {4 R" r5 `
  BalloonTooltipLayout     动态提示布局
, V! s/ P( J+ @( y/ a% T  BalloonTooltipText       动态提示文本内容* B& w' J& n; y, @- N  Z! P
  Bitmap                   指定图片& ?% \' [8 F! u3 m  R
  BlendVirtualCurveOverlay 是否显示虚拟交线' h' X$ e8 ^5 P" d5 m9 E
  CreateInterpartLink      是否显示部件间连接图标在选择条上
) l) J0 z' v8 F8 F1 H8 G/ a3 i6 i  Cue                      提示
* P' \& q# j6 _4 J3 S; S
1 v6 ?: g7 Q" F  InterpartSelection       部件间选择设置
0 ~$ T; \! n' F, H  O                             Simple                                           简单8 k0 t' c& y4 q9 e$ s- R
                             Non-associative Interpart Copy Only              只复制部件间非关联0 O1 E/ q; W0 F  `" E
                             Associative and Non-associative Interpart Copy   复制部件间关联和非关联
+ c, Y/ e2 o& V8 b6 _                             Associative Interpart Copy                       复制部件间关联
$ ]3 G4 G8 b4 }+ y7 w& ?: I0 r1 D, A; r0 B- G' \
  LabelString              标签标题. z0 D3 e; z; S4 I$ ^) B' L
  MaximumScops             设置选择范围
- d  w4 v: W5 V1 O+ f) m                             Entire Assembly                 所有组件/装配
. A  [% {  K6 t& W2 C9 b! h6 q2 l  l8 e                             Within Work Part Only           只是工作部件/ b. l  s4 N6 T8 S
                             Within Work Part and Components 工作部件和组件/装配)( ?8 n7 M( G5 x" y3 _( o0 b5 S9 n

7 I4 O; g' d) q+ R  M2 ?3 w! S0 d  SelectMode                设置单选/多选 + ]. ~) I4 |4 s0 B
                             Single   单选
( c9 X& D* ^" G% @3 D4 N6 h                             Multiple 多选* ?$ F* V  g0 ^) E* D2 A8 V* ~: G
: r: V/ }! r$ S# T
  StepStatus               设置确定和应用按钮什么时候高亮 (Required 必需的时候)(Optional 可选的时候)(Satisfied 满意/满足的时候)$ g; D" l: d) M3 q/ N. m; Q
  Tooltip                  动态提示文本标题(Bitmap指定图片时,鼠标移动到图片时提示文字)$ k9 U' i- W: L+ {9 P+ s. j

. z8 s3 C* I/ S% L' t" N8 K5 ]————————————————————————————————————————————) _3 g6 a; X) W1 n8 ]& g4 U
————————————————————————————————————————————; ~4 Y  F6 B2 d8 }) g
咧子:获得selection0控件选择的对象
* X6 E  F+ Y' c/ o9 O4 w' z6 _      UF_initialize();
+ f7 n+ q; r$ {  h+ s      std::vector<TaggedObject*>objects=this->selection0->GetProperties()->GetTaggedObjectVector("SelectedObjects");* o) b* }3 N: A2 _6 \! R' B: ~
      for ( int i=0;i<objects.size();i++) // size 列表长度,这里指的是 对象个数; q9 F- m( K/ t5 J: w
      {      $ F* a5 F6 R. Z2 y) n( a6 u& m
         UF_OBJ_set_color(objects[i]->Tag(),1);* b8 |- b9 P% [; y- H
      }
  S- [, b$ f/ P      UF_terminate();1 m7 w5 R+ q$ s( w( F% n5 r

9 y! V6 v2 P4 S- V) f7 F————————————————————————————————————————————6 u: M  B( g) _6 w) W
咧子:对象加入到selection0选择控件的对象列表. l) L8 V% o( r( h# o/ R2 g, `

# ?% _3 R7 S$ p# N6 i      tag_t obj=NULL_TAG;% |4 Z% S2 s7 X8 `
      double point[3]={0,0,10};. j) M, f! l4 ]; }
      double XYZ[3]={60,50,80};
# M+ U: r& m2 f9 C7 K3 f# G      char C[132]="";
0 c) ~# m1 a' _# {8 g& I      char K[132]="";2 V6 q' c, g* F, G* W+ T. R+ \
      char G[132]="";- W" @9 g- I, d8 t* F- X
      sprintf(C, "%f",XYZ[0]);
$ U, b. K: I9 O# q) e3 }      sprintf(K, "%f",XYZ[1]); ) j4 e" r) z/ w0 L) q  I6 R2 [
      sprintf(G, "%f",XYZ[2]); 1 ~+ X% S$ f) M( L  f9 X0 F
      char * edge_len[3]={C,K,G};
- \0 z4 V0 C, @5 P1 T/ Y- S0 B) V      UF_MODL_create_block1(UF_NULLSIGN,point,edge_len,&obj); //创建方6 w' `7 Q8 p1 f- l! b+ J4 S
      UF_MODL_ask_feat_body (obj,&obj); //从特征中取出实体
  r+ d& W2 }' |/ O) S$ A4 ?/ V3 _  D' y  r; \- A/ _
      Body *body1(dynamic_cast<Body *>(NXObjectManager::Get(obj))); //tag转换给nxopen4 f1 D& Z$ V) c+ Q; p
      std::vector<TaggedObject*>objects;" W' O$ g  T' E& K5 d/ |5 e
      objects.push_back(body1); //对象加入到selection0选择控件的对象列表
/ A- D7 O" O/ P& l4 D      selection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);5 s( ~2 |0 h" W
————————————————————————————————————————————. }+ P7 L$ S! ^! h) n3 e9 C/ w
1 Q4 L0 H5 F. b, c
//清除对象9 l+ B$ J: k+ h- u" `8 _
std::vector<TaggedObject*>objects;
' ?$ Z: K- F: |9 r/ mobjects.empty();
7 m: U0 ?2 E% n: Vselection0->GetProperties()->SetTaggedObjectVector("SelectedObjects",objects);9 W# a! D5 T  e4 t1 o3 X. C
3 y; b; p9 u5 w2 ?+ N
————————————————————————————————————————————
) `% `! x5 D7 P% s) k7 d3 T9 w咧子:只选择面
! k, W( P# _9 ^0 a0 W4 R, t        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤
* x+ {/ c+ }  E
9 O! k8 p5 x6 u0 n7 A        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式3 |1 y$ R3 C2 K6 i
' @/ d$ [) \) g: J" }1 v7 e! Y
        //对象选择过滤 只能选表面
& D0 o4 }! A) q5 _" ]' `) Y        selection0->GetProperties()->SetString("LabelString","选择表面");
# ~& D9 t$ E/ w$ n        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
+ L9 o9 \6 [. k9 p3 N0 @: g        Selection::MaskTriple mask1(UF_face_type,0,0);; i3 L2 @9 l! C
        maskTriple.push_back(mask1);
5 d  Z/ ~. u- U) Y5 S# C        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
% V1 m8 G2 n. V1 a* J) o/ e7 {* c! S# u
$ C1 n" w$ N* }! V  y. S5 X0 S! g
咧子:只选择面 【UG本身过滤器跟着变】
2 V7 X/ _( f, E        initialize_cb() 初始化里加代码 或 dialogShown_cb()显示对话框里加代码 可进行对象选择过滤   
2 A+ T% x6 `. r. I5 S: ?& m) o6 _+ n0 N- v! ~
        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式" j! y: P. l+ P/ C
  L% G1 n; X$ `3 ~5 i7 D# p/ W8 q8 O
        std::vector< NXOpen::Selection::MaskTriple > maskTriple;
+ H2 \5 u1 g% g3 c3 T/ E+ [        Selection::MaskTriple mask1(UF_face_type,0,0);
3 ?/ o1 c% n- h3 c$ y        maskTriple.push_back(mask1);0 a; @$ ?" w" s% j; ]9 [
        NXOpen::BlockStyler:ropertyList *selComponentProps = selection0->GetProperties();
; Z6 k( u+ M9 C( H. l# \3 W        selComponentProps->SetSelectionFilter("SelectionFilter",Selection::SelectionActionClearAndEnableSpecific,maskTriple);
+ }2 m; p* X& }( I        delete selComponentProps;
$ H+ Y7 X+ s# `4 B, k        selComponentProps = NULL;
+ F! {  j, s/ h5 W0 j; p7 \; I2 n
上海点团信息科技有限公司,承接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

列子# @: c& ~4 m; i  u  {2 x0 V+ ^% f
4 _, y# \8 ?- \
————————————————————————————————————————————# c3 {! y/ G) p- d1 y; s
————————————————————————————————————————————+ S" w+ i7 x7 m6 ]* P% S' H
咧子:只选择 实体边缘 直线和圆弧
& N5 W5 L, ^% Y) z  j
3 R$ D) @! z. U' [5 }6 x9 H  initialize_cb() 初始化里加代码 可进行对象选择过滤( E5 i1 ]; E2 e: u' j$ X

1 G9 g; j7 ~4 C* |( T! O. j4 r- L        selection0->GetProperties()->SetEnum("SelectMode",1);//多选模式
! C9 S# n% y+ R4 i                        selection0->GetProperties()->SetString("LabelString","选择边缘");//只选择 实体边缘 直线和圆弧
" x# l7 Q6 U" C/ t& I. R3 D                        std::vector< NXOpen::Selection::MaskTriple > maskTriple;! x1 c: }. k- Q* r5 ]+ \+ r
                        Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);( n, k: e. t, o; H) g3 \
                        Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
( \6 E* [8 v) d, P9 o, q                        maskTriple.push_back(mask1);+ b; f# x* v" b; J- `
                        maskTriple.push_back(mask2);9 a0 w4 A4 [7 e; J  z; {6 P
                        selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
/ X1 S+ n/ [  S. j+ p  ~0 m3 I9 ~! G( ?/ K
//过滤无效的边缘
& K8 I- I$ \0 {int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)
. ~  b) s6 ]3 b) q7 P8 J/ l{        * V" Y' K0 @; P8 e- p+ _% W' \. z
    tag_t obj=NULL_TAG;
/ A. g% F% E0 F, k' v    UF_MODL_ask_edge_body(selectObject->Tag(),&obj);8 Q7 G4 g! u( |1 _9 m6 Y/ i) N
    if (obj==NULL_TAG) return(UF_UI_SEL_REJECT); //不加入到对象预览列表  Z# U' ]# @9 K% g. b$ X6 `
    return(UF_UI_SEL_ACCEPT);                    //加入到对象预览列表! J* L: F6 [  V# v. q# o
}3 V* R8 m  V: \
————————————————————————————————————————————
. r7 \$ C* [5 [0 x7 _% v————————————————————————————————————————————
) t' L& D& m- ?+ A咧子:通过枚举控件选项来 时实  分别过滤 边缘、表面、实体
/ V- \' c3 O6 @" P
+ U: q% C: G9 m8 [8 F: |   int enumValue = this->enum01->GetProperties()->GetEnum("Value");
& K* f) C4 O% @) o+ ~                    if (enumValue==0)
+ j& s0 O2 K3 L6 s( I( r8 h" v9 I  P                    {  ?5 C) O" x/ L" x, _* X) j
                            selection0->GetProperties()->SetString("LabelString","选择边缘");
& T1 Q/ _, ]: j8 H) _; D2 D4 F                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;! T( ]: [" D9 h. i- ?- m" J
                            Selection::MaskTriple mask1(UF_solid_type,UF_solid_edge_subtype,2);4 Y/ G$ V& W1 e% i
                            Selection::MaskTriple mask2(UF_solid_type,UF_solid_edge_subtype,3);
* t) y8 W- i7 S/ }' r  C' I% f                            maskTriple.push_back(mask1);
% D+ d% Y( M+ a! ~" F                            maskTriple.push_back(mask2);
. W7 ?0 p+ j; P5 g! s                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);
- {& ]3 _4 G" X9 a                    }1 }3 _2 N3 [4 I0 x4 L
                    if (enumValue==1)
8 @* k  i% Y1 j5 {                    {
" @* R- B- L" s# [% k# `0 @3 ~                            selection0->GetProperties()->SetString("LabelString","选择表面");
# O6 T, {( V6 u2 t                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;
! U: u6 r8 g. S8 g( K' q                            Selection::MaskTriple mask1(UF_face_type,0,0);+ k: ^# A0 Q9 _
                            maskTriple.push_back(mask1);
; g6 W, L/ w* D2 R$ ?                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);( b1 n: C+ ~8 T3 I- `1 e
                    }" ?: H1 @( K2 D3 ?- I
                    if (enumValue==2)
5 N) R& Z/ N: p                    {
6 `  ^$ A) g8 X4 C  \                            selection0->GetProperties()->SetString("LabelString","选择实体");+ W6 [4 w. I! V9 o# B/ f: O+ R
                            std::vector< NXOpen::Selection::MaskTriple > maskTriple;. j; x7 x6 d0 j* a
                            Selection::MaskTriple mask1(UF_solid_type,0,0);
, e7 A7 F  |/ u/ b3 Q7 _                            maskTriple.push_back(mask1);- Y9 D1 u7 }# Z& [0 W
                            selection0->GetProperties()->SetSelectionFilter("SelectionFilter", Selection::SelectionAction::SelectionActionEnableSpecific ,maskTriple);7 @$ P) A0 w/ {8 ^
                    }& Q. x8 p% y* T4 {# ?
. u7 |* p! `0 W4 G

3 ?5 A" F; N7 @8 f//------------------------------------------------------------------------------
0 b/ a; h$ E! J% x9 T//Callback Name: filter_cb 过滤不符合对象7 _! }, x8 E* ^5 s8 {
//------------------------------------------------------------------------------2 {6 _+ H  c" [2 `
int ML_NX001::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject)( {. K7 C- e, U& q7 H3 D
{
# q% c9 ]  A$ U( X( \        ! u# f! z6 H) Q% B  y; n& {8 v
        int enumValue = this->enum01->GetProperties()->GetEnum("Value");! {% F! F, X8 S1 X6 N' S1 V+ u8 j: F2 x
        if (enumValue ==0)
2 `9 A- Q+ K, J$ Q; P        {5 Z0 N- A/ F  F
                 tag_t obj=NULL_TAG;. r8 O3 j" z8 u2 A# W
                 int err=UF_MODL_ask_edge_body(selectObject->Tag(),&obj);) d# `" V, p7 w" h% u
                 if (err!=0 && obj==NULL_TAG)8 n9 P1 ^6 b9 `% Q! D3 s3 V
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表9 c& l% F% _6 |6 D
        }
/ l* \7 d1 r$ X' V7 Y/ _% p7 ^  ]        else if (enumValue ==1)9 t& |6 d' S3 A, q* f1 O
        {
3 R) ]  J, q. L! {, F, V                 int type=-1;
+ ]( j! k  I- ?9 c1 m                 int err=UF_MODL_ask_face_type(selectObject->Tag(),&type);
' P$ V# a6 S- s                 if (err!=0 || type==-1)
) {0 _% h' `* W7 I% O/ R             return(UF_UI_SEL_REJECT); //不加入到对象预览列表& Q: W: W: v( ^3 c
        }  [- @* C$ ~5 y
        else if (enumValue ==2)$ a2 y6 k/ i7 q9 R1 Z0 P
        {6 v1 @* F$ X4 h
                 int type=-1;
0 Y! q1 l2 G( \6 z/ m: h/ S                 int err=UF_MODL_ask_body_type(selectObject->Tag(),&type);2 D: p  g/ n1 K/ J6 v6 l
                 if (err!=0 || type==-1)3 S7 o) q5 v8 n) H2 ~7 {
             return(UF_UI_SEL_REJECT); //不加入到对象预览列表; ]. c, [( _  S- k* e
        }8 B2 H# u/ a" {4 L6 o
8 v8 h- }7 \9 @! W/ E
        return(UF_UI_SEL_ACCEPT); //加入到对象预览列表$ i% a6 [6 z) @6 A" m! D
}
+ ^9 M/ ]# j% X7 D
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了