|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
) E: r: t2 n! k2 r" u3 U( G
4 i2 j4 }" ~5 r; }# \# U" F5 S; R, Q# _8 U6 D& O6 F
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
# S+ M! x1 ^6 a
: ?' V! E1 ?" C; K! {此处使用的是 通过面的法向创建投影曲线,可以参考下!
& \) l. [7 ~! ^, ]7 W% q' A/ q5 B% V) p
9 f( Y1 M! p+ B7 `. c# E+ C1 @1 x/ ^: ]$ {* _0 P
9 u8 s0 {2 n+ j8 Q3 X! |/ v" c/ S. f; U& W! U# B# z" ]" i
5 L- H7 i) _; B% c6 A( x/ C
r# ^6 |( M0 r6 k& n1 k7 w
NX Open C++ 创建投影曲线 project curves
+ D3 K9 n8 [$ T- _, I0 E! x! u
5 I2 h; P r% q: e7 t" n" g) w' f0 }6 q* Q3 z: z; X) [7 N; g
- r3 l8 c8 R! ~7 k+ G+ P% t1 Z- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
- k l- n6 V! A! }. n* Z# V - { S: |5 Q( h5 j, f4 ~9 y" y' q( z' ?2 {
- int errorCode = 0;9 @+ R9 C1 h1 e- q$ Q
- try
. {/ A5 W# R0 l6 p - {
, A0 \% s2 s" ]; K - // createProject curves u! @' T4 R- Y& Q( C
- , v6 P" T& m& s& I
- Features::Feature *nullFeatures_Feature(NULL);+ Y- H( l+ Y! H. L
7 o% @' x8 ?+ {' _6 M a* o- Features::ProjecTCurveBuilder *projectCurveBuilder1;( t" f, c3 p! d6 G8 F7 @% b: Z
- : ?8 }- {8 z! P
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);. i5 N/ `2 \) E/ m# `5 c
- 4 F* r) W; l( A1 k/ J. c
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
+ E4 H5 g! p. }2 h6 S' u( c6 o - 7 f$ u. @( ^5 Z8 X8 ?
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
' W, ~+ {' k# @' L& \9 j$ E! Y - ) C0 |! D: J. U5 E% ?8 C F1 ~
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);# |' l% Q6 ? n8 M! Q
/ r S9 S$ r6 B- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
9 }, Z+ ?8 L9 ?+ b/ V! K& w8 J- a - 2 ^9 o% o( k2 u& ]
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
( |1 ]6 d) E6 Y0 B
9 Z6 n( Y& \1 U$ r. b2 B) h- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);! V3 k7 `) R3 w
- 4 d9 J# o6 p$ j* l3 N7 ^
- int size = (int)inputObjects.size();5 k/ @; {1 |' I# S5 R+ o; }
- std::vector<IBaseCurve *> curves1;, b4 e/ b3 Z% t( w* ?4 z
- for (int ii = 0 ; ii < size; ++ii)& u4 o1 @" P/ F
- {
$ T, {( |9 t3 G( R8 C/ {- P; @ - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
5 S2 p' `' n+ q( I8 n - }6 y% y/ ]& C& m, M$ _3 l1 U* Z
" l/ x: ]* ?9 i% T0 X- NXOpen::CurveDumbRule *curveDumbRule1;
* c' M$ h$ g, C; \
: _9 C) P3 N. \2 f5 A- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
/ q9 A2 O8 H7 g6 `. f
, m2 f4 }; g! m0 [- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
: n* |1 F* |/ A( a5 s, d% X/ D - ( r# x& {) C; D( X9 ^
- std::vector<SelectionIntentRule *> rules1(1);
3 P# a, y6 d3 M. N2 G - rules1[0] = curveDumbRule1;
7 n& g/ s% | Z3 d6 m8 J - NXObject *nullNXObject(NULL);9 c1 i' }$ n7 ~( I5 `
- Point3d helpPoint1(0, 0, 0);
+ a" L# c1 X5 n8 s6 ?: V* f9 C - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);8 t% R0 u) R. ?- [
- o& p2 W# k9 M. C
- plane1->Evaluate();
5 K" s; {2 F# M" `3 G- v - 7 M# J/ z# z. m' R! k% ]! ]
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);/ G! n& _$ `& q6 X5 A- ?6 v. r# _
- 1 E c! K+ N/ D0 q0 O
- projectCurveBuilder1->SetGapOption(true);
& T7 g4 ]5 h" [6 O* m1 p# N
. @, @8 K* V6 H1 Q, t- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);" {" x1 o' b8 F5 `9 l7 `
% h% u( ]6 y5 l) O- NXObject *nXObject1;
% G, L' u& i& w, y! z9 }/ }0 u - nXObject1 = projectCurveBuilder1->Commit();- ~) p1 y( L* }+ E( T& U, T2 q
# c' n- s5 I9 L+ E/ |- projectCurveBuilder1->SectionToProject()->CleanMappingData();
+ H" k; S$ n8 H/ O2 m9 [$ F
' \: N3 B2 c4 O: L7 N0 g- projectCurveBuilder1->Destroy();. s# q/ F5 C: h) z1 u* D! J
. d+ \" C0 P' b3 E- k, l3 ~! o- }' t! L& }7 L6 d4 H7 p6 H
- catch(exception& ex): T6 f4 i) n# S0 J& O& R
- {
7 m5 S' Z# a$ B - //---- Enter your exception handling code here -----
# t: ^& Y) T" b3 B - errorCode = 1;5 D3 P m6 y0 _9 o& @
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());' R; r7 ^& C+ l4 ]" a7 ?, v
- }* }, Y; U2 q( a6 |0 F
- 6 |. c, g& @4 |# O# ~
- return errorCode;5 ?4 e9 l2 S2 x- i3 T" c
- }+ O& N4 w0 C6 I1 I3 Q N/ K8 y
复制代码
; T: V1 q8 `7 T/ O) k2 ?
& r6 C) I4 v; m0 ^0 V! t( ?. Q5 y9 P' e/ Z4 K
|
|