|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
( c7 u1 F7 \& @1 `+ R+ L3 n. n' p$ X0 H0 X" b% s
' W$ e2 C% [( w$ x7 z1 wUG NX二次开发源码分享: NX Open C++ 创建投影曲线 project curves0 k5 S# p6 L/ M: H
- T* `& Z* q; B# l
此处使用的是 通过面的法向创建投影曲线,可以参考下!
! Z; Z) n* Z e/ f4 ~. M% Z7 _& D) M0 b! V6 x5 Z. \# W4 G' }# R
# f# F7 @. }; U& O4 @$ M- V7 G7 C* f% S5 }
! ?( V8 C4 E( k, U# ?: `0 ?
8 e: S% t) V' h1 Q! \
+ y8 O! ?7 t8 g, ]1 j$ \; G
1 x: m& U: I/ n4 L/ t" [& h0 {
NX Open C++ 创建投影曲线 project curves
5 |4 K! c% t3 Y' U7 u
; A9 E1 @1 i, A/ W0 S# c$ a& n: ~& y4 {- U% c$ e2 K6 _, q
1 G! B3 w9 U, |$ h- int trimSteels::project_curves(vector<TaggedObject *>inputObjects,Plane *plane1)% L& h) @8 W: t& ^1 ~4 i3 h
- {+ C2 ]2 m# K- R, `6 G1 p7 }; s
- int errorCode = 0;
( W. N K z* q& u/ d. X2 i - try4 m7 j" O% f" e" j
- {0 ?% ]1 }! |6 o/ {% P
- // createProject curves- u4 }+ R( H7 E4 D0 U
" Q" K$ B# D' M2 D: e- _- Features::Feature *nullFeatures_Feature(NULL);
* t/ H% z2 V* l* x* f! q* n
' E' |# _4 y8 ^- Features::ProjecTCurveBuilder *projectCurveBuilder1;
: A/ R% C* {3 _; f$ x7 f0 F1 I - ' o) R5 H* ]/ z$ m7 o$ [9 d
- projectCurveBuilder1 = workPart->Features()->CreateProjectCurveBuilder(nullFeatures_Feature);% M. }$ O# p9 Y5 q
- + O: I, B m# ?9 o: [( }# O7 X# D
- projectCurveBuilder1->SectionToProject()->SetDistanceTolerance(DISTANCETOLERANCE);( Q: Q9 ^6 P5 J4 }
4 b4 s: i2 n: D% T* T' H0 U- projectCurveBuilder1->SectionToProject()->SetChainingTolerance(CHAININGTOLERANCE);% Z" T+ l% y5 f$ u c
- + |4 z, v9 y3 \, l) o
- projectCurveBuilder1->SectionToProject()->SetAngleTolerance(ANGLETOLERANCE);
: h" o+ ]: v3 _% v
, {& ?& a* j, p2 p. z2 d i- projectCurveBuilder1->SectionToProject()->SetAllowedEntityTypes(Section::AllowTypesOnlyCurves);
1 D( b' Y+ I- h+ P
" F2 N/ v1 V& }: c; F1 C1 y- projectCurveBuilder1->CurveFitData()->SetTolerance(DISTANCETOLERANCE);
# ?5 w: n# M. { - # e. u: F, H9 {
- projectCurveBuilder1->CurveFitData()->SetAngleTolerance(ANGLETOLERANCE);
5 h2 ^% A# A" S& s; @" ] - * z! C3 u0 d) k
- int size = (int)inputObjects.size();: p" X, y* v, B
- std::vector<IBaseCurve *> curves1;
: O( }7 g6 o2 q0 _ i7 r - for (int ii = 0 ; ii < size; ++ii) p' F' ^% l( P6 h/ f( B
- {, v" G+ N/ ~7 e# r* [) J$ s4 A
- curves1.push_back(dynamic_cast<IBaseCurve*>(inputObjects[ii]));: w, `' G6 n8 M3 Y( z& n" ~. y* q2 I' A
- }: ^$ y+ W5 h& e! K# O5 W
, x' F6 @# u k: e1 y- NXOpen::CurveDumbRule *curveDumbRule1;9 G7 W6 W& U* W& g$ Q8 [
- & y9 g3 @- ]* \, m" ^8 s% n
- curveDumbRule1 = workPart->ScRuleFactory()->CreateRuleBaseCurveDumb(curves1);
# s# c& _) Y$ X2 n, z( F9 a: M' P
: O2 G, B7 N! B3 p2 H5 I+ ^# H- projectCurveBuilder1->SectionToProject()->AllowSelfIntersection(true);
: q7 i- Z4 |+ r1 A9 P
9 d* L. @1 K) t6 y7 ~* g- K& d- std::vector<SelectionIntentRule *> rules1(1);
% I0 o6 N# {! _5 `5 ` l7 j - rules1[0] = curveDumbRule1;, g8 q+ p8 t8 T8 l! N& u- H
- NXObject *nullNXObject(NULL);0 t4 D+ ^3 q) F2 Y# q% k
- Point3d helpPoint1(0, 0, 0);& l' M6 n K {$ }% i+ ^
- projectCurveBuilder1->SectionToProject()->AddToSection(rules1, nullNXObject, nullNXObject, nullNXObject, helpPoint1, Section::ModeCreate, false);
% @8 G- S3 M2 A
1 U1 u" y' c1 K& h- plane1->Evaluate();3 S9 e( ^0 M3 ]' o9 {# N' t$ Z4 w
( u' D/ e$ G' w+ e' n- projectCurveBuilder1->SetPlaneToProjectTo(plane1);2 B# B; ?4 V1 P# |
- ( C! e, I5 E1 F! m$ ]; [
- projectCurveBuilder1->SetGapOption(true);
( W+ n$ G8 L' h5 y8 d y5 d
& I$ u, q/ Z, F4 G- projectCurveBuilder1->CurveFitData()->SetCurveJoinMethod(GeometricUtilities::CurveFitData::JoinGeneral);5 N( ]) d( o% y$ ?5 S6 k
- # J" ^2 @8 k& |' j! {" k6 d
- NXObject *nXObject1;
; @5 w1 e# b1 P: O1 L - nXObject1 = projectCurveBuilder1->Commit();% l5 {$ o% x# _5 g) A: ^& b+ `
7 L8 B& G1 E) B# V- projectCurveBuilder1->SectionToProject()->CleanMappingData();
6 M2 p: [5 G4 w - 2 |4 J. j3 H* }1 s
- projectCurveBuilder1->Destroy();! }: q: U7 h3 b( q8 L
, H2 J( H0 {: M# ]5 @- }3 N7 p4 V; f! ^9 H5 D. W' q! k, o3 G
- catch(exception& ex)% G, e! x" Y: u, }0 E) [1 F
- {, u% [: D6 N. l& I' f U+ S' C
- //---- Enter your exception handling code here -----# S2 a% h1 j, \- }& H7 p
- errorCode = 1;- ~4 x+ W* X9 b% O' @# K& j ]1 C
- trimSteels::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());+ y) H; K/ u# u) {+ x- m
- }
# g4 j" \1 [. P$ P - + |7 F2 f+ k9 k' m v5 |2 H
- return errorCode; _ v" }6 W8 z
- }% o: r4 j @% ]0 U0 N
复制代码
1 Q1 Z; d4 ]( G- d8 v3 O$ l+ u
* Q' x# c, s' Z( V. e
9 B9 C. T- w3 z9 v6 u: b( u |
|