|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
! M A* n9 J0 ^1 \5 C2 y( B" G
# Y/ u9 f+ R+ c' g- p9 m
8 [% a4 D. }9 u, cUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves: a9 I& q1 i k% M8 q5 G8 c& n
0 ^7 E4 j+ D: q; X1 j* u) B此处使用的是 通过面的法向创建投影曲线,可以参考下!
8 m8 W) q/ Q" @6 n- Z3 K% C. G4 }) g. I8 [
* d7 n1 t9 s9 R) K( `
1 ^% G: _2 P9 `# U d4 {9 y: Q5 `" r4 _, y
, ^ ?3 w& s; L
6 C7 v/ r4 t0 H/ P. b. z# p2 q& A9 X( i& \( v+ M; t
NX Open C++ 创建投影曲线 project curves
0 r1 T# S" V2 V2 S, z" L
) e+ [! F' V/ s( n' z
5 f( s; G# b+ f$ O
/ x# ?- C) H1 d& m- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
: s9 u+ X9 v3 j/ X& v2 g - {5 P: d. ^- O: Y& _
- int errorCode = 0;
9 p6 I9 O/ x) o$ J$ z: n% `* T - try
8 F0 f6 b9 [8 [& F3 W9 o3 t - {
& f& l: G0 f+ P - // createProject curves
+ B# \: H! p8 Z
" n1 b' ?, r' h$ S; K7 x+ n- Features::Feature *nullFeatures_Feature(NULL);) L/ t$ A1 L- H9 Z7 n, n
( H2 c) p% U+ ]$ w& |% t' C- Features::ProjecTCurveBuilder *projectCurveBuilder1;
* O, z3 M- }8 }8 }' m& P% b
) w9 L9 R5 q0 }) L# |8 K- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);: |5 t. Y7 w% ^; N& Q7 E; o1 ]) g
- ; E: o( {7 r. S; Q
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);1 {5 K3 W w, M( e/ y" W1 k
- ; z7 B7 b: E y. E& V& G
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
% ^: ^4 ?% f1 X/ w+ M$ y4 Q - % i( Y# b- d7 P, j( p
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);5 P/ E6 M$ x% ^7 a
' A) q) c9 c) q4 s' l+ j/ t- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);: Y1 Z, q5 P& [" i8 k7 G. A3 e
- ! P, w5 O1 o0 M% z& N5 z
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
: [! s' ?' C7 e' W; U$ V$ @, t8 F7 c8 F - 0 A. o1 P, Y5 L8 ^
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
* H: B, J) r% ` G - / G7 w% [/ h& K0 P
- int size = (int)inputObjects.size();2 R5 q) l6 O: m3 ^3 u
- std::vector<IBaseCurve *> curves1;( {& i" G0 r v H' Q3 e
- for (int ii = 0 ; ii < size; ++ii)
$ H2 v- |% \$ `, z6 M. B - {
5 T) c# }( F- {/ v) D6 @' p) z - curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii])); X7 r/ B6 L% `' g8 l8 L% `" n/ c
- }
g W5 H& R# q5 z# Z8 r+ D
) i+ _/ u+ I, V- I* B( c j) |, ?0 Z- NXOpen::CurveDumbRule *curveDumbRule1;- T1 n1 w0 n& M' @+ |5 _4 q
; x0 @2 `) u6 j* L- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
8 i. Q: O2 b H/ Z - * _! U8 k3 ?- p
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);" t7 q: f0 J4 e* t @/ o0 Q
- 4 ]# k: M! x" P0 `8 C. f! v) b, Y
- std::vector<SelectionIntentRule *> rules1(1);- @, O% @+ V# I5 T. C% m
- rules1[0] = curveDumbRule1;" W" \% o9 o0 z& L* l* {) a1 i
- NXObject *nullNXObject(NULL);0 }! p8 h7 n, T
- Point3d helpPoint1(0, 0, 0);# ]" [: z. ~# N3 G* F& I& r& M4 P
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
$ W/ ~: V! z5 i4 p, \) ^; Z
# ?- F) x2 ~1 h- plane1->Evaluate();6 G- L6 m4 Z+ ?. H$ I1 j
- 7 p, g( ?% E: u1 a+ i: ]' s
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
& f+ V$ N9 D& y, k, B) b, ]# Z - K% a* ?- b4 |9 P0 S5 J
- projectCurveBuilder1->SetGapOption(true);, D) r4 m8 M$ B
) z: J/ b% M- s7 V, }- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);% E0 s$ N, k( ~* l0 `
- . Q$ z: T8 P4 k" v* B' d% p
- NXObject *nXObject1;. ?& {6 B7 a: K: W
- nXObject1 = projectCurveBuilder1->Commit();
- J) L7 S$ `$ J& H6 L - % a8 X+ V4 f- t) O# P" P
- projectCurveBuilder1->SectionToProject()->CleanMappingData();
+ i3 j$ B, m: [4 U* {) G* [+ E - % U3 k3 q* S, o4 ]
- projectCurveBuilder1->Destroy();
+ i* I2 Z7 h! Z5 a - 0 k6 `' F2 N3 U# O I) q; V
- }- a2 I& j% K& ]! x. o& w
- catch(exception& ex)
. C S$ x- ?. ~; k - {' h$ {! u& a: F: j" {! r6 u/ F
- //---- Enter your exception handling code here -----
5 V: k ^- ^" U" q- W - errorCode = 1;
9 F" U$ E4 L: H) e9 f2 X7 D - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
. I. `! K5 P2 F7 \; t% y3 P - }
; N7 i& h) }7 u! q3 d7 m0 G0 V: ~
J- ^- x. n5 ?* b( }- S6 H- return errorCode;
4 s5 w' b% B- f3 |8 Y D+ _- D - }
- R$ @3 |7 p6 Y" i+ Y/ ~
复制代码 $ `! ?& a H/ _# K" a f& x; U
\5 H2 T* W) y
& q# j8 l* R$ c2 ~
|
|