|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
+ ? g; k" @8 _3 S/ I2 W
. E9 Q* D. t. s# s, u
5 z: l2 f q8 }" |* kUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
: p. Y, _: Z' w/ O$ l t$ Y3 G) r( C5 X% W/ _* ?3 r
此处使用的是 通过面的法向创建投影曲线,可以参考下!
2 m; N5 M- u" i* C, V
6 q, w8 V4 U# `) n9 A) [! O+ m2 g- w' x4 k
- U$ F$ F* ~# Q: e ?
0 i- k; A& j3 P9 {$ j
7 J. p# V# p8 M) O
4 S: l( ]( Q7 y: t R" H" L0 Y
: ?* s, r! v0 S! l# q: p
NX Open C++ 创建投影曲线 project curves
* x; K; o' K ]% ~7 x
' F8 ?4 o1 ?: Z$ b) O- K8 N
% ?2 Q" c4 a3 Z+ n4 w
) Q6 \. D9 k3 V0 E" R1 \- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1) U6 O& y, j# [: Q1 K
- {
2 k, O2 G* F* N5 _( ]9 g/ V& o# M - int errorCode = 0;
7 l" O+ e) X- s C5 a5 h# F - try- T& ~! |" B. o" e
- { I& G1 N* ^5 r7 q" B8 H
- // createProject curves
; f; y- y) T$ _3 k* E6 F - + O9 W4 |0 x @7 o; u+ g
- Features::Feature *nullFeatures_Feature(NULL);
" M% d' @' A! i0 U - ! s$ h$ F% M a) r3 S1 j, o7 z( e
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
5 M s0 w9 o+ a2 x - 0 v3 x0 Y0 L6 J2 V
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);/ L# I. R0 i) P4 _( p' C1 U
9 f; c" p0 C0 @* Z9 `: }, R4 N- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);1 d8 ^8 |5 {4 I' g/ \$ Q7 q& ]
- 3 K5 D; J N5 o
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
" c9 S: O! y) h/ |0 X ?) z
' x* H; d( X: A1 S- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
: J# [8 \4 K& l- n8 B4 `( { - / M# z7 c0 u( S8 U
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);. |; B" ]: L6 a# }9 s) D; B6 q2 ^
- + ~1 j, q0 k+ I. u* c
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);# P0 x% H; |4 \# [( j
- 6 `. H% A6 U$ r' E$ P% h- [
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);6 q& `# b! _* J- R" Z( G
, N" Z/ L% r& T3 p- int size = (int)inputObjects.size();' n1 V8 Q, w0 U( q' y, x
- std::vector<IBaseCurve *> curves1;3 @7 m9 P# @8 ^; J& z0 [7 \1 i% \+ c
- for (int ii = 0 ; ii < size; ++ii)* g& |2 M; s) T( S' \
- {
) _2 H' d0 n- b( Q3 R5 h - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
+ p8 A' Y2 u6 Z - }5 i! R0 |% y- |" U
- 9 D" p! h; X' m, B: ?
- NXOpen::CurveDumbRule *curveDumbRule1;
* y* v. j" q& J* D, o8 D. k* i) U
: N* d( ?4 t5 {9 N- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);5 c" ?1 o5 A3 D, c) f z3 N* y/ C# z
- - v* p6 ]8 L, x4 n' M
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
& a5 X% O5 w" T, C$ a - 9 {$ A+ _7 z# u5 v& v c
- std::vector<SelectionIntentRule *> rules1(1);' N6 O( u' W* `& F: \ Y( W
- rules1[0] = curveDumbRule1;* w# o& X& \. Y& r" K& w& v% L/ g+ p
- NXObject *nullNXObject(NULL);
1 m- a8 F. _/ L; _7 b& ` - Point3d helpPoint1(0, 0, 0);7 j/ [/ i7 n- @4 H6 H
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);! _* Y# s2 W, y
: X* U& b/ U/ y( [- plane1->Evaluate();
7 Z+ _& ]/ _. N ?# M - $ O0 W' ^- H; C( ^6 F6 U N' O- h$ o
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);5 c7 [$ { d4 E5 {) C8 b* X
- / B5 P' g; M, e: ^# k, W
- projectCurveBuilder1->SetGapOption(true);) v* {; W) x" R: p) b* l- x+ @
- * V: {! ^5 C! r
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);; ?- g3 E4 k+ i( z: X& R! `
- - P7 i" p( q( X* z+ D% ]
- NXObject *nXObject1;9 }( F# b7 \* F' V* e
- nXObject1 = projectCurveBuilder1->Commit();
1 g7 {% D( `9 k! L0 F4 \" ~
* x5 S6 x+ @: H1 p3 h9 Q( i1 u- projectCurveBuilder1->SectionToProject()->CleanMappingData();! l# p7 x0 }! ~( l6 C
9 ]2 }: i. ?+ D* q- projectCurveBuilder1->Destroy();
6 k; e4 O7 o- I - 2 j/ H$ C4 e& E: W" O( |
- }+ h+ M# E! T! h0 R. _" R
- catch(exception& ex)0 |2 _. T' o$ N3 g1 u
- {
- w/ C+ f' P( `* y4 u& I - //---- Enter your exception handling code here -----) m! P7 U) ?/ i# y) \
- errorCode = 1;
+ r1 \( h( D- p! i* |# v1 V - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());! [" d+ U- d. ~* P; Z7 y, w: y
- }
$ Q; W3 E; i! I: k! p- }2 h
4 \+ V! l" @. i. S- return errorCode;0 k( K$ G9 v$ h$ v; G! X* y
- }
9 B6 h8 B( w! Q* Y
复制代码
) F9 e& \( O x( S' j0 w- H+ M: l# F8 V
$ S9 \* Z( a! n$ U( |
|
|