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-国产软件践行者

[二次开发源码] NX二次开发源码分享:报告选择尺寸的相关信息

[复制链接]

2015-8-22 12:47:05 3233 0

admin 发表于 2015-8-22 12:47:05 |阅读模式

admin 楼主

2015-8-22 12:47:05

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
, ?1 w0 c0 p. D2 _4 W8 N" L4 z* `
Dimension* plmhome::select_a_dimension()
$ e. e3 Z2 _- p* y6 G, ]/ `& e{
$ }+ `3 U* F/ H/ ?    // ask user to select a label
  B- }: x( \& L! y1 v& o& ^    UI *ui = UI::GetUI();+ x8 L, I: X2 L/ L% _
    Selection *sm = ui->SelectionManager();$ p0 \2 J$ [' ?8 m! ?1 N
    NXMessageBox *mb = ui->NXMessageBox(); // as of NX5  [; J( o- n7 @1 ~; V
4 M6 C7 `# q9 t: k: U- \3 p. e
    NXString message("Select Dimension:");5 C: e3 T, C9 c, T
    NXString title("Select Dimension");
! m' M6 M/ K6 \% W. U& J5 R    Selection::SelectionScope scope = Selection::SelectionScopeUseDefault;
5 q$ U0 K6 i4 [4 y# Z' Y    Selection::SelectionAction action = Selection::SelectionActionClearAndEnableSpecific;
. l+ g' t& c# }5 s    bool include_features = 0;' d; y5 k, {- ?  t6 Y. z
    bool keep_highlighted = 0;$ c% z5 E# j3 @! W. g8 R7 t

$ N% q% \! u4 D9 N. W; e    // Define the mask triple(s)4 @  G7 R- E4 H$ H
    std::vector<Selection::MaskTriple> mask(1);% c9 W2 F; x9 m: p; y7 r$ k
    mask[0] = Selection::MaskTriple( UF_dimension_type, 0, 0 );
7 J3 D  |4 V. D* ~( I, {9 {    Point3d cursor;
7 C1 q& s! I' y; E# M; m    TaggedObject *object;% X$ [8 N& D( ]! N9 f3 ]
3 r/ i- T, p$ z9 r+ r$ `
    // Select objects using filter defined by mask triples. T8 n; j! u- ^* g
    Selection::Response res = sm->SelectTaggedObject(9 J% T' ~+ b+ B0 R2 f+ P- [3 b
        message, title, scope, action, include_features,
* h3 P% I$ C( [. ?3 B, P            keep_highlighted, mask, &object, &cursor );
# P7 r+ M  x* ~. h( E/ ~0 P5 h* o* A
# b" {. h% H( @! O" o3 y9 c; Z    if( res == Selection::ResponseObjectSelected )
+ ?, M6 y0 u3 w( h  A$ H5 J8 ^% H5 k    {
  o( `- |) q# m0 s  L        Annotations::Dimension *theDim;" O, Q5 i! y& d
; W+ `  N# s8 b" N$ n
        // this doesn't work and 'note' will be a zero pointer, see PR-1850850
8 [; B" n. T. l0 O! ~        //note = dynamic_cast<Annotations::PmiNote *>(object);
4 G9 L6 A( ]3 L* p# Y% z/ e# O+ t( I. b
        // this works as a workaround
3 V- X3 t7 }* C6 D; s2 `        theDim = (Annotations::Dimension *)(object);' p0 s6 R: |3 o' h7 d  b) D& w
        return theDim;8 B6 I( U5 C, {9 B, r
    }  C7 P# @( m3 V' H

0 c0 L% ~$ z$ r  b6 F4 d- u    return 0;
( F" p! D1 d& b! \& K2 A4 G& t}1 s( y/ H  |$ }& \" G! ?0 b6 T* m- s

' P2 R& ^  b1 Q# G  d
* }# f6 \! z( K  T$ H% L
6 T6 [- h2 ]0 a+ x
( U# X, w; j' ^' avoid plmhome::do_it()1 s1 l9 w; a7 X% ^# L! _
{
6 A4 T- {. e: h) G    workPart = theSession->Parts()->Work();. g! c6 [6 J3 L8 f
    Part *displayPart = theSession->Parts()->Display();6 v. l7 y( j( X8 _) g1 {0 h# ?9 J
    stringstream out;
7 P, [  p0 r1 ^% \; q: q$ ]    Dimension *theDim = 0;
3 }$ J( w2 X8 b0 g) N" P' [, h2 h9 Y4 `/ ?
    NXString tolTypeStrings[] =
% y& H6 S/ i4 P/ Q) @) S! _    {& j7 Q: i5 U" ]9 ^2 p4 V
        "ToleranceTypeNone",' m7 y- I' t1 ], `# c3 m
        "ToleranceTypeLimitOneLine",$ F) i6 S! I) i2 O$ t* T
        "ToleranceTypeLimitTwoLines",- J8 u6 k0 _2 |9 `
        "ToleranceTypeBilateralOneLine",
+ c9 U! i  g/ @        "ToleranceTypeBilateralTwoLines",
, C  ]% N  n% X; V5 f; s, H7 `        "ToleranceTypeUnilateralAbove",
+ {0 J1 O6 ^; _/ E) {5 }4 R6 k        "ToleranceTypeUnilateralBelow",
0 p+ `0 S" g, W, i% j        "ToleranceTypeBasic",
3 y5 [6 H2 y1 j7 M3 x+ i        "ToleranceTypeReference",$ `* A. {: @" c$ F+ q
        "ToleranceTypeLimitLargerFirst",
  `) d1 T% p2 K9 E4 l# {7 F* l- W, ^/ p        "ToleranceTypeLimitLargerBelow",
0 ]2 w: i" O5 n1 d$ ~% ]. N" F/ Y9 T        "ToleranceTypeLimitsAndFits",
% V% y7 ~7 {; A. p" X9 Z        "ToleranceTypeNotToScale",
) K+ t* G2 @$ U        "ToleranceTypeDiameterReference",
/ ?, q5 A) P; f  `, d7 t" `        "ToleranceTypeBasicNotToScale"   j' |6 E8 y* d. r: d; M1 `, |( g  D+ s
    };& ~# @4 \- s" m7 e: X  P2 H( \: ~

4 H7 a4 g& ]" K  o& x. G    while( (theDim=select_a_dimension()) != 0 )
" k1 j6 S- I, P: e1 f    {
7 [% K1 @& P: z4 x: ~        out.str(""); out.clear();* A' }3 S. ]+ J& I' P5 T; c% r
        if(! lw->IsOpen() ) lw->Open();
, U& I: P2 Y. Y( @. h9 [3 p  j/ v
        out << "Selected Object: " << theDim->Tag() << endl;' e1 V& h& m  M1 t

% V7 V7 e! `( {1 Z- M0 a        std::vector<NXString> mainTextLines; 7 Y$ P/ V$ g) O: e
        std::vector<NXString> dualTextLines;
3 k: X! N" p+ n9 ]* Z        theDim->GetDimensionText(mainTextLines, dualTextLines);& A5 b1 z5 A  k9 p; x+ n+ v# C  e/ ?1 v
        for( int ii=0; ii<mainTextLines.size(); ii++)
1 W' G& v) J+ Q: K" j            out << " MainTextLine: " << mainTextLines[ii].GetText() << endl;4 g9 z( t! t$ o5 `) U+ i
        for( int ii=0; ii<dualTextLines.size(); ii++)
: l6 E- G  y- q  q- \$ b8 Z            out << " DualTextLine: " << dualTextLines[ii].GetText() << endl;2 O3 t3 l2 z5 F+ ]2 f
2 w& P4 f8 @% P6 x4 y- l; M1 g. H
        bool refFlag = theDim->ReferenceDimensionFlag();
% n, L; L% l5 a6 n8 b6 `        out << " ReferenceDimensionFlag: " << refFlag << endl;
: M7 c  t9 I0 J0 X- ?8 F7 B4 M9 D4 @" R  z. N! P" b8 \
        int tolType = (int) theDim->ToleranceType();
% N( n& e% ?& n, }( h9 @. V/ a" O8 b        out << " ToleranceType: " << tolTypeStrings[tolType].GetText() << endl;4 y# s0 i! S7 W6 d/ Q9 ^

# f+ e# Z3 D& R. S0 n' C( U        ComponentData *theData = displayPart->Annotations()->CreateComponentData(theDim);! c# c6 e3 Z' z0 y7 |4 P
        std::vector<TexTComponent*> textComps = theData->GetTextComponents();1 e; T* n$ r8 U  h# ~5 n$ m
        for( int ii=0; ii<textComps.size(); ii++)
: Y# S1 K+ F2 B% D2 I4 i5 U8 `( r% G        {
! ?+ a. b8 V+ G" \            std::vector<NXString> compText = textComps[ii]->GetText();
9 O* l! v* h9 m$ g* N            for( int jj=0; jj<compText.size(); jj++ )
+ l. I! s. E8 B                out << " Component Text: " << compText[jj].GetText() << endl;
1 r7 b, E( b  p. m) Y* h        }
! M& a* X0 B9 @2 A2 Z2 @8 h+ w+ |
; ?' _  J+ v2 O/ H. E: H        int subtype;
- g$ F+ U3 C/ S8 _) D. J        double origin[3];" B7 U# i3 G# v: `6 C
        UF_DRF_dim_info_t *info;
" _$ R. c  x5 m2 D: B" h        UF_CALL(UF_DRF_ask_dim_info(theDim->Tag(), &subtype, origin, &info));- N9 N& r3 w- e9 `- ~
        for (int ii = 0; ii<info->num_text; ii++)
/ C$ p/ p9 u( o8 `2 D( y" I) ?6 S            if (info->text_info[ii].text_type == UF_DRF_DIM_TEXT)! D3 X. P9 ?' E" n6 g% p) i
                for (int jj = 0; jj < info->text_info[ii].num_lines; jj++)2 q7 d, `* _. A$ n" r9 Q$ n
                    out << " UF_DRF_ask_dim_info Text: " << info->text_info[ii].text[jj].string << endl;7 ^$ K% d9 h6 Z3 k; r5 K6 W
        UF_CALL(UF_DRF_free_dimension(&info));9 q# ?; H( l% I* T, K' K+ `
$ M. J8 p* s2 f2 C9 v9 V
        lw->WriteLine(out.str().c_str());
( @8 `' F7 n! u1 F/ c8 Z
* L  M/ h0 t" r) S9 e    } // while: B5 H- \: |. G: A) V1 A# {
}
* t6 o5 F; Y  t  q2 i8 T7 H' [8 ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了