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 4648 3

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

eda 楼主

2014-6-25 14:31:47

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

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

x
利用JA录制的内容,    Session *theSession = Session::GetSession();2 N5 J. N0 d. I
    Part *workPart(theSession->arts()->Work());: V8 @/ y8 R1 G$ A2 x' G: i: ]) _  {; W+ ~
    Part *displayPart(theSession->arts()->Display());
; q2 V8 P1 N- B/ _# q; \    // ----------------------------------------------
, y& Z9 p8 j& g' V- H- X    //   Menu: Analysis->Measure Angle...
3 J" K. N& `! K0 `# q    // ----------------------------------------------
& g7 L, h5 {& u    Session::UndoMarkId markId1;
8 c8 W5 u3 R/ F    markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");4 E0 W: V9 r) H
, }( Q* i  A; i$ l8 B& i1 l
    NXObject *nullNXObject(NULL);4 a, M6 a& J7 G; Y# T; p$ h
    MeasureAngleBuilder *measureAngleBuilder1;
$ m( ]* C" w% A- ~2 m    measureAngleBuilder1 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);* ^7 C6 I' W/ I, }6 `

1 C; H) m$ I- y& k; [1 t6 {    theSession->SetUndoMarkName(markId1, NXString("Measure Angle \345\260\215\350\251\261\346\226\271\345\241\212", NXString::UTF8));
- m+ \% R/ h/ @7 W4 y/ V2 ^0 ^; F2 Z1 |9 ^, `4 G. {
    measureAngleBuilder1->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);- b+ a3 b2 |& O3 a
1 \4 I* }% Y7 q
    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("MilliMeter")));0 a6 H2 y& u; _* \8 F: B) v
    Expression *expression1;0 j" |  \% t. T+ ?  ]
    expression1 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);! n, V0 T5 p. a) r. m
, Q  `9 Y( P/ R' k: v: m8 G0 c! J/ X
    Line *line1(dynamic_cast<Line *>(workPart->Lines()->FindObject("HANDLE R-12231")));5 ?; ]) P/ B+ @- o+ f
    Direction *direction1;! ]6 k, b9 Y8 T; s' m! s2 s; e! ]+ T
    direction1 = workPart->Directions()->CreateDirection(line1, SenseReverse, SmartObject::UpdateOptionAfterModeling);
, I3 ?3 S' M/ |! ~6 V" U* m; D" Q! {" c
    measureAngleBuilder1->SetVector1(direction1);
* F3 }9 v  u# i9 G
' j  G) `3 V- b4 n" U! H3 W! ~) L4 w    measureAngleBuilder1->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);7 i* ~8 ?5 @% {; ~: T) \0 ]
, B. o1 W1 {5 V- s
    Expression *expression2;
. r9 A) Z& u' w" K, A    expression2 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);
0 j- b' P; ~: w8 v
# s. d# T+ r( _6 r9 Q; b7 T$ d; m    Point3d origin1(0.0, 0.0, 0.0);( \1 V5 x' T* @2 @
    Vector3d vector1(1.0, 0.0, 0.0);
& |  P- {8 }6 u& A0 S    Direction *direction2;$ V+ g2 T1 ]0 L5 b* A- _2 z" r
    direction2 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);; P% a! J9 _7 I9 a/ z8 }( i
) i; y5 N8 ?- ^) x( d$ _& b4 V
    measureAngleBuilder1->SetVector2(direction2);$ n! l8 f  z" N: y- s0 [. w, L$ a2 w

) j  ^7 Z: _+ E' ]8 h5 j. `    measureAngleBuilder1->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);9 `3 B; }$ i! M! z
! h3 f. S6 k6 a, b
    Session::UndoMarkId markId2;4 z" a% s/ d8 Q9 j3 d7 X7 Q( l6 |
    markId2 = theSession->SetUndoMark(Session::MarkVisibilityInvisible, "Measure Angle");5 S; e& i! N6 w' `6 k# e
3 i4 |. s( w) a2 }. i, @
    theSession->DeleteUndoMark(markId2, NULL);
/ n1 l) T  x8 i( s8 g3 E" C! ]/ z+ _1 V5 d7 j7 c/ I+ D1 Q
    theSession->SetUndoMarkName(markId1, "Measure Angle");: H6 L1 [) @- Z  C. y8 Z4 A4 [
9 P2 E: R1 p7 z& g0 s& s, e
    measureAngleBuilder1->Destroy();
: N* e  l8 i# D8 c
4 }1 ]! p. P8 C% ?/ \* ]( _    workPart->Expressions()->Delete(expression1);9 @! u9 s8 f6 a2 f! v5 D9 N

) h7 ]( M( M* ]: {: A. |    workPart->Expressions()->Delete(expression2);/ d+ d. N+ K, b4 X) O. R  ?
* V" w' D! q4 ]3 v! U" o
    Session::UndoMarkId markId3;
6 H* i9 c1 k4 |; x- A8 T# e    markId3 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");- C  b! ]% L! ?6 B5 b' A
: ^' y, T9 K0 ^* d* s* h3 O
    MeasureAngleBuilder *measureAngleBuilder2;
! D& h2 r6 U. u    measureAngleBuilder2 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);
9 R2 V# A" }. ^- P+ p
* x* w; \7 h  Y    measureAngleBuilder2->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);
; k. W( q+ ~' L; }# R/ \. N; u+ ?" i# N& ?! |& E1 A3 [- F9 |1 Y/ I
    measureAngleBuilder2->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);6 m9 T, I8 N; @6 a# N

" k, _- W: R4 k0 W* [    measureAngleBuilder2->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);/ ~9 z, @7 r! L

- u5 O0 H% ?3 {+ N' U  k  m    theSession->SetUndoMarkName(markId3, NXString("Measure Angle \345\260\215\350\251\261\346\226\271\345\241\212", NXString::UTF8));+ {" R5 T$ g0 }  y& A( {
. n; ?+ {0 a1 X, t& R0 y
    Point3d origin2(0.0, 0.0, 0.0);  q7 T1 m5 E' }$ F. K7 l
    Vector3d vector2(1.0, 0.0, 0.0);
; d  Q1 ~  W$ F    Direction *direction3;
, g' H* C* t9 P/ r% g    direction3 = workPart->Directions()->CreateDirection(origin2, vector2, SmartObject::UpdateOptionAfterModeling);
% P, r9 v" F$ O2 V7 p2 ]3 O/ S
# }$ ?$ @3 ?2 U9 B/ ]2 t    measureAngleBuilder2->SetVector2(direction3);
+ l1 L2 E1 s) I0 S. {: m  N) e4 e! E4 J# o! t) V8 u" m% r! w
    // ----------------------------------------------
7 z8 I, o# j$ t. ^! P' q- M' u    //   Dialog Begin Measure Angle( k$ y# y$ c0 Q- ?+ [8 ]
    // ----------------------------------------------
/ h/ v* r% W% `" ?  a/ A    Expression *expression3;
: |; ~0 Y1 c+ Y0 O* Z  P    expression3 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);- t* L: T: R4 W% P8 _

2 C+ }3 q& `4 L5 g4 s    measureAngleBuilder2->Destroy();+ U7 w: x$ O# ^9 ]( s7 x3 ~

, g& v0 S/ a1 m6 U" ?    workPart->Expressions()->Delete(expression3);8 c1 e/ p1 l  E3 a4 k

9 j1 ^) M2 b" R, T    theSession->UndoToMark(markId3, NULL);1 d4 w* X. f, c! {& g+ X

0 C8 R/ g1 g8 A* w  A    theSession->DeleteUndoMark(markId3, NULL);
" u. z: Z/ C' j( n& C) {' w
# D# K7 v% q: r6 c" X, g. f    // ----------------------------------------------
8 T- A; {! u3 g3 H+ q    //   Menu: Tools->Journal->Stop Recording
' d4 o' A9 l5 M" ~9 L: m# D    // ----------------------------------------------
; Q- s4 m6 W$ X( M
0 ~: R9 A2 B% J; N2 h, k- C# h2 x# E- F; m- [4 T. [2 D
0 l4 X$ m& S' r" e3 ?! \( ^

' R6 y7 V% s; \6 P于VS中写入了以下内容4 |1 N0 P5 }* E$ C8 V# k

; a9 y+ s! m& o- E; V* rSession *theSession = Session::GetSession();: ]; c9 t7 U: c: p: C4 F! G9 d. V
                Part *workPart(theSession->arts()->Work());# U4 ?" {3 X2 p# s+ F5 L' f$ E' L
                Part *displayPart(theSession->arts()->Display());
. B! h. D! [* L4 g7 g+ C% K2 r8 o- Y& }                ListingWindow *lw = theSession->ListingWindow();% r. q6 `5 @& ]/ z

  j, ?$ \9 }- m3 N# q& j                NXObject *nullNXObject(NULL);* s2 b# j' @+ y
                MeasureAngleBuilder *measureAngleBuilder1;1 t+ a; e4 p" k. B9 h# I' Z6 Y
                measureAngleBuilder1 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);4 ]2 C1 [2 Y7 [5 Q
8 O- I. c) j6 ^5 m# L1 R5 [; }' \2 w
                measureAngleBuilder1->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);5 J2 K  }# `+ d- D0 e$ q
/ u% g7 ]& _5 o; P) S9 M% ~
                measureAngleBuilder1->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);
1 \5 Z# O6 c/ T6 B" b6 }2 X
" \+ [2 o5 N/ D5 F9 g/ Q; ~# l                Point3d origin1(0.0, 0.0, 0.0);# |" s" ]5 b. k, Y' t$ K% h: s* k
                Vector3d vector1(1.0, 0.0, 0.0);
# q7 V# d: [. O                Direction *direction1;; M6 O0 Q' V9 O4 c: |
                direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);7 h8 W# ^' e0 @+ `" {; K* k  `2 F
1 u/ C9 X6 L8 A: c. W  e3 l
                measureAngleBuilder1->SetVector2(direction1);6 `/ i0 O2 z  u9 P- O
( R8 |# `7 q. G* F: I
                measureAngleBuilder1->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);- x2 L5 s1 q& u, [& k6 D* b

& I' ^! ^, c, v                BlockStyler:ropertyList *vectorProperty = vector0->GetProperties();; J- j7 p0 \! {. t4 L# Q' {# _
                Vector3d vec = vectorProperty->GetVector("Vector");! j& s' ?' ^$ T+ \$ V* a
                delete vectorProperty;
. |5 O5 j" H( M; @# v                vectorProperty = NULL;
6 v5 @5 I# Y  Y, Z9 {
9 ?5 N2 P9 l; W8 g* P                Direction *direction2 = dynamic_cast< Direction*>(vectorProperty);
& n* Q1 u, h7 @( T. N" u0 |- A+ e( i$ S: ^: e
                measureAngleBuilder1->SetVector1(direction2);8 o4 h8 T/ W8 F
1 u% r, S' [2 L* d5 a; z6 u8 {
运行后无报错,但却无法得知正确量测出来的角度数值,以上内容不知那里有误,请大侠们指点
9 I' s# E- w/ J$ x$ Z6 w- `9 K+ \0 o% C) s( H- V+ x

1 k9 k& A# b- p: Z# u  f
1 `) Q7 c1 q  M6 V: e
上海点团信息科技有限公司,承接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

这明显是错的 / d9 W* v- C3 G6 X$ j: W' E, X
  Direction *direction2 = dynamic_cast< Direction*>(vectorProperty);, J, ]- T/ P; p  F3 l% f% I
: _$ L3 m: I7 _# B# d4 R
看论坛视频吧
3 k" X; Y# M, F3 f/ l7 q6 E- X
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了