|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
& @. X2 m' ~7 u9 S& {; P$ z$ D6 v, }' g3 v0 V5 ~% B' d1 O
3 ^5 M3 N' I' t, ~ m: aUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
3 F+ H% K8 \ t. e1 F3 C
5 z/ p, G1 k$ `* w: f5 p; r此处使用的是 通过面的法向创建投影曲线,可以参考下!3 F* G# s8 F( v) V: H3 `
8 X2 a5 B9 W: r _4 V& |6 v0 k
. z; a5 k3 p8 j2 o8 h: P" v7 j' ~: b3 h# O
5 i4 \$ |0 c" P: Y w* v5 a
5 ^! p* Y X' Q8 O; w4 k7 E* p5 u. J/ L
( F% v6 I9 w! F6 ~% Q2 O3 w. ~$ u0 B
NX Open C++ 创建投影曲线 project curves
J: Q- o% f0 v% w4 d4 F8 c: U @) B! W. P9 M
/ f) M" `- T3 Q' I: s# `1 B
- H2 l3 L3 C' A) R! R0 B
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1). V9 A! h9 E6 `! M( L4 x
- {
! l9 n( m/ |4 @6 @$ V2 G" Z - int errorCode = 0;
, ]+ _' y( U1 {+ H8 b, \3 _% `( D - try
' Z7 K0 C. E. B& F& } L# x - {: W7 l" d4 x& ~3 _0 g K. U5 G
- // createProject curves7 \0 E$ U& g! O
" [/ S+ y. m) H: E$ u# I0 c- Features::Feature *nullFeatures_Feature(NULL);9 `; |6 R0 W/ ?
- ; [' x, ~. G6 g6 K2 Q1 b3 {
- Features::ProjecTCurveBuilder *projectCurveBuilder1;4 j6 T9 v* u5 Y Y# T5 g
- 6 B: A& I% T# h: `3 _" I
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);4 v5 E* I8 H9 c6 {
7 o& k& M. v5 ~ N' P- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
% P! _6 J3 K; w$ O# S
3 ~. q. P! d4 D7 Z# g- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);# u2 B" o- j" U( R# _& ?0 ~
- 9 X( p" J% h5 @: U* D! V/ u: Z7 C
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
" M2 D, f. c7 P/ A5 W8 K/ N. r
) E8 J" `1 F8 r- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
) A0 t, `: l5 j' y - & v/ L( Y; I9 z$ A5 M. \" u) H
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
7 K& X2 v2 O9 Q4 ^. B" ` - 4 e) K# c$ k q& q3 t
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);; |% _5 W& i: P6 y4 e+ a I+ i
- + p7 j2 G# o* W8 ?1 m- \
- int size = (int)inputObjects.size();/ L) ~; ]0 ~; I8 X" V' N: `1 C- o- Z
- std::vector<IBaseCurve *> curves1;
3 M- a6 B6 D8 n9 ]5 e+ x( K - for (int ii = 0 ; ii < size; ++ii)
5 [5 [$ v# J, E$ a4 f - {
1 C8 H b0 L7 ~5 f3 V3 z- U1 f - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));0 ]* J( l' V5 n! `8 L: b6 ^
- }$ @. p9 M' }* ]6 l& k/ j6 P# J9 f! r
- ( Y1 @# ]- Z' O( o
- NXOpen::CurveDumbRule *curveDumbRule1;& t2 O; E; U) [, F* K
- n0 o4 D( }" e* j# N$ L) U
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);3 w# x0 ~0 o2 B' k$ D/ ?* q: M6 m
- # J- C' Z3 N2 G: H
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);6 V/ F! q$ S3 |6 [& B* W7 e9 V' w5 W% s
- 2 T; s# F6 n: x
- std::vector<SelectionIntentRule *> rules1(1);
0 @1 q* p+ A8 K T- K9 y - rules1[0] = curveDumbRule1;# @$ x9 a8 g/ o& W
- NXObject *nullNXObject(NULL);& }# t. N1 k0 k3 ]
- Point3d helpPoint1(0, 0, 0);
# q9 n% L$ S2 _* r+ X3 X - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
4 o t3 O' S/ B, L0 ?' _+ S; @- s
! C0 z9 k, I5 v/ k- R! {- plane1->Evaluate(); q, w G, e F: Z
& d) m3 w( o8 \5 d) P4 `% s: Z- projectCurveBuilder1->SetPlaneToProjectTo(plane1);, W. Z9 @; m. Y% k/ C
- 8 X6 D2 @- F2 _2 [# b
- projectCurveBuilder1->SetGapOption(true);: A% M5 O% s9 O) G7 G$ b' T3 O7 I
$ l) O1 I6 [* L/ k* q( ]- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
9 z# D7 G# F' c3 p - - E R5 K2 e1 ]3 d! j
- NXObject *nXObject1;
6 t8 Q$ p/ d" W; v% v - nXObject1 = projectCurveBuilder1->Commit();. m7 g; a/ j1 z- {9 [% U
- % ~; o" e8 t- |# s# r! U( r
- projectCurveBuilder1->SectionToProject()->CleanMappingData();
# C" I3 ^& [+ p: ]
: J9 [9 x0 V U- projectCurveBuilder1->Destroy();, N- e0 E7 e, c) ~. i2 Q5 Z0 c; {
; x! y; l0 Z2 O- D; D$ L- }7 {5 D4 C2 z& P; o
- catch(exception& ex)7 d ]% d, O y$ `5 e, Z
- {
- Z3 Y2 O; H b3 Q; D8 _ - //---- Enter your exception handling code here -----
) D2 [7 x" N* W* \) d3 A/ |( ? - errorCode = 1;$ G7 m s" c$ d0 x. M# m# t
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());1 P2 W; R# ]3 x+ y# }
- }. ?1 _' m$ d$ n7 ~
# o! O% q2 M4 c8 B2 f6 z) Q- return errorCode;& K% V" o% l6 w7 z: `2 o% a
- }0 ?. y+ N0 _+ @; s4 X
复制代码
+ _# ?/ p4 M1 Y6 B" Z- q# M P, _: y2 ~: U
) {, ?) q7 p( [' c
|
|