|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
1 c( `/ u, E- g
( t# {1 x' t- x3 A/ v5 R" g5 h# L( Q2 i1 s( n( ~
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves& j9 A4 t/ T( @9 E5 W3 f
0 L2 V: G* H% j7 t% B9 g6 c( Q
此处使用的是 通过面的法向创建投影曲线,可以参考下!
, v6 W. _# ~/ {4 {" b2 V
8 m* e9 U7 r# Q$ N8 p- a. o9 U" Y6 }* w, P; @# b1 Z9 C7 P
) T0 Q! [0 B4 t% c$ ^: I+ R
: L+ W$ ?4 M% h% F6 a x0 b, h
) w( b6 L6 {* g3 L( W1 k+ i3 R" ~
& s$ n% X0 z- \, [: c& i2 s7 P/ Q2 d% w
NX Open C++ 创建投影曲线 project curves
) |" Y" x t/ b) V, {6 H$ [
4 x& j2 S( {+ y9 [* N, B% x) l3 b- @, a! b' r3 [0 J# }2 W; Q
- F% X1 O5 d0 r3 b" W6 b1 }7 w- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
' P& P* [/ u- F' c- |; J$ I - {
% U H" o$ S4 X& k8 C, T - int errorCode = 0;
( ~6 u; l- H! @( j - try
( e+ n& k6 u/ t) H% ]% `1 L$ W7 H9 W - {# f7 M) J, M7 F) O$ P7 b' D
- // createProject curves
+ O5 F! J9 m- c
* M6 K7 Z: j! J5 F- Features::Feature *nullFeatures_Feature(NULL);
$ l1 Q( r! v& G1 ]( G1 N1 ] - % i: w5 y9 j% e1 @- _' h
- Features::ProjecTCurveBuilder *projectCurveBuilder1;
$ p+ W. n) a% e' N) H
. i5 i! w1 L$ C, V& ~9 L2 `( q. b- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);4 O6 D0 D* ]( T) n# o
- ) `% U6 X! A+ }* F- [+ [2 m
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);9 }& Q! p9 y" i
- " R+ L7 D6 e) s1 F
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
% H) u1 a/ O" t
+ m. X' Z4 B; Z1 Y+ T$ g" a8 `1 K- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);2 a, p2 _. ?, o- E. a
& T( I8 \2 k) ]2 n/ F5 k# N/ i- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
- y' @' s1 n4 ?& b c3 f
( W6 A8 R% `' g- K% n6 a- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
" M8 c0 a {* O0 l) B/ f3 y1 N2 J - 8 m2 S5 ^7 W" j A& H0 S
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
2 `+ O) v8 o; N# `
) H1 s; G: H. F" }9 m- int size = (int)inputObjects.size();
. p5 y6 J5 w# X6 z: h. s- i2 Y8 M - std::vector<IBaseCurve *> curves1;
; H+ B+ ^7 U0 y! f2 ?0 ^. ^: o - for (int ii = 0 ; ii < size; ++ii)
" s$ ]8 q- d& R1 k9 [% L+ [7 u - {' E6 g' x2 q( w7 i% b$ g9 u
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));
& m' I, c+ L$ G9 k/ H% K) N& y! Y% W - }
# T' M& p( ?/ \2 q+ ^* p, b - ; K7 h* x |2 [$ B! G' m/ o
- NXOpen::CurveDumbRule *curveDumbRule1;6 t2 V) r* ?4 G' C/ ^2 W P# {) m
% k5 T# O: D: W a$ g- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);; f' a1 I O/ h" f: J- B
- & b. u. u! K3 s3 h3 \7 }# ?
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
+ j; }0 ]0 N1 ?' d$ J - 8 h2 }. ]' I: B. ~$ d( g
- std::vector<SelectionIntentRule *> rules1(1);
4 K* w! m( C% I# B - rules1[0] = curveDumbRule1;3 K/ L; Q8 M4 I( o, K; a1 s
- NXObject *nullNXObject(NULL);0 w5 k; J; k* R5 p' W7 I
- Point3d helpPoint1(0, 0, 0);
: g1 W- I$ ~ s. e; K3 P$ i. W - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
" D. \: ]' {0 Q; x6 J( Z8 p
5 G3 \- [/ A- ~8 o- plane1->Evaluate();; v2 [0 `2 o( E, l- o( B7 I
- 8 C- n: e1 B) P, y' P4 t; G% K
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
, N, t2 @5 R. C/ o- L8 ]
7 X a' w9 V2 V: D- X- projectCurveBuilder1->SetGapOption(true);
5 C: V2 R9 E0 M/ x+ m0 ]" h
6 l- P9 \/ o7 l- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
5 t" m8 f1 H$ Z, X - ' E( `' ]9 A8 U# m
- NXObject *nXObject1;( z# f" J$ u% y4 ^; G
- nXObject1 = projectCurveBuilder1->Commit();
( J; g# q) i0 B- t9 F
) Z+ p& M6 c1 R+ L' W# V. g- projectCurveBuilder1->SectionToProject()->CleanMappingData();) h: h7 N% b2 G/ p4 n( g
1 [: `! a/ b ^3 W) @- }) R, T7 z- projectCurveBuilder1->Destroy();" g( _# N' f# \( C/ }# t
- # `) x$ D# e, M8 j
- }
b: L; [" p2 M" @$ K7 Q - catch(exception& ex)
# I9 ?: N9 x; f! |4 i8 W - {9 N% ?3 s5 L$ h! T8 U5 O0 W9 y
- //---- Enter your exception handling code here -----6 ^) a: _$ }4 H0 ^
- errorCode = 1;9 }4 B) H6 ?. B& T) F+ V
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
/ J& l3 R, U e - }
^/ u! L# E5 @7 Y
1 D5 T+ {9 e+ v8 N- return errorCode;% q6 A+ B, M5 p; V
- }6 ^3 S) G5 X) V
复制代码
0 G" v8 Y* g) m* C% s, U
0 Y3 Y) |* |% j$ w' _! g; `! D" Q* {. R% z3 Q. o4 U
|
|