Option Strict Off
$ U) e. _2 }8 p5 ]$ L9 sImports System- x# C% a4 K. {
Imports System.IO1 ]$ o6 q; ]) J m
Imports NXOpen) l4 i2 ^7 m3 M$ n1 [
Imports NXOpen.Features* S! S3 w5 R# F S6 M
Imports NXOpen.Preferences. X x }' r8 L7 w4 [% y
Imports NXOpen.UF
1 |1 ?% B& @$ I8 ]6 W
! [: [' c9 x1 D% j6 L0 v9 tModule EX_Curve_CreateSplineThruPts
( i9 a# o& W4 h! h1 n& o2 _
4 F4 i9 R1 T6 w Dim createMaster As Boolean = False ' set to True if creating a master file
3 J' \2 X& L8 {' O/ m2 r6 E Dim testName As String = "EX_Curve_CreateSplineThruPts"
/ ` r# I( k( b2 z M! _1 M# K9 o- E/ K; M P
Dim theSession As Session
# `3 V! u8 P6 T! z$ _& @ Dim theUfSession As UFSession
- l' R {. s. ?) m
3 {( V$ C# x/ h Public Const UF_CURVE_CRVATR_NONE As Integer = -1/ v5 E2 j* t) n
Public Const UF_CURVE_SLOPE_NONE As Integer = -1
0 ]/ u0 { ?3 z$ E* ~
4 X) {1 G7 z8 x0 m" h$ O: r0 X% D( k& |# @/ k5 ?0 B
' ^' J. D0 Z7 [" p" Z: I" e. |4 y- q" Q3 R7 G( e3 y7 I3 }
Function Execute(ByVal stream As StreamWriter, ByVal theUfSession As NXOpen.UF.UFSession) As Integer; K8 G! N; C0 Y6 V- v
Try
- o6 y' ]4 _4 a V% Y) n Dim PartTag As NXOpen.Tag. p: X* B& z' |9 z0 ^/ o2 p
Dim units As Integer = [UFConstants].ENGLISH
' t T4 c! f% l* R8 n" w Dim PartName As String% S6 g) _, E: S1 E1 m
4 ~. d* c |& X% g0 W+ `
theUfSession.Part.[New](testName, units, PartTag)
7 n% ~& q# r, ]- e" i0 p f q theUfSession.Part.AskPartName(PartTag, PartName)$ i2 K. D) ?5 s0 D' O8 e/ m
stream.WriteLine("New Part File Created :-" + testName)
( G$ E6 A( I' p8 c' O
# [- O% s: j. }0 g2 H 'B-spline parameters7 [! C1 {- [/ s1 u+ Z
stream.WriteLine("CreateSplineThruPts Data Creation:-")
, T" m; @& k, e7 T9 [0 A8 n" { Dim degree As Integer = 3
9 o# z) f+ K5 p4 Q, D# z Dim periodicity As Integer = 0
- ~+ n' \: A n Dim num_points As Integer = 5
$ g: }' {1 J7 N- m& R+ I; O) U, m+ R& T, G& n7 d2 d
' Point/slope UFCurve attribute array *
/ \0 V' ~; O. m5 l. |$ K; ~7 D. { Dim point_data(num_points) As UFCurve.PtSlopeCrvatr
# y. Q8 i8 S% n# Y4 s3 {2 P
9 U" F8 _- Y6 r8 ~0 O H '' Arrays of user's defining point data
" e& S' Q* l* Y E Dim parameters() As Double = {0.0, 0.17, 0.32, 0.45, 1.29}
' |! N( S# d: b! I5 ~" ? `, r 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} w8 T6 G) z s0 |0 h
: q2 U6 V% q3 C9 [ 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}2 @0 s5 ^' [( d2 Q
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}* T. W. m0 O: J! a5 I
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}( v- P4 i; ^) Q; \# Q' d% k0 c
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}
- x" e; q5 Q3 V. m, _. W5 f' ~. T# @7 B! T; W" E& _; W. V& N
Dim save_def_data As Integer = 1
" W, j9 z4 G1 ? Dim spline_tag As Tag
* P7 f" {' w0 o4 h3 q8 E( M+ h9 J& o7 e! ?. O) {( O% J1 G
For i As Integer = 0 To num_points - 1
+ ~1 R# b0 r& h. z* _. [ point_data(i) = New UFCurve.PtSlopeCrvatr
0 F; X* s/ T6 C Dim tempPoints(2) As Double7 Q- K _8 x7 ^4 k. p
tempPoints(0) = points(3 * i)
9 C1 e) H ^: o' X5 E tempPoints(1) = points(3 * i + 1)
. x9 e ? }3 R' r2 a; K! _% x. z2 z tempPoints(2) = points(3 * i + 2). P; B2 p$ Y$ F3 [
point_data(i).point = tempPoints8 l+ z5 L6 I) L* y1 D& y; G
point_data(i).slope_type = slopeTypes(i)
7 }# _) O N+ H* d( Q Dim tempSlope(2) As Double
& Y6 ~% T7 F6 z4 ` tempSlope(0) = slopeVecs(3 * i)# n8 [1 P. j* L' a$ t
tempSlope(1) = slopeVecs(3 * i + 1)$ u+ S5 t# Z. L0 T6 T$ Q
tempSlope(2) = slopeVecs(3 * i + 2)1 s) B# L6 Z/ f3 `* [
point_data(i).slope = tempSlope
$ a+ w% y' a5 Z4 N( w7 E: v point_data(i).crvatr_type = crvatrTypes(i)
! q9 K/ d9 H0 U/ b" i Dim tempCrvatr(2) As Double% n' S1 f$ h3 C; U# Z- c
tempCrvatr(0) = crvatrVecs(3 * i)
9 H8 h4 M l7 \5 }- t2 V n* } tempCrvatr(1) = crvatrVecs(3 * i + 1). ]+ I( A# d! A$ c6 |& ?; ]! C
tempCrvatr(2) = crvatrVecs(3 * i + 2)
G: o3 b! `3 u- ` point_data(i).crvatr = tempCrvatr) p/ }+ z# a) B+ K: G; Q* D9 C0 h
Next1 `2 M) U' R6 |! K( q
stream.WriteLine("Successful")
1 j2 l7 ], i8 g# l" m 'Create B-spline UFCurve " O4 B W. s% `; M
stream.WriteLine("Create Spine Through Points= ")
' ?' `# x4 H( U/ a% c0 U/ ^3 @) g theUfSession.Curve.CreateSplineThruPts(degree, periodicity, num_points, point_data, parameters, save_def_data, spline_tag)
* h5 M4 v! a i. ]* d$ A) j stream.WriteLine("Successful")
+ C7 `( T2 D, ?/ G, m0 ]1 K( s+ R0 |- M
'Ask spline thr points parameters
$ @; L& E" n/ b- ?6 v, w% G stream.WriteLine("Query Spine Through Points= ")
: D( g. Z9 I: L& K$ D# a Dim ask_degree As Integer
' w. E, t7 W6 c/ L; P" G' g2 L Dim ask_periodicity As Integer! [3 t R: d/ A0 F
Dim ask_num_points As Integer
/ ^/ w$ `9 b0 ] Dim ask_parameters() As Double& S4 }) |& ?- l
Dim ask_point_data() As UFCurve.PtSlopeCrvatr
" {/ Z( D% T" I2 f theUfSession.Curve.AskSplineThruPts(spline_tag, ask_degree, ask_periodicity, ask_num_points, ask_point_data, ask_parameters)
% o5 s, D+ p X5 B stream.WriteLine("Successful"): ]- S- l2 V2 V; C% |4 _% u3 A
stream.WriteLine("SplineThruPts Data")
' S k9 F5 ]9 r) f- H" H2 O stream.WriteLine("degree= " + ask_degree.ToString)$ A& C9 ^) l# D3 D! I7 n2 F9 t0 s
stream.WriteLine("periodicity= " + ask_periodicity.ToString)# ?: J4 s y1 j6 u' F: g6 d( }1 L; v
stream.WriteLine("num_points= " + ask_num_points.ToString)
# z! T) d, E6 x: z8 p stream.Write("parameters= {")
3 O: i7 c, P5 X7 l7 H% C- O For J As Integer = 0 To ask_parameters.Length - 1. q# K% I) k5 P
stream.Write(ask_parameters(J).ToString)
; q$ T) p, \; N7 S if(J < ask_parameters.Length - 1)
3 w. L; F' f+ M5 q/ ?2 T4 G stream.Write(",")" c% H4 p0 F0 J* C
End if1 N( \7 C5 u: \6 S9 x: u3 h
Next' Z1 N3 r* n/ c) R
stream.WriteLine("}")% `7 B' k; y+ r0 ~9 i
) |* ~9 J, J$ q/ E! l9 I8 N3 W
stream.Write("point_data= {")' Y* _. |4 I% A4 `
For i As Integer = 0 To ask_point_data.Length - 1
) \0 m. s: \6 C+ n* J) a stream.Writeline("------------point_data[{0}]", i), u- c9 a; R6 g8 _9 x3 B0 B
stream.Write("point {")
% k4 J! A$ R: K; l4 A6 q# C For j As Integer = 0 To ask_point_data(i).point.Length - 1
5 s! ^ ]" y$ i% G- T stream.Write(ask_point_data(i).point(j))
0 @* T2 `8 P# D! \ if(j < ask_point_data(i).point.Length - 1)- `) e$ w: x7 P- E+ `( a
stream.Write(",")
8 U" Z7 s3 y- q1 M9 m X End if) R( [) o4 ]; @4 x
Next' x: m5 W7 |/ k- n) T
stream.WriteLine("}")
/ K" p+ C( C- T9 X stream.Writeline("slope_type " + ask_point_data(i).slope_type.ToString), p/ k# A9 k1 v3 z0 g. b. j' B5 c
stream.Write("slope {")1 j& g8 I" |5 Y s1 t' O
For k As Integer = 0 To ask_point_data(i).slope.Length - 18 Z c* W# _) F3 ?, T
stream.Write(ask_point_data(i).slope(k))
" [1 M" j; }4 M" C" n4 Q& u if(k < ask_point_data(i).slope.Length - 1)
" x! g4 d' t+ e stream.Write(",")& q; b. h, U: `
End if
" S3 @, N6 E( ^# ]( v# ?# D Next/ H) b1 j- ]0 M% Y
stream.WriteLine("}")
% c! a% g- d1 }9 d( p stream.Writeline("crvatr_type " + ask_point_data(i).crvatr_type.ToString)
- H v: W4 f# R5 F, ^* f stream.Write("crvatr {")
( ^+ P* ]0 R+ y/ ~ For l As Integer = 0 To ask_point_data(i).crvatr.Length - 1
9 @5 F8 P" q, F( m* l stream.Write(ask_point_data(i).crvatr(l))
; O5 ^9 j4 m6 J" q0 E: I if(l < ask_point_data(i).crvatr.Length - 1)
9 P: ^! }, E1 E z" @ stream.Write(",")
8 l5 G9 O# A* Q8 e, ~+ C End if
& I. n, c5 c" q' _/ G3 v Next
& e. G, G7 i" T& w E3 ? stream.Writeline("}")
& C+ w3 a6 m( X Next8 u1 |' X- L2 A$ o: Z! V
- O1 g/ r f' c. U# o+ Q# u
theUfSession.Part.Save()2 E/ @* r/ k1 ]4 ^; ?' m. r% f
8 y9 L2 m- w0 P Catch ex As Exception5 y5 n' Z" t" t$ X4 D% ]5 ^
stream.WriteLine("EXCEPTION: ", ex.Message)
5 K& s6 {- h% n2 T- h Return 1 m: h% p+ f5 S* d! ~% ^% \8 Z
End Try
9 {3 u3 e" f+ B: ? Return 0: P4 \+ s# e* V* Q8 X
9 x2 m h) F, S* C& O3 X
End Function0 S% y) V) o5 F5 D' z8 F
% h' ^; u) d- \. X6 |6 _1 @5 hEnd Module |