|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
: h" T( @' {2 ~: u1 Y
& x2 K% K; K: G- g! Q; K( F6 M% t/ m) g% e) g8 v* u0 S8 _
UG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves
; B0 y& z- @& Z( d E. k: K% a* g7 h# K' M/ X- G3 E
此处使用的是 通过面的法向创建投影曲线,可以参考下!$ u& |- H8 A% A! Z
4 A* Z# C( }+ C' M/ ]) x; S, e: X# W! J! w! a* V
' p# w: M1 `- c8 p5 P! f2 }& b2 T$ `7 ^3 v; _4 P
2 w. ?( J. R- r8 z' r4 C" h
& @+ @9 p6 Z# I2 k8 n' T" `0 C" P Z# s! o7 R- n) n
NX Open C++ 创建投影曲线 project curves
3 i$ Z. n" z# O3 p3 J" p
/ `" C5 ]! V/ r5 e9 J- W' l
1 O( C: |4 l' e" D3 f- % S, Y( U( F- ^' ] n+ U# A
- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
" n0 e% S( Y' j/ I- p - {9 Y' M5 b" l' ~1 `
- int errorCode = 0;
* [3 Q" |* P% T9 [6 s - try
& s' v9 H9 e8 H, F7 O3 p# I' a - {( t2 k1 |, @- Z. f7 ?2 j$ C( d
- // createProject curves6 y6 g6 u) N. S0 `, G3 S
- * e# q% N; I5 f8 q7 H# l
- Features::Feature *nullFeatures_Feature(NULL);1 F1 G9 R& a5 V8 E; P1 O
- , M% ^) M* `8 M2 [" x. M3 [" R
- Features::ProjecTCurveBuilder *projectCurveBuilder1;7 C: O% S: G6 U; f( p; v) k
. {( G! O% `! v7 b) n3 Q# [5 O- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
" c2 i6 L7 i) i8 b& R U- j2 D
8 t4 d$ G: B4 Z2 n- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
) J( a! Z5 c6 X! S+ C
_* T( r3 I8 c; V% b- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);5 ^/ ^1 i6 l1 ]1 Q
9 K y6 ]/ B& x) s- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);9 `2 k" O B8 x2 m* ]2 Q- K+ i
- 2 Q9 q* |- b2 b$ J( f, U
- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);" M, }- P7 S8 d. z
- ) h9 ]2 E9 q' ^; P/ l( p/ ~
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
8 u( }1 X% Z* k$ @7 j) U' z8 v
0 {) s- ^4 T# N, r; B- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
# f: I0 x# R1 N; x9 L# K - ! B _. R3 t* i
- int size = (int)inputObjects.size();
) `& o6 f" x' e - std::vector<IBaseCurve *> curves1;
- J' O" r! m! l5 T, v5 L - for (int ii = 0 ; ii < size; ++ii)- U+ L! W+ h: z3 M# \! P+ U; w
- {* d& T7 G) H& t/ f0 Z' O1 w% b3 m
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));5 m* K& l$ W* R* C+ y
- }
0 R7 B; t' }0 F P& X7 J' } - , r1 i& A3 v) R
- NXOpen::CurveDumbRule *curveDumbRule1;
- w. h; t0 d3 v; y/ i: {
]. p9 ]; _& j- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
' b( t; L# A2 G4 J" J/ j - . ?- v4 u/ T5 K7 U- f
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
, m# [, a4 `( n: G2 V" @
" M U3 j B# b3 E0 Q! V9 j- std::vector<SelectionIntentRule *> rules1(1);
! w& `' u! K6 g1 m9 G. L; r - rules1[0] = curveDumbRule1;
$ o% S. d* [5 U' F- ] - NXObject *nullNXObject(NULL);
- _( _- r, d) h* ? - Point3d helpPoint1(0, 0, 0);
+ f6 R7 U# ?% x j+ p' y - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);: Z' n/ {' d2 J3 g9 V* e. X
f; V: [, C" S% h; n- plane1->Evaluate();
U4 X+ N. g+ z# m- ^ - & `9 _4 F* Y" ?' s3 H( L
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);
; f) { {5 w4 [1 e8 I; l& S - % s2 w0 J f, V) v; ]) ?) G
- projectCurveBuilder1->SetGapOption(true);* H* J7 D9 S) H/ {- ?
^# s. \, U1 Q- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);
- y! b# L, t6 D+ C - 6 Q7 M0 c; ~ y( o: Y' u7 E3 t
- NXObject *nXObject1;
+ s; m: n/ j# U8 f - nXObject1 = projectCurveBuilder1->Commit();4 f5 U3 ?" ~5 Z$ Y7 c& d9 D
; K; A; o! O. T. L0 K- projectCurveBuilder1->SectionToProject()->CleanMappingData();4 \/ J% I- H( u
- 8 b# |0 B% d) n. W8 A
- projectCurveBuilder1->Destroy();9 ?" v/ U" `% [* T s1 K
- |2 C4 W' k9 T) p% p: U! P- }
7 s2 @8 \$ W$ _. p - catch(exception& ex)
, f# ?+ r; `: `+ r - {
5 `1 i9 `1 W- |2 g. C5 Y - //---- Enter your exception handling code here -----
9 o2 _" C* J4 L2 o - errorCode = 1;+ N' J" I8 h& b6 \; N Y4 k8 L
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
2 l! W- t) d( V* m. B3 q- w& [ C - }
: @; D8 J8 s7 K! ]. G7 c/ ?, w - 8 A- _ Z7 X) x9 v, }
- return errorCode;
; {/ C9 ?0 U0 u2 z' v/ H - }
- ^& b6 v) N: O) X$ g5 g3 [
复制代码
$ c: |9 k9 Z3 x1 z/ ?! ]( A
9 [" X) F; p1 t7 Q* h5 }# V% [+ B5 t6 E+ \! V2 b; w
|
|