|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
& Q7 V V) d/ p& z/ F
( r3 |+ C3 w# g! V ]9 k9 w; ^! s# @
( @, t9 Z1 a5 S7 Y( WUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
4 d$ }8 L5 A' R7 ]2 @
8 n' M0 y4 ]2 y& p6 I, ~此处使用的是 通过面的法向创建投影曲线,可以参考下!
; O$ J! G- \# M% s+ e) d1 x" z& c0 h1 X( I' p& S
- C; p# i6 t y4 u$ }
" K3 z! Z& S2 A) h4 a% Z
1 q/ D5 `( D; t- x$ Y% M
8 ~( U; \" w* U& x( _: n' f6 ]' N. w7 o6 M7 @2 L4 |
4 @: V1 o" y0 v7 k! k
NX Open C++ 创建投影曲线 project curves
" L5 Q5 r; z$ m( M: U# H3 t0 p7 M! T
0 f+ E B8 B8 X! F7 y- . S; Q- U5 l, z8 J
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
4 D# F. a0 M/ E! K/ [- f - {& v* U6 \1 ^$ X# }" I4 j$ V1 q
- int errorCode = 0;7 q0 Z# }, s9 P# c8 h8 f9 [
- try
1 I B* l& n6 V8 N/ w( I4 w - {( E, _* u8 B! M; W6 I
- // createProject curves
( D; p% _+ x* y' n6 L+ f. o
# g: m( g% G% b; X K- Features::Feature *nullFeatures_Feature(NULL); r$ F- d4 O1 w" ]& _
- 8 e2 o$ ?5 J2 f
- Features::ProjecTCurveBuilder *projectCurveBuilder1;: X' @ T; ?1 Y3 T& _) V
! y% {9 S/ v- l& w/ ^- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);- G: e6 @, {2 @ M3 h
- 5 ^- D/ W n$ T* D, Z, {" z* P
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
' o% o$ E& ^' u6 P" A0 w7 V
8 n3 ?7 j7 Q Q. H3 o9 b- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
5 {/ U v$ K. e" b, L - ( u+ i3 n) a! j N2 u
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);/ [ m" t' w' _
- . d7 d( d5 m0 n5 i
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);/ Z3 f& F" W; i
- " j7 W' Q: L% V/ g" H ~
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);2 x7 O2 k& K, h
& M5 E7 ? H X ?& G- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);, {: O8 k9 J% W
- 9 w2 k$ S! @" f1 Y5 C- |
- int size = (int)inputObjects.size();
: ^- L4 T- i# G/ R: } - std::vector<IBaseCurve *> curves1;
9 D1 A- s, J! b- z w3 W - for (int ii = 0 ; ii < size; ++ii)
0 y3 k+ }8 |; D& v. i5 K+ C! i - {
& J0 l# X" S2 x. m1 R - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
/ k7 z9 m& }+ @ H; F5 O - }+ A8 k+ |9 |( C* Z- O/ s x0 c3 t. ] ~# G
( o4 q; E# k0 P- NXOpen::CurveDumbRule *curveDumbRule1;
; {$ a$ @. m/ X2 H5 ?2 F - " L. _, s( Y. I2 T( q2 S
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);* S7 ?( O3 N4 v+ }2 k: T- ~5 t% d
- 4 \4 z) U' U! |( V7 A
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
' J9 `8 ?% _) Q8 K8 q, i - # P* A" ^" j% m) Z) z) e- W- Z P
- std::vector<SelectionIntentRule *> rules1(1);6 a" Y; A/ r! U6 G$ O
- rules1[0] = curveDumbRule1;
, `, C5 x8 f9 K - NXObject *nullNXObject(NULL);4 j/ H; F* F1 u4 Z; B+ ~
- Point3d helpPoint1(0, 0, 0);5 D8 M5 C2 Y' K! \% C+ h3 |7 }# [
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);& d2 D3 }8 ^8 q6 Q0 Z
- / e: m+ L, [) n' N( I g' ]
- plane1->Evaluate();7 y0 o( M7 @6 [
- Z; X( s+ x1 x7 K
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);& b) B! B4 x1 D4 B$ s$ S9 f% o
' {7 C' ^9 G4 N2 q& X7 P( w- projectCurveBuilder1->SetGapOption(true);
l: G9 K* b7 V+ i& C - 5 O/ |% o0 O+ n! M8 m
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);! w- I0 t/ q" T/ u0 \( Z+ z8 |
- 2 s( T! ]3 F4 x8 f
- NXObject *nXObject1;- ^4 f' J5 I2 f8 ^) _, b
- nXObject1 = projectCurveBuilder1->Commit();
( T* _; l0 }; K. K7 G1 G+ b
5 U6 C. @8 m( \: R) @+ H X- projectCurveBuilder1->SectionToProject()->CleanMappingData();
( g, T! H" ]$ C, u7 I - 3 g4 C/ V5 H, X( U# n5 J5 Y9 Z* d
- projectCurveBuilder1->Destroy();: W% ~' |& ^. e5 o# o8 X1 J! A+ X
1 d8 `/ H K9 ~4 G! }, f- }
1 _7 n2 ]6 b8 d, o! A1 V* e - catch(exception& ex)
) ?6 d- ]7 U& ?4 X% \ - {- m& D7 |+ a: m8 a) @
- //---- Enter your exception handling code here -----, r' |7 h+ \/ ]8 t) l7 D! ^$ ]
- errorCode = 1;
9 M6 M* ?/ }# ?, U7 z6 V - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
; I" c9 T( z/ A7 S6 G4 \ - }6 X, |# o B: C3 {
- , ~- F1 X; {& \. c
- return errorCode;
. |! g9 w4 m4 Q& d" ^ - }: }1 C: }2 ]$ R8 m. M1 b
复制代码 1 Y& t$ L0 ]9 a6 G" u" G
# |/ i( X. a' Z7 M5 k l+ I) {8 f, a
|
|