Option Strict Off
* d1 f% o0 c3 z. r& wImports System
) ^3 H8 j+ S3 T( z X" q& n/ I0 h" rImports System.IO% b* n7 q5 o% x9 f9 P$ g* ?2 J6 i
Imports NXOpen# a7 a4 l: t1 f7 \4 T0 L5 |: Y g
Imports NXOpen.Features
" K5 C! x2 w2 n* fImports NXOpen.Preferences
: ]# [" ?9 U) [1 ~4 M7 nImports NXOpen.UF- ]7 H! Y; f5 G0 O# U6 J
* d+ ^! S/ D( k2 Q; U6 T2 Z
Module EX_Curve_CreateSplineThruPts
. ?7 Q- ?8 P( J" ^7 ^9 F6 A4 t$ S) {9 S4 ?3 O
Dim createMaster As Boolean = False ' set to True if creating a master file d: [# X( Y- k1 ~8 R+ J
Dim testName As String = "EX_Curve_CreateSplineThruPts"# Z- q7 \- p2 ~/ e7 v C
) f( M' a5 u# B, Q3 W7 O Dim theSession As Session7 k7 v4 ]1 @4 [: p. B' ]
Dim theUfSession As UFSession6 ^7 K0 X, V9 w- f$ u0 N4 [9 q
9 p8 H6 \' s, @7 @" \: f" A6 A Public Const UF_CURVE_CRVATR_NONE As Integer = -1
0 a. k' h; I8 m Public Const UF_CURVE_SLOPE_NONE As Integer = -1; X7 w1 L& N0 m; R* p0 Q& s* p
7 W6 Z5 H M0 f9 a% r
/ X9 @0 Z& f6 S9 P8 Q+ B
8 r) ~& z- _; _4 O) N5 @/ o" L, x" b' e* v
Function Execute(ByVal stream As StreamWriter, ByVal theUfSession As NXOpen.UF.UFSession) As Integer
, u$ Q0 }, t$ d) i& x Try! G# @ M3 A1 I
Dim PartTag As NXOpen.Tag
, E; `6 j1 W7 c x1 _0 H2 y Dim units As Integer = [UFConstants].ENGLISH
* B* {9 d- `' p g Dim PartName As String* B0 J4 J' |$ W' V
" G* L- e- j* |" l4 \ theUfSession.Part.[New](testName, units, PartTag)
; K( h' }) \* O' e theUfSession.Part.AskPartName(PartTag, PartName): f8 X7 k- A; U4 Z/ P" x$ j
stream.WriteLine("New Part File Created :-" + testName)/ R# b* j/ L, H9 v+ f2 ~: k; `
( z/ X9 b7 l6 n$ P3 W 'B-spline parameters
3 T' [# e) u# ?5 }6 d stream.WriteLine("CreateSplineThruPts Data Creation:-")
# T. _6 q% U) q9 `7 }" p. d/ C; b! z Dim degree As Integer = 3
$ y& k9 Z" ]2 X( v5 u! q' N6 z Dim periodicity As Integer = 0
1 \' z6 f+ `0 R" V# Y/ P$ p Dim num_points As Integer = 5
1 o$ O% _4 i: @$ |
$ m8 [! j0 ~+ L& ]6 K) P2 s4 N* ^ ' Point/slope UFCurve attribute array *
4 \' i# I0 t% G& `. B" v1 k2 z Dim point_data(num_points) As UFCurve.PtSlopeCrvatr- ~1 k8 y. y2 y; g* R7 u
6 n1 d2 i9 q2 M7 q5 T9 l: M) l
'' Arrays of user's defining point data 5 `4 a! r) m1 z' W4 m2 _
Dim parameters() As Double = {0.0, 0.17, 0.32, 0.45, 1.29}* Y( B Y; g, R- w$ z* F: L
Dim points() As Double = {1.1, 0.532, 2.0, 1.524, 0.6789, 2.3, 2.0, 0.9, 3.5956, 2.3456, 1.3456, 3.789, 3.1, 2.4567, 3.3214}+ j0 @- Q* _8 S, _
; R4 ]/ ?& n6 M& q) K. J: A
Dim slopeTypes() As Integer = {[UFConstants].UF_CURVE_SLOPE_DIR, [UFConstants].UF_CURVE_SLOPE_AUTO, UF_CURVE_SLOPE_NONE, [UFConstants].UF_CURVE_SLOPE_DIR, [UFConstants].UF_CURVE_SLOPE_VEC}
# H# v% g, [8 v' Y Dim slopeVecs() As Double = {1.23, 5.0506, 4.036, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 1.0, 0.5, 1.0, -2.0, 1.0}
+ X9 a* G3 b; a6 {" d Dim crvatrTypes() As Integer = {UF_CURVE_CRVATR_NONE, [UFConstants].UF_CURVE_CRVATR_AUTO_DIR, UF_CURVE_CRVATR_NONE, [UFConstants].UF_CURVE_CRVATR_VEC, [UFConstants].UF_CURVE_CRVATR_VEC}% T# f: U( L" _# |$ S/ j* w B
Dim crvatrVecs() As Double = {0.0, 0.0, 0.0, 1.0, 2.578, 5.67, 0.0, 0.0, 0.0, 1.0, -1.0, 1.0, -1.0, -1.0, -1.0}, @& I% d+ E- _! ~
5 p0 `# T! W" M Dim save_def_data As Integer = 18 I! V0 m0 E, h4 M4 [* i
Dim spline_tag As Tag
c$ H8 ]/ R m3 K5 B0 ^+ H/ M
/ y8 H# X, Y) Z/ C# t For i As Integer = 0 To num_points - 1
6 ^ Z' q& b. P6 ^( z point_data(i) = New UFCurve.PtSlopeCrvatr4 x, _3 f7 T( _: D- [
Dim tempPoints(2) As Double
9 S: |, S u j" V tempPoints(0) = points(3 * i)
5 m# R6 V& i: k! U9 J6 q tempPoints(1) = points(3 * i + 1)
$ y# t3 _" O2 [, [ tempPoints(2) = points(3 * i + 2)
9 P; S( b/ E5 H( X! Z1 v3 H point_data(i).point = tempPoints" B! x& m+ [0 C1 E
point_data(i).slope_type = slopeTypes(i)
& @$ U& F9 S6 {2 G/ l Dim tempSlope(2) As Double; W) `, R& N; O4 p2 r5 a
tempSlope(0) = slopeVecs(3 * i)1 w( F: L: k* P+ J
tempSlope(1) = slopeVecs(3 * i + 1)
/ Q* ?' [$ q2 L# K% M$ U tempSlope(2) = slopeVecs(3 * i + 2)
0 e. b) Y# m/ X4 b: y point_data(i).slope = tempSlope3 K h; T' o% l/ Z3 W5 w8 e
point_data(i).crvatr_type = crvatrTypes(i)8 z9 T" u. ]- N ]0 a
Dim tempCrvatr(2) As Double
, {5 Q4 y: d$ Y$ y0 Y% g/ F tempCrvatr(0) = crvatrVecs(3 * i)
4 d" a' f6 s+ J: e3 G6 } tempCrvatr(1) = crvatrVecs(3 * i + 1)
& o! ?' y; g4 Q' h% `6 ], J. ]5 v tempCrvatr(2) = crvatrVecs(3 * i + 2)& C. ? b+ B) ]# {$ X) o
point_data(i).crvatr = tempCrvatr
3 ^! _3 K0 w) l6 ]5 w! x Next' |" z% W W$ ?8 v# J' i
stream.WriteLine("Successful"), J4 W5 L! Y" I
'Create B-spline UFCurve 2 {8 [+ Z3 l9 }1 Q! \9 K% I
stream.WriteLine("Create Spine Through Points= "): P3 w5 R a# w0 m
theUfSession.Curve.CreateSplineThruPts(degree, periodicity, num_points, point_data, parameters, save_def_data, spline_tag)& U) i$ }- T! _+ S4 J. j* R4 F
stream.WriteLine("Successful")+ N; y2 b$ e+ ]5 \; y
+ L/ D2 d& E( k9 a7 [ 'Ask spline thr points parameters
5 B: l1 E F2 M+ B stream.WriteLine("Query Spine Through Points= ")& F1 B# `; B( x. s9 m
Dim ask_degree As Integer) p. J6 H$ o- U& U5 L; |
Dim ask_periodicity As Integer
; [. q/ c9 A0 M0 b7 e' X Dim ask_num_points As Integer* g9 x) [5 J! _) N- } l4 N
Dim ask_parameters() As Double" O4 B( Q, j) @+ H
Dim ask_point_data() As UFCurve.PtSlopeCrvatr- T" U6 H @6 ~" w) J& S/ S
theUfSession.Curve.AskSplineThruPts(spline_tag, ask_degree, ask_periodicity, ask_num_points, ask_point_data, ask_parameters)
' o& b6 B. r: M! C( S4 Q" R" h stream.WriteLine("Successful")
4 p. t: ~$ P) X" e% j; x stream.WriteLine("SplineThruPts Data"), h2 p+ t3 M) O) K8 u3 N; J* B
stream.WriteLine("degree= " + ask_degree.ToString)
/ [4 F" S2 K7 {: s8 A stream.WriteLine("periodicity= " + ask_periodicity.ToString)
6 w, x0 y9 q: W4 ^ stream.WriteLine("num_points= " + ask_num_points.ToString)1 m! `$ ?' w t+ m+ ]
stream.Write("parameters= {")
* e+ C. R& t" r, [$ l3 |" s For J As Integer = 0 To ask_parameters.Length - 1% \' h- ^7 G$ x+ e4 H
stream.Write(ask_parameters(J).ToString)$ w: t+ h7 |; t: S; K* c$ N
if(J < ask_parameters.Length - 1)5 T" J' A7 u5 b: G* q2 q
stream.Write(",")% Z3 v" C$ K7 j8 s# t/ m
End if- K" }- f S$ _' [1 \
Next# y. G$ e0 L, H. }" K
stream.WriteLine("}")$ N# ]1 R! `& Q
4 J1 P" X4 P- `+ K& M+ s stream.Write("point_data= {")+ n6 F- D- ]4 T5 o3 h+ j! ~
For i As Integer = 0 To ask_point_data.Length - 1
7 k8 C5 [+ _: ^2 u1 @4 }+ G stream.Writeline("------------point_data[{0}]", i): D/ L/ [& _4 G: X; B9 Z2 H
stream.Write("point {")
( B, f7 t( ]' c& X$ @ For j As Integer = 0 To ask_point_data(i).point.Length - 17 \5 w4 u8 I4 D& L; n
stream.Write(ask_point_data(i).point(j))* S z# a+ I) h% }
if(j < ask_point_data(i).point.Length - 1)* `' _- c# l" m6 ?
stream.Write(",")2 G$ c1 I$ D# i
End if
! `/ ~, D* e y" ^% S2 G Next/ ^5 m# Q9 O* T1 x, ]
stream.WriteLine("}")
# E6 I/ y6 C7 h& | stream.Writeline("slope_type " + ask_point_data(i).slope_type.ToString)4 o& m: E4 B1 |" l) b8 a( S6 X
stream.Write("slope {")
5 P$ |3 w# U- ^9 c' `% L For k As Integer = 0 To ask_point_data(i).slope.Length - 1( i* `' @0 F; r J. T; U I+ F
stream.Write(ask_point_data(i).slope(k))
& }1 E$ l/ _+ R& \3 S9 Q if(k < ask_point_data(i).slope.Length - 1)
4 ^% d" V; g2 j" \6 h1 \9 I stream.Write(",")3 ~: K& P) w; x2 h+ s
End if- r# f; ^& d- w3 ~
Next
7 V4 s& i m# H; M' s5 w stream.WriteLine("}")+ `. |/ E% c- c! k5 z: l+ k7 l1 I0 z. z0 A
stream.Writeline("crvatr_type " + ask_point_data(i).crvatr_type.ToString)- t, K6 F, u* B- o# ]6 h
stream.Write("crvatr {")
8 ]9 T& J; M$ B) ]' |3 A For l As Integer = 0 To ask_point_data(i).crvatr.Length - 1, f$ u3 E! B& S d; O( y
stream.Write(ask_point_data(i).crvatr(l))
" b1 a! n- q+ Y( g! S if(l < ask_point_data(i).crvatr.Length - 1)8 K6 ~8 h, {# }$ D
stream.Write(",")
+ j# F7 W0 k, f: @2 }! ~ End if
7 I& Z) v. r/ P1 P: }( k# i1 O Next* U1 X- S" L- W
stream.Writeline("}")
" r7 C& F1 D B0 q& G* z% O2 z Next
9 X# O4 \1 @* z$ R% }1 y
& P, t" p, d. n: t4 {1 O0 Z* o2 ^ theUfSession.Part.Save()5 H8 Q' _8 P$ s: E U
9 C$ L. Q4 Y/ O/ L* C Catch ex As Exception
3 y9 i7 x% D* _/ T7 v stream.WriteLine("EXCEPTION: ", ex.Message)# H8 M" b d/ N: Z
Return 1
( ~/ p/ ?" }+ |: U( n8 \( G End Try
' I* m9 o+ V( y( ^! q Return 01 b5 O* i8 N3 M% K+ \
6 G( r9 a2 s# P }" v- {" p' g* L End Function
6 H9 j4 k6 T1 L2 ]& }5 d2 [8 B0 ~: o; h
End Module |