|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
& y# p0 w$ m+ o& x. ?
3 W8 m1 }5 a; t, v% T( o
4 s. n! m3 L* P1 x" Q) d* RUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves* D- z/ V2 R3 b/ k1 H# R
% p) y5 r" M7 l& ?! ^" [( |- l6 a5 q
此处使用的是 通过面的法向创建投影曲线,可以参考下!
; x$ d! c* O3 @% s7 y: Q: r, R0 h- i7 i6 E5 E
" ?! H& [, O9 F9 N6 Y; p2 {
9 b5 ^; e: K ?
9 a1 `. v/ M( y4 t
9 k( v! c @ _4 M% g& t2 n, _
6 v/ s, c! ?# _; a+ ?& g6 K' e' t8 A0 @$ U( ~1 U
NX Open C++ 创建投影曲线 project curves
# q# i( h0 m; C
+ X! d" |" w6 T9 z4 i
, p& n2 ~4 Q- g' w8 @
( k: Y: f& t9 w2 c. D) o& c- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)
. j: G: b {2 e$ z- ^1 d) v - {2 s9 y% d% F7 Y' L' ]! V
- int errorCode = 0;
; s6 h) {- p. B8 E! J - try
- c8 {) I( B! `0 `& @, U# i+ y8 I - {
2 D H7 H1 {6 _; S U, z+ u \# s - // createProject curves
" v s4 R' q. w% q1 K% y - " H& w% G* F1 j
- Features::Feature *nullFeatures_Feature(NULL);
! G; |5 m- c. g2 P7 A - . w2 W- L2 W+ n7 G9 w( M
- Features::ProjecTCurveBuilder *projectCurveBuilder1;. P! c3 r+ M7 _1 J! f, w- P
- ]& ]$ P L! O9 e- |* |- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);
$ @8 R; f0 g# G7 b! g
1 `0 u/ T6 c( g' L J* w0 `- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);
' z. o) ~) g1 G# N) B0 A+ E3 r - ! [$ W9 g9 X6 A$ P
- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);
& N3 p, d: V) T, R1 v+ G
% c5 P& }) e9 c+ S4 M- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
$ n9 a4 @9 d; v d- i8 F" T
, p4 m5 d; @( k. b- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);2 h, L; g0 F: \9 C& E( C0 O
- 3 {* m2 _' M5 c X* d
- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);7 G1 p, j5 u5 Q: ]1 e
; @1 w( J& s/ q+ b/ I% [+ Q- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
# L3 W; o5 e) ], j! w- X - 4 |8 b3 }8 q: l4 u* O5 d6 P/ s' D
- int size = (int)inputObjects.size();! u0 C4 a) @3 M' P9 Q
- std::vector<IBaseCurve *> curves1;1 c/ C$ j! I1 z" o) x
- for (int ii = 0 ; ii < size; ++ii)+ h# @8 b7 i1 \% c
- {' Y% L, A. ?4 r# o
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));$ _" v$ H. ]3 C2 H4 u7 {# m
- }
9 t; G' C/ p9 w7 e
. s1 d @. ]1 e9 F! p% ]7 M& C- NXOpen::CurveDumbRule *curveDumbRule1;
S# e2 y1 F3 b+ Z" h - ) L3 |! w) ?: G0 x& X1 |" A
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
9 q" L4 T& C, W. L5 ^1 s - / ^5 M/ i, U# D6 }; `1 f
- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
, f2 D G4 l& Z0 Y6 @, M) d - % N' C1 g' F& b! p+ Y1 V; k7 `
- std::vector<SelectionIntentRule *> rules1(1);# L! g U$ z, W% N! T
- rules1[0] = curveDumbRule1;/ s5 ?3 C6 {( S3 U
- NXObject *nullNXObject(NULL);' o; W: W0 F8 {9 p
- Point3d helpPoint1(0, 0, 0);
# Q0 V1 ]/ ~: j' { - projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
' _ }1 |# Z3 @$ x, X - * t. o+ }, \5 D6 Y1 [
- plane1->Evaluate();
1 H- @9 I2 N; T ` - , f" L& {* D) _# O, ?
- projectCurveBuilder1->SetPlaneToProjectTo(plane1);/ H5 g" i m, E, E# v* j$ @8 i
- 3 e! x( T- U; G0 m3 }) n
- projectCurveBuilder1->SetGapOption(true);) ^$ t6 d0 V4 N8 m3 p2 F
- , [8 q+ ] p J: K* F4 u r' G
- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);; R U) G L1 {6 c9 k
+ y5 |6 [3 U7 f; ?, W- NXObject *nXObject1;
' i4 T% n2 t$ s3 {: y: q/ k - nXObject1 = projectCurveBuilder1->Commit();
p, A$ _, Y' b5 e$ O0 @ - 8 ]# r/ \* |6 W* @5 w3 _. |) G
- projectCurveBuilder1->SectionToProject()->CleanMappingData();
9 x8 G$ F( F0 o9 [4 W' ^ O1 W
$ Y5 a" B4 K% r. d5 p/ E- projectCurveBuilder1->Destroy();
$ G; |6 I7 X( b0 z/ i$ m$ m - - G0 H( w0 N' Y/ h0 M
- }, Q# t/ R! t% M8 w9 d2 i
- catch(exception& ex)* |% Y f( @- h
- {
9 y: p! I! d# I' Z' P - //---- Enter your exception handling code here -----& f% S- z' k9 {% X* D
- errorCode = 1;
' u- ^, I; V. M. O - trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
% i1 u6 l$ A1 X* G8 @6 m; J - }
$ q& ^8 s7 X# s$ M* Y r3 ^8 Y
$ R/ h, B# B" N4 d) ~" j. d1 C- return errorCode;
* a% w1 X& m. F" B" ^ w2 \5 c - }. [' c3 D. v2 W5 d8 w
复制代码
" Y6 _; p! @8 W) n8 G# k& R+ C2 g
5 G* T1 m' {) Q' m% v" g! P( E1 q k3 l$ z4 B! y2 V3 d
|
|