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

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

eda 楼主

2014-6-25 14:31:47

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

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

x
利用JA录制的内容,    Session *theSession = Session::GetSession();
" N" x8 D% x# @3 \5 L8 y4 z( M' Q    Part *workPart(theSession->arts()->Work());6 }; \0 ^  t% K5 K, u
    Part *displayPart(theSession->arts()->Display());
. T3 [9 E5 C; G) O# q: [    // ----------------------------------------------
: S  n/ m1 w% E, [# k    //   Menu: Analysis->Measure Angle...' n; y4 N. P+ F4 K
    // ----------------------------------------------& }8 U. b9 f; T. C- L! Q* b7 n8 ~
    Session::UndoMarkId markId1;
' y+ Y& D4 X$ f    markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");! [+ U8 y4 M  p5 E7 y7 }4 r: X! {$ P' ]

# v2 I, s/ v6 G4 F/ m    NXObject *nullNXObject(NULL);
1 F: L5 q- a# o8 Q' O5 i5 u    MeasureAngleBuilder *measureAngleBuilder1;
6 A  X! z: Y$ X7 y; f! w    measureAngleBuilder1 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);
! P8 d8 U! a5 @- a  g! @, i0 _* P7 c
    theSession->SetUndoMarkName(markId1, NXString("Measure Angle \345\260\215\350\251\261\346\226\271\345\241\212", NXString::UTF8));
1 G6 e# u) d9 B7 R
+ l6 g# J2 g, f1 i    measureAngleBuilder1->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);9 [. b5 c3 f6 t$ p5 E1 N3 F
) U6 j4 @% `$ ?7 I! I5 y, m
    Unit *unit1(dynamic_cast<Unit *>(workPart->UniTCollection()->FindObject("MilliMeter")));
  [6 u+ ]3 t" F' S0 J; s    Expression *expression1;; p& I3 O- a+ {4 V; ^% G# L
    expression1 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);7 v# @. F$ V7 C" j4 H

9 P8 }" z6 e* L    Line *line1(dynamic_cast<Line *>(workPart->Lines()->FindObject("HANDLE R-12231")));  l, ^* s; w$ O
    Direction *direction1;4 f9 U0 |3 z9 l4 h9 n
    direction1 = workPart->Directions()->CreateDirection(line1, SenseReverse, SmartObject::UpdateOptionAfterModeling);
2 H$ m+ ?6 r0 @1 E$ p# e1 a4 V. ^- a8 x9 M  T
    measureAngleBuilder1->SetVector1(direction1);
  x8 X" q7 G/ j, B, m0 B5 X' {# ^0 h( \7 v
    measureAngleBuilder1->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);
8 j  E9 c& Z2 _! k9 y/ ~8 C( h
, `8 h# [, H- N' b/ C* b    Expression *expression2;
- |1 D+ n2 J4 ^" H3 Q6 n    expression2 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);+ n# S$ _4 H7 t
' p" G- r% U, ?3 T: [" t1 K- Z
    Point3d origin1(0.0, 0.0, 0.0);  t6 h7 \9 n3 W' k4 v+ E. n$ i
    Vector3d vector1(1.0, 0.0, 0.0);8 o1 h" b5 H* G5 m/ g; J. ^- ~
    Direction *direction2;
; T% x% a3 @8 q7 s  q; W% ^+ n: t! L. [    direction2 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);
6 \4 _) p4 ]% ]4 q: K
/ W) b. ^* t( H% l/ y    measureAngleBuilder1->SetVector2(direction2);& N- Z! E6 k8 D- o" I$ c
3 b3 d! z2 D% @$ l6 H
    measureAngleBuilder1->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);7 Z  G6 K5 b3 ^8 T0 Z
. I. f5 }$ J* D4 P1 m. N
    Session::UndoMarkId markId2;
$ u  U6 z+ O& O. v    markId2 = theSession->SetUndoMark(Session::MarkVisibilityInvisible, "Measure Angle");1 B5 {% I9 R3 _( P* d8 ]2 o

3 B+ ?( `, r" C& m! _    theSession->DeleteUndoMark(markId2, NULL);
9 n9 G5 G8 V3 \  S$ R
% _9 |- @! `" D! @. P- D    theSession->SetUndoMarkName(markId1, "Measure Angle");" R1 t4 U+ Z& {7 K. `; Q/ Z. R/ `
; w3 @6 g" ^- }) o& D7 r" n6 }% Z
    measureAngleBuilder1->Destroy();) e7 N' N+ v# H9 }9 a
4 s# l9 W% i1 w* F
    workPart->Expressions()->Delete(expression1);2 Z8 G( D6 f5 d5 ]

- g) e" r0 H8 Y    workPart->Expressions()->Delete(expression2);
1 h, d1 }9 L, f3 c# O+ K4 d4 ~) x: X1 d1 }( h+ n
    Session::UndoMarkId markId3;
1 T+ o; u5 u; n6 }% l1 N2 D    markId3 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Start");6 M; b! h: @5 S/ w" k6 z
" R+ c5 ^( G4 e5 l
    MeasureAngleBuilder *measureAngleBuilder2;' D' v1 `, Y6 \6 g1 ^! n) e( N
    measureAngleBuilder2 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);2 m4 L8 x# o$ _, A
8 `. d1 R3 v* i6 e/ P" T: V
    measureAngleBuilder2->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);+ B4 r8 |2 r4 p" D9 O

0 _+ d6 ^5 ~" E    measureAngleBuilder2->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);. Q6 R! B" t/ Y$ |5 M

6 t5 H# T! y3 i; B3 F2 _) `    measureAngleBuilder2->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);
8 `0 g  J0 E' H# \' v# s+ \+ a/ R4 x6 w6 E
    theSession->SetUndoMarkName(markId3, NXString("Measure Angle \345\260\215\350\251\261\346\226\271\345\241\212", NXString::UTF8));. M  _$ C! |/ y2 O4 h  j1 {
$ p, g7 @; \, S# A) L( X
    Point3d origin2(0.0, 0.0, 0.0);
1 r" R! Q0 a- Y& _    Vector3d vector2(1.0, 0.0, 0.0);" G+ a% I1 c3 _
    Direction *direction3;
3 B6 t$ B2 M  _, F1 r    direction3 = workPart->Directions()->CreateDirection(origin2, vector2, SmartObject::UpdateOptionAfterModeling);/ M4 m2 i  `$ P" H$ k6 G5 u
& Q; E5 p2 _$ T' y
    measureAngleBuilder2->SetVector2(direction3);
' n- K. B0 b5 _, k0 D# d" j) b- A0 h
    // ----------------------------------------------; }7 R; N( i" ]- s% x
    //   Dialog Begin Measure Angle/ r1 L: @! F9 y) `
    // ----------------------------------------------
: l& s6 R* d' `( S    Expression *expression3;' h" A3 W6 H0 s, E) ]0 p* a& S* {4 l
    expression3 = workPart->Expressions()->CreateSystemExpressionWithUnits("0", unit1);
7 z- U! W( c5 f4 `
2 q- r' K6 ^# P, K    measureAngleBuilder2->Destroy();
$ V- y0 o% [3 P; V, p$ w5 [, q; `  V( u8 h- m
    workPart->Expressions()->Delete(expression3);
8 M% e9 |; D; @; p& y/ c
* o+ u1 c; M; u- a2 ?2 w. ^    theSession->UndoToMark(markId3, NULL);2 h4 L5 e8 f8 b( i- j" {

% s4 m$ S! l- b6 p$ A7 k    theSession->DeleteUndoMark(markId3, NULL);
/ m# g2 k3 M6 v; E9 u; m% d7 U8 p5 D+ S* h
    // ----------------------------------------------; O. d9 \% F& P. x; b
    //   Menu: Tools->Journal->Stop Recording
* L+ P  [' x5 d    // ----------------------------------------------) W# a: Y. r% t: S$ B6 P; |/ L
6 w+ O" [7 A5 q

% C! V1 D0 f0 ?) Q$ w8 S4 y: `' U6 a% x5 t$ l/ Z
9 t4 e1 O* Z2 E5 w  \6 B, }9 f1 U
于VS中写入了以下内容  l' U  Z) P) r9 R) j

/ z- \$ I! s/ a7 f( B% bSession *theSession = Session::GetSession();: u! g# {1 g! M, z( D
                Part *workPart(theSession->arts()->Work());4 P' Y' B  A5 Q$ F, t. ~9 d3 m! [
                Part *displayPart(theSession->arts()->Display());
  Q9 U' F/ A  Y% H2 P7 S                ListingWindow *lw = theSession->ListingWindow();
2 n1 i$ l7 P8 B! Y5 X' j2 k
/ p' N, m6 Q, e* ~1 U                NXObject *nullNXObject(NULL);
! z, n1 q) U) A. {) z* d                MeasureAngleBuilder *measureAngleBuilder1;
1 ^4 |: q# C1 b1 a8 y                measureAngleBuilder1 = workPart->MeasureManager()->CreateMeasureAngleBuilder(nullNXObject);; F* w& y2 F; q. H  D9 d
" O! z5 @5 `6 }& e% W
                measureAngleBuilder1->SetAnnotationMode(MeasureBuilder::AnnotationTypeShowDimension);' F- n4 ]. ?: O7 v, H$ Z5 n0 {

' o: B4 _  s8 b) Z* i( ^5 y                measureAngleBuilder1->SetObjtype2(MeasureAngleBuilder::ObjectTypeVector);# @: _( g9 p% s- t9 a) v

3 f' A# p" S- R' E& l( N" f0 r: h: r                Point3d origin1(0.0, 0.0, 0.0);* ]" S4 K5 f: _" b- c
                Vector3d vector1(1.0, 0.0, 0.0);
. {1 U8 x$ x" G% g- r                Direction *direction1;
1 ]& ?" w& N! F; Y1 ?  d                direction1 = workPart->Directions()->CreateDirection(origin1, vector1, SmartObject::UpdateOptionAfterModeling);0 l* w, }- w+ R  i

* g2 F* \1 b0 A                measureAngleBuilder1->SetVector2(direction1);9 y) \4 K2 H# E5 U2 M0 I+ q) h3 n

- Y8 A% O. o. D" |                measureAngleBuilder1->SetObjtype1(MeasureAngleBuilder::ObjectTypeVector);
+ W- R) \( X/ N+ L4 t  \  k* @7 E# C
                BlockStyler:ropertyList *vectorProperty = vector0->GetProperties();% O: F7 I. ^' q. G* Z
                Vector3d vec = vectorProperty->GetVector("Vector");
7 U) G+ a* t% w  `; k" n4 ^# U4 H                delete vectorProperty;' x! f$ q, |1 C2 Q' J4 n0 V& n9 Q
                vectorProperty = NULL;4 v# j% L3 Y4 t; a0 Y0 p5 m

, J; [1 U- o9 }( g                Direction *direction2 = dynamic_cast< Direction*>(vectorProperty);
# f2 q, W, q7 j' z
8 r$ C$ ]! a0 ?  K                measureAngleBuilder1->SetVector1(direction2);; x/ Z. q; s$ u, o$ a5 U* w! ^

' K, t: G0 r, x8 F* o5 i运行后无报错,但却无法得知正确量测出来的角度数值,以上内容不知那里有误,请大侠们指点. I% o/ V) L: R4 c# Q$ E& T( R! c4 u

" l) R3 a* G, ?+ r7 |, E8 w# |! E, O
8 H) T/ A, l6 X
上海点团信息科技有限公司,承接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

这明显是错的
2 h% s! m/ |/ ~2 {0 g) B7 r- f  Direction *direction2 = dynamic_cast< Direction*>(vectorProperty);, M8 s, _; h( c. q0 f$ M) l, a

3 ~) G  ?$ B- _! X3 r' k2 k" p看论坛视频吧
# b2 x7 P& {! \0 i1 M. [
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了