|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
& r7 E; F- s% K5 u
# \6 X6 {9 c, o& _
3 ?- @& X7 t5 F) p& G+ ]7 O# XUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves' I, Y6 N0 x% o n8 ?
5 n( }: F6 r% M! i9 |9 c5 G此处使用的是 通过面的法向创建投影曲线,可以参考下!+ {" o' v# s6 b+ Q5 F9 b
% L$ @9 ^& r: e% D+ Y- J7 S2 M1 m
+ t4 x$ O2 X) U e
8 b. T* L9 [( J5 A' k0 R/ r
; L+ n! Q5 n# j1 s% k4 F3 f% E2 u6 u
+ \3 C1 l7 [% w( Y( x
5 j/ }. x4 \& P* N# a' e! F' o" X
NX Open C++ 创建投影曲线 project curves
$ S7 s, P6 \, m6 Y- \7 V
1 b+ {# G# j* P# ?, V9 o
# C" k! a& W% a9 ?) `- W- 3 Z- q( W7 |& {# ?* w; c m- v9 s
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
. v/ G8 h% M- @) w - {% z ]) c# W2 r4 I' U
- int errorCode = 0;' N* z7 d4 a n1 {9 E$ z6 \5 T8 D
- try0 f$ f3 e' j; K: J4 b) {* d
- {/ u) K' j& K) @1 b2 {
- // createProject curves2 F, k+ f+ ^2 J( _8 R
7 Y$ s2 i: J3 h1 T" y! J( l- Features::Feature *nullFeatures_Feature(NULL);
9 l& n. ~' s3 ` - 6 Q* E' W5 O# z
- Features::ProjecTCurveBuilder *projectCurveBuilder1;: H" E; v9 T* S* k3 ]- Z2 V- ?
- # t7 \; P( [3 Z8 X, A1 F. [$ t
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
( G2 {' S/ N, X: [9 X1 h" V - & s4 |. S& V7 k
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
' W# c5 N8 v6 g - : n3 e% T3 o" a" W' k, f
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
* x0 w- O- K6 A( h5 e
- }' E) b8 c% A) J0 v$ L$ w- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);& k6 @3 y/ c R9 G9 D+ ^
# `2 d- R3 T! S5 J$ r5 W- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
; ^! `6 H Z1 | A7 x3 Z) M - 2 b) U2 ^" k6 I) |2 `
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
6 V2 W/ q7 z7 H' {. S& [; w
' W4 |9 {; J4 o1 _( r( E* x- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);! B$ G8 h L7 E1 V+ [, }6 f
\5 T v% p, u0 Y. [ u) i+ j- int size = (int)inputObjects.size();$ u$ b. ]; l; b
- std::vector<IBaseCurve *> curves1;& B0 h: h ]. _9 a) k' Q
- for (int ii = 0 ; ii < size; ++ii)
5 i; o3 B3 q8 F' N) c3 ^; X - {
* t! H2 A, R9 u: [: Y% H# d - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
( e) C& C, f6 N; e - }$ ^1 e6 Y' t1 Z3 s
7 y5 b, m# z @/ F- NXOpen::CurveDumbRule *curveDumbRule1;
3 |9 ~* v( k: | - 2 i# K7 q/ w7 ?
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
/ H/ l6 T. U' x8 c3 x) b - " E, g# T3 f) ]+ E
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);. y% G4 o* i* p( n
- ) j- b1 c5 N P7 u& ?3 E
- std::vector<SelectionIntentRule *> rules1(1);
* Q% f3 P$ {2 H) k, q7 t9 x6 l; a - rules1[0] = curveDumbRule1;0 |# P, l- R6 J. u9 D8 B$ [
- NXObject *nullNXObject(NULL);+ d- P! o3 M" ?8 {& w
- Point3d helpPoint1(0, 0, 0);/ |8 a) R( D' W. Y( L9 r
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
8 e- o5 A2 |0 L. A1 i9 r& M - % D, c5 a4 \& k7 s& N: b& v ^
- plane1->Evaluate();
. S/ L! _" Y7 t1 w- P v - " {* V, P8 I- _
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
5 g: E7 T- y5 ]# Q+ | - 4 L# _4 O6 F& ?) N
- projectCurveBuilder1->SetGapOption(true);
+ i$ z2 G$ R' `* _
. y) x/ {; }/ S& k5 Q/ S% n1 G% E5 b- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
8 Y; S- Q* u2 ~, g; o6 W - $ k5 U6 \& q; n1 e5 f
- NXObject *nXObject1;
; f5 s/ O* h& n+ ^$ J% x6 S - nXObject1 = projectCurveBuilder1->Commit();# N1 N% `2 ]* }3 }9 u: J! K& O* g
& p- C R: Q2 k0 g- projectCurveBuilder1->SectionToProject()->CleanMappingData();
# z1 i/ s6 c3 v6 i - ' r: X5 E! A: ~8 j
- projectCurveBuilder1->Destroy();- K" l3 s$ }8 M5 n, V
- 4 K6 K3 S) l, U3 Q
- }4 t4 ^! k" E: ~: r) w+ t
- catch(exception& ex)
6 _9 \0 J$ h! k! |+ m9 |$ i - {
% d8 x2 Z" Q! I* x9 V - //---- Enter your exception handling code here -----# N( t2 b+ S+ Q2 h' ?
- errorCode = 1;3 _: Z8 g9 s$ [
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());* ^' `# B# A6 v, X6 S. a4 V7 e
- }
5 N* H( L9 K$ r9 i - : e$ J; u/ B) ^
- return errorCode;
/ @7 u$ w" W1 R# S1 @4 ?1 L; t; s - }
5 R3 D" z# Y8 G
复制代码
% y( d; r% ^% j& I+ q' W* w! F7 P; J% k
& ]$ B( l1 Z) _ |
|