|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
" Z) m+ R% W% {& O
x6 ?/ ^0 u% e X+ P3 ^) w- E- l4 q2 W: z3 h: T
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves @8 D- b, z9 w: z; p$ o
6 Q9 f: W4 T+ F9 E* c
此处使用的是 通过面的法向创建投影曲线,可以参考下!+ O) J" i# O/ ?& ?7 Y" @9 N5 n
; v( v7 S& S0 V1 N8 G$ f" v
X1 w! M* c3 K/ j+ c2 J8 D# N, s8 j
1 ?/ W/ [1 B) A4 N) f
# b) _3 Y+ s5 X% D- S, x: Z I4 b; t$ X. U; X" l0 @
: t- X; f, y# R1 O( g8 y7 D
NX Open C++ 创建投影曲线 project curves
4 m* r- m0 y0 a! y* E* T* \0 x; @3 s! X1 C! A0 @- s) V
( ^2 d5 D( v. H3 W1 a- ! @: Y+ h5 ~; X& y, {+ {, V
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)2 M6 j/ b8 D9 l& Z3 t1 G2 [; C
- {" t" d0 E- ~: }6 w/ A
- int errorCode = 0;
' }) z- p' ^0 O - try/ s- @0 b$ X2 R, A( P
- {$ s F5 q+ T+ c- U$ [ s2 I. Y2 Q
- // createProject curves
, ~, ]& _* t+ y- m8 A: X5 i2 ^ - / ` z8 x% o6 E# O3 [/ C9 e
- Features::Feature *nullFeatures_Feature(NULL);
. U/ }4 y$ p7 K& F. B+ S - * c" x" B- B8 C
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
/ N: |( z( A2 {; s - * F0 K8 L' W k" [( U9 Y2 [
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);6 [7 O! e) v8 L2 I* N: c
- u& m# F4 U# b" {9 \. D6 i8 W A
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);3 P# Y9 J" @8 s1 f0 y# z
- 0 A1 ?1 N5 V; W7 Z7 e2 H- d
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
1 S3 B3 a5 |: R2 N, x u
4 r5 k$ `: v; v4 l- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
! y, W6 g" j6 z/ f - 4 f1 q; M. T3 E; q$ \
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);& t0 Q1 x1 s2 I( V2 `7 C3 ?8 _
- " H2 h. {) v; }2 o7 I+ G$ e
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);8 Q/ s2 b3 U9 U, y5 V; h: ^
- ! G4 {% w, `- O9 q( g
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
! j8 z7 u5 G; p( n( B- w) H
8 T5 Y2 [7 N1 \3 A9 k/ L- g- int size = (int)inputObjects.size();
$ I- ?0 a1 W9 j4 O% E6 U& G - std::vector<IBaseCurve *> curves1;
W* a0 i1 h4 X' c- l& D - for (int ii = 0 ; ii < size; ++ii)7 g% n+ D1 d+ T8 Q: ?4 I4 _1 I, B
- {7 ]/ Z1 a) e1 f% E; h
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));7 {# u" [& T) Y; m4 K- m
- }, `" t: k/ Y! n. ?" ]
6 D# k* j/ W" w- NXOpen::CurveDumbRule *curveDumbRule1;3 Y. B# |/ B E2 ~
- 3 p6 v7 T% k$ N2 g
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
! K) C) q+ p; G8 H. V8 ? - ( n; C# t. d' r$ Q3 E: Q
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);7 D% V+ ?8 J' l: \' s
- & z0 @3 }; N3 p9 Q! x+ }% J, @
- std::vector<SelectionIntentRule *> rules1(1);# Y3 v- D' g/ t- k
- rules1[0] = curveDumbRule1;7 P3 X% |- ~3 a' P9 R# ~9 m% j
- NXObject *nullNXObject(NULL); \' X1 S! f" @# v/ ~: Z
- Point3d helpPoint1(0, 0, 0);" m, {3 j% X% J, `. a6 ~9 m, e
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);6 [+ C. J% o* p e
- ' m4 F5 R! |' z) o
- plane1->Evaluate();
4 b$ C% l; m: Q" _ - 7 r. T! G0 H u4 T( K" S; v
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
! x( |: R( Q: g/ X3 o* \ - & p8 g; t3 R" X. t% J
- projectCurveBuilder1->SetGapOption(true);
9 G* U/ x$ c W% n7 m& t( t9 w - P2 _& _- j$ t% k' u3 D' r# ~
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);9 s2 n+ D, {2 m7 t$ E; ^4 ?
- + P6 x9 g, j! a L
- NXObject *nXObject1;5 d9 W' g" p. b; k" }7 P5 {
- nXObject1 = projectCurveBuilder1->Commit();/ E) [/ f, x# F' ~/ B2 ~- ^
/ m- h- l2 ]; H- w; _/ }6 A- projectCurveBuilder1->SectionToProject()->CleanMappingData();; P0 ~! C( `2 _: @' P
9 w( U/ X# e8 m9 d0 p9 B _, \: m- projectCurveBuilder1->Destroy();" l7 l# O1 ~' r& E" t
- $ W o r5 m; a3 p$ L! a
- }2 e0 n4 C7 ^" `' c; U
- catch(exception& ex)
6 ?" `( }1 [* o/ M: L - {
0 w x* l* w" M/ ]: A - //---- Enter your exception handling code here -----/ ?$ f5 _ V1 w i( Q
- errorCode = 1;
" @( u1 ?& f: e2 K! |$ R - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
* v) e6 o; T* r3 Z$ Y0 {1 J3 A3 A - }5 u6 }4 z$ ]( A$ x" f
. _! H# H. A; R& O3 ^/ j" A- return errorCode;
7 g5 A5 B E$ S9 ~6 ~ - }( F; ?- t3 f0 l
复制代码 # ~7 {9 U C _
# w4 E2 J$ y, M* c9 E3 M3 k( j! T; m! x7 X; b' p0 R) ?4 w( T
|
|