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

[已解决] 关于NXOpen中的量测角度功能开发~~

  [复制链接]

2014-6-27 12:40:38 4635 3

eda 发表于 2014-6-25 14:31:47 |阅读模式

eda 楼主

2014-6-25 14:31:47

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

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

x
利用JA录制的内容,    Session *theSession = Session::GetSession();9 w8 f4 @! K2 I1 }9 l4 E+ o  s) `
    Part *workPart(theSession->arts()->Work());+ K0 X2 o) S8 t) j7 c3 a+ U7 k
    Part *displayPart(theSession->arts()->Display());
2 }" k/ `1 j( d! d    // ----------------------------------------------! S8 }& u+ E+ N; o; L6 F
    //   Menu: Analysis->Measure Angle...! o/ Z4 t7 _3 `) ]2 ^4 ?7 q  R) M; U
    // ----------------------------------------------- \) O2 N' Y% a
    Session::UndoMarkId markId1;2 }! f+ |* v0 V1 \
    markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");
. n; J8 d& D0 X$ v0 u- R# N  x; s. k3 |0 p( V
    NXObject *nullNXObject(NULL);
9 p/ e0 P$ z! {, G    MeasureAngleBuilder *measureAngleBuilder1;
" `2 k9 K0 P5 z/ I6 M    measureAngleBuilder1 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);+ L* D6 ^8 r4 }1 ~  l! Q' U

/ ~$ d+ r9 R  H9 L/ X2 P; Z1 [    theSession->SetUndoMarkName(markId1, NXString("Measure Angle \345\260\215\350\251\261\346\226\271\345\241\212", NXString::UTF8));$ D1 Q5 ^+ e- g6 d, n
* i( x% }; `) ?' d4 e0 N5 M
    measureAngleBuilder1->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);2 J( `- @* Y- I, z4 U

" ]' S* f* g0 c% R; t9 N    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("MilliMeter")));; c5 J5 X* m' W* x
    Expression *expression1;6 Q& z0 f: N0 Z
    expression1 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);/ ]  t* O( R1 h7 U! C) O8 R! s/ E0 `
! ]" o' ^& Q, _# k
    Line *line1(dynamic_cast<Line *>(workPart->Lines()->FindObject("HANDLE R-12231")));
" g, r  F1 l2 T% f    Direction *direction1;
, y: r: h% x: }! f9 q8 J    direction1 = workPart->Directions()->CreateDirection(line1, SenseReverse, SmartObject::UpdateOptionAfterModeling);+ @) I# ^- P# ]# T
) M$ L" {4 r/ \3 S" g* i( p' l
    measureAngleBuilder1->SetVector1(direction1);# s" h6 \7 K& G4 r
7 h" T! r3 ?/ z9 @% X) {
    measureAngleBuilder1->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);
3 o2 c8 N5 n% o" Z& S1 r8 {
. ~1 U3 l( T$ b( O0 S% x+ G" f    Expression *expression2;
* q  {; y  F8 M+ d/ U4 ?    expression2 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);1 d8 i4 L; L; F
% U1 Y9 T" H% |( y: K2 ]
    Point3d origin1(0.0, 0.0, 0.0);
9 Q8 j; B  |3 t# v) X$ C0 l( b3 ?    Vector3d vector1(1.0, 0.0, 0.0);
3 K7 K! D2 C2 w5 A: _" ]    Direction *direction2;/ l9 C, o+ R' R/ ^# U9 z3 J" ~
    direction2 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
. ^1 ~3 V8 M4 r0 M% H
. D, H% w7 v' i; _% {/ C    measureAngleBuilder1->SetVector2(direction2);
( B( m$ c1 ^% O
+ o, K( j6 C% ]$ g* Q$ ~; W: n    measureAngleBuilder1->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);0 M2 w1 Y% x- I: `$ x/ C. W
3 m" [( ~! ^6 r
    Session::UndoMarkId markId2;3 |6 a6 V3 u; a( y+ f- h7 o4 n2 O8 s
    markId2 = theSession->SetUndoMark(Session::MarkVisibilityInvisible, "Measure Angle");2 F0 u2 e( V9 ?0 G8 C5 I! I* A& a

) M  ?3 ~% p) j& Q) Z' |+ |    theSession->DeleteUndoMark(markId2, NULL);
9 m* o3 b" x( T1 z& ~) S5 j9 O+ @. x
) e- C+ j8 N0 r! \    theSession->SetUndoMarkName(markId1, "Measure Angle");
: _/ u$ z) s1 w2 T0 @  c5 y- \% {
9 [$ e+ H7 A* I( l0 ?2 S8 Q    measureAngleBuilder1->Destroy();
" N- T7 \# A( {# B: K# ?) f" V' N! X
    workPart->Expressions()->Delete(expression1);
) s6 |" ^4 Q' T/ k8 q/ ]) V: U3 R/ F$ P9 C
    workPart->Expressions()->Delete(expression2);3 W4 J0 k0 d0 }$ c; a5 u3 t

" s1 R* o  v) S; o    Session::UndoMarkId markId3;
" i: A& \) f9 i! X/ C1 e! l, {    markId3 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");1 H: f) B- j. H9 a

7 }) A3 l3 I6 x; i9 r    MeasureAngleBuilder *measureAngleBuilder2;
# {! _2 t1 q5 `" a$ ~9 Z    measureAngleBuilder2 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);2 u( t) e1 j3 g6 x) E) O

: ~( A4 Q6 E6 B* s' H* g' J    measureAngleBuilder2->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);5 @5 G% {9 r+ X# K0 t0 ?

8 o5 J0 W: i  C    measureAngleBuilder2->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);- h" p; ?: |& N1 O% E/ ^" ^9 X
" o' }+ `- {1 T
    measureAngleBuilder2->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);* {: {1 R( N/ `; r$ j8 H% G1 Q

" e1 ]8 U6 S$ P% V2 X    theSession->SetUndoMarkName(markId3, NXString("Measure Angle \345\260\215\350\251\261\346\226\271\345\241\212", NXString::UTF8));
7 i/ t9 Z. k/ o3 ]5 _: t7 a/ G& K$ Y
2 y: `, m: F) I: q7 f, {4 ]; J    Point3d origin2(0.0, 0.0, 0.0);* E3 E9 m; w0 m
    Vector3d vector2(1.0, 0.0, 0.0);: X2 v2 s; w' j& j7 b5 x7 d
    Direction *direction3;
/ d. g% ]! t# w5 |    direction3 = workPart->Directions()->CreateDirection(origin2, vector2, SmartObject::UpdateOptionAfterModeling);
9 R0 ?. b9 J' P
8 E/ E( B8 Y* P, K    measureAngleBuilder2->SetVector2(direction3);
5 P) h/ ^1 L9 d: x4 l. g0 j( ?, F7 C$ \7 J( B. q. t* L
    // ----------------------------------------------
$ N5 e# c3 Q- \" K2 B    //   Dialog Begin Measure Angle" q6 N( Q% `+ E% g0 j/ C
    // ----------------------------------------------1 L9 ?  Z/ ^8 q* {" {7 H0 ]
    Expression *expression3;' c. ?& g! U* F0 ?" S2 T
    expression3 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);2 h5 V* B! o5 y- V
9 F2 C. ^5 P' k7 g1 D, {* |0 Q
    measureAngleBuilder2->Destroy();+ z: Z( G( _' d( G

. W  x! i$ k0 j9 b    workPart->Expressions()->Delete(expression3);4 W/ C1 e+ K7 V. M, e

* h5 C0 [5 f8 M: A5 s6 j& X, e9 O' j- i    theSession->UndoToMark(markId3, NULL);
/ N: J+ n2 _. w" }! Y/ T- q8 _; z
    theSession->DeleteUndoMark(markId3, NULL);
+ v/ m7 v2 c7 ]# C% K" `: F; y' O& \6 j
    // ----------------------------------------------# Q# c- V3 ]7 f5 Q9 {/ T9 ?5 ]
    //   Menu: Tools->Journal->Stop Recording! h; J" R8 X- B: F) C$ ~& x
    // ----------------------------------------------
5 R# Y9 i; r  \  y! v
- p4 V1 o7 s# f& \2 }5 a% p8 B: [; }2 l( A$ q! X+ C1 J

: d. Y& O% n/ Q4 m5 q7 `$ L5 W2 j4 {4 {3 Y
于VS中写入了以下内容
) q3 G" h' e; z# ?( d' w, S& W1 d8 i/ \' @" [3 o+ b
Session *theSession = Session::GetSession();
1 T" E7 O% E) Z( Y" g. w: a' G                Part *workPart(theSession->arts()->Work());  n! i$ B# v2 ^9 h9 o! ]7 D  P
                Part *displayPart(theSession->arts()->Display());
7 t7 G3 Z; ]7 M8 ?( u7 d! ^                ListingWindow *lw = theSession->ListingWindow();  e: T. Q& n; u6 i* U

6 r/ t. e- P+ v* a( b5 v0 E                NXObject *nullNXObject(NULL);
0 s6 U6 t! Y- u$ l( M$ n/ F2 R                MeasureAngleBuilder *measureAngleBuilder1;% Y$ }. k9 {3 J! n
                measureAngleBuilder1 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);( o0 C  Y) k$ {* u" }* [) Z0 `; o! H

& Q9 P" p+ L; X+ _7 P. r                measureAngleBuilder1->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);5 V5 K2 |3 s! ]; g
8 {* U2 {- N4 q8 g: G
                measureAngleBuilder1->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);
7 A& r0 j! G! n" a( T
" v/ K' D# ?+ r4 [( p. q0 R                Point3d origin1(0.0, 0.0, 0.0);
  o' i: {+ x6 m; U, Q0 g                Vector3d vector1(1.0, 0.0, 0.0);
& [1 w3 I3 G1 w5 Y% X  ~, _                Direction *direction1;: q( w+ N- c) d- G
                direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
2 f5 e+ D/ [% S7 r- a6 e5 |& A) v' D3 ?2 w; R6 p6 U
                measureAngleBuilder1->SetVector2(direction1);& v" ~% `, D+ L
/ p4 p. D% [. x- L  P
                measureAngleBuilder1->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);
( F7 j3 R+ ~& b! a: |
0 T( C+ S% u1 ~3 Z  A, w                BlockStyler:ropertyList *vectorProperty = vector0->GetProperties();
( y* `  C' |# J7 D" s7 M                Vector3d vec = vectorProperty->GetVector("Vector");
" z" E( J3 Q4 ]9 w* K  h                delete vectorProperty;8 k8 Z& A6 `+ F. f
                vectorProperty = NULL;
) W+ s3 v7 t6 Z' Q. {' P6 h* f) s! B
. z: A% t' a- V. a' d                Direction *direction2 = dynamic_cast< Direction*>(vectorProperty);
1 `) ?5 P+ P6 [" ~2 J7 ~1 L8 R# b( {- @& O
                measureAngleBuilder1->SetVector1(direction2);- j6 H  h; l& E- A+ `& y

9 p6 x0 A+ h9 H) G; n$ N7 j运行后无报错,但却无法得知正确量测出来的角度数值,以上内容不知那里有误,请大侠们指点  |* f9 R0 u7 [& o( Z
2 g7 d7 D3 ~1 C# O7 S9 O) @
  N  Y6 [& R% P# a5 k

4 _+ G/ w: L: x% ~9 I
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复3

花在人间 发表于 2014-6-25 22:28:12

花在人间 沙发

2014-6-25 22:28:12

获取属性用"SelectedObjects",教学视频里有类似的
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

admin 发表于 2014-6-26 09:13:09

admin 板凳

2014-6-26 09:13:09

这明显是错的
  I" ~; M; z& Y  Direction *direction2 = dynamic_cast< Direction*>(vectorProperty);+ K) q4 N# o5 d
6 O- r. m' j! Q# K  A' C
看论坛视频吧   ~  g& J6 O) L: l0 ]  Z: l) q. c9 a/ y
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

eda 发表于 2014-6-27 12:40:38

eda 地板

2014-6-27 12:40:38

感谢,测试中~~~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了