Option Strict Off& A% h+ r+ m. ~- m* }/ F9 U7 z- i
Imports System
. }' A+ K) i* f* y) P7 q1 g+ ]Imports System.IO
! C, T2 l" Q6 IImports NXOpen
& `4 v: ]7 [4 r, e) H% {4 n+ @ a$ NImports NXOpen.Features
. x1 }, U/ X2 H/ \Imports NXOpen.Preferences
( E \; I' n& D" EImports NXOpen.UF. `: D% _/ I) Z
# ?- t0 U( _% i. ~2 g7 h0 X" q$ lModule EX_Curve_CreateSplineThruPts/ w; i* S7 t E# _, x( {
5 f' o# V. v( F
Dim createMaster As Boolean = False ' set to True if creating a master file
$ C7 P& ?' T+ K" O6 u d$ }' N( g Dim testName As String = "EX_Curve_CreateSplineThruPts"3 V* c W2 D5 I Y0 R: v$ m
* ^4 H5 {; m& O2 }( Y0 f& y Dim theSession As Session
/ y' e# H0 q8 b Dim theUfSession As UFSession
& T" X- h1 O% ^7 T5 a* ?3 a# H$ ?$ E) l* N( \- N
Public Const UF_CURVE_CRVATR_NONE As Integer = -1
# F4 A' J: E: Z2 k, M, L8 L L i8 n Public Const UF_CURVE_SLOPE_NONE As Integer = -17 _4 o1 P% V/ X
3 P: I9 ~2 P8 h
5 j0 E* u/ q: a {/ n9 O: b' `
* s: j$ Q# ^, D+ k) t" L6 I
5 K7 Q7 l! L+ c/ a3 M Function Execute(ByVal stream As StreamWriter, ByVal theUfSession As NXOpen.UF.UFSession) As Integer0 C! K4 ]* K; j: c
Try
! Z9 y6 M; d$ _& s Dim PartTag As NXOpen.Tag
7 E# ~& ~/ G+ M& o% \* f" t Dim units As Integer = [UFConstants].ENGLISH2 L* M2 g. o9 ?1 m7 g; _% ]
Dim PartName As String
8 K: v, Z/ T! a2 C9 t5 U" M7 l! h0 G
- B% a2 d, r7 l& P) m9 X theUfSession.Part.[New](testName, units, PartTag)
- Q7 V& S1 A% d6 \9 a theUfSession.Part.AskPartName(PartTag, PartName)9 t; \+ i1 Z' T4 T+ v n: W8 g: B
stream.WriteLine("New Part File Created :-" + testName): r% {$ p0 |# l/ Y
* W" y1 s5 d/ \
'B-spline parameters! O& g) s, V. d U( d, E
stream.WriteLine("CreateSplineThruPts Data Creation:-")( b3 s0 k5 X$ i
Dim degree As Integer = 3
B9 r. n. _0 @9 ~- i Dim periodicity As Integer = 09 L' `6 Y0 B0 [& V1 `5 t" F
Dim num_points As Integer = 5
# M: E6 X& F: @! K
$ i+ g/ x6 A( j% A# C% L ' Point/slope UFCurve attribute array *2 m$ E1 v# i5 K$ F. i
Dim point_data(num_points) As UFCurve.PtSlopeCrvatr
0 k9 ^' J/ j4 M4 n( F1 V _/ n; Z- d
'' Arrays of user's defining point data
9 [! i" o" l% [# ]7 ~ Dim parameters() As Double = {0.0, 0.17, 0.32, 0.45, 1.29}
7 z9 W1 _2 ~, c2 @) P+ 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}' J9 s" i+ g A( D% Y3 o* Q. j
3 O+ M* E4 c2 x
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}; F3 _# C+ m8 F! b
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}3 z% B" P7 t8 c& B( g+ r
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}7 q) E! I. q+ x; A: T$ ?
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}
# b+ ]- _2 j9 K. \
2 o, W- Q0 _- j1 F' R% p1 L& u Dim save_def_data As Integer = 1
4 ]1 U& o8 ^, H! e, l Dim spline_tag As Tag
! b6 g8 `! Z1 J4 h, {5 T) @( ?+ y6 m! v* c! i
For i As Integer = 0 To num_points - 1
4 M1 ^5 d p- M! u7 u3 n- z9 \2 Q point_data(i) = New UFCurve.PtSlopeCrvatr
+ E: |" p! I1 N; r# W& v Dim tempPoints(2) As Double
( C$ k2 I' H$ p2 p9 V; g tempPoints(0) = points(3 * i)7 E' q+ Q5 C( B% D* T5 B
tempPoints(1) = points(3 * i + 1)
" I b0 H; T' Q5 X' q/ S" h# t. O tempPoints(2) = points(3 * i + 2)
2 T* n+ D) H* t9 P& k) e. t3 D point_data(i).point = tempPoints
! l+ \& C& w, S# @ @ point_data(i).slope_type = slopeTypes(i)
' k" h6 A5 l( ]8 S Q6 L; U Dim tempSlope(2) As Double
" j& b, `5 ^! U9 E% t tempSlope(0) = slopeVecs(3 * i)
7 c4 t4 T w# N1 q+ I8 d tempSlope(1) = slopeVecs(3 * i + 1)& z# q3 f; ?7 k9 p
tempSlope(2) = slopeVecs(3 * i + 2)
2 ^* ^5 w# C9 @. \7 e point_data(i).slope = tempSlope
3 E: ?( o; I5 r0 S) g point_data(i).crvatr_type = crvatrTypes(i): g s) e0 }8 Y; r' e3 J' i
Dim tempCrvatr(2) As Double O( z3 P" u" i- I
tempCrvatr(0) = crvatrVecs(3 * i)
- U: b" q! x3 p' T$ P- \ tempCrvatr(1) = crvatrVecs(3 * i + 1)
( c5 E8 Z0 L& X6 W tempCrvatr(2) = crvatrVecs(3 * i + 2)4 u. _- d8 b4 W: l, P$ X
point_data(i).crvatr = tempCrvatr
1 K; Q4 s: _ w8 ]$ O: j Next/ k% G& U, G% A
stream.WriteLine("Successful")& c) H5 M3 V( O4 l9 ]. v0 f$ O) P
'Create B-spline UFCurve
5 }7 V- b( }: s2 l stream.WriteLine("Create Spine Through Points= ")+ S; b; c7 c1 w
theUfSession.Curve.CreateSplineThruPts(degree, periodicity, num_points, point_data, parameters, save_def_data, spline_tag)
2 @) z& c3 U) t' L- F& Q stream.WriteLine("Successful")3 y5 t& r% M. A$ M% y
5 M$ ^* u/ k3 v% V& f" N/ R
'Ask spline thr points parameters
7 q7 s2 q+ w9 F% P stream.WriteLine("Query Spine Through Points= ")
, j9 N( g9 K2 x3 [# [0 Z+ r Dim ask_degree As Integer5 m! Q2 K+ P2 E' j/ C3 p t# M
Dim ask_periodicity As Integer
* W) D) m% y( l# T. Z Dim ask_num_points As Integer' \$ W9 |3 g8 {1 {9 ^& [, m
Dim ask_parameters() As Double( `* y1 C8 H' b0 a0 l
Dim ask_point_data() As UFCurve.PtSlopeCrvatr
, V; n6 G6 g( T7 N theUfSession.Curve.AskSplineThruPts(spline_tag, ask_degree, ask_periodicity, ask_num_points, ask_point_data, ask_parameters)0 t8 V# d3 z( Z: X9 E
stream.WriteLine("Successful")
8 W* h% u. ^* T& d! T u stream.WriteLine("SplineThruPts Data")
/ L; x; }: \6 Z0 l" G% S stream.WriteLine("degree= " + ask_degree.ToString)
8 u. a/ h/ i& _) L# Z1 s( r stream.WriteLine("periodicity= " + ask_periodicity.ToString)
0 Z4 `4 L8 J' F/ m. u* Z stream.WriteLine("num_points= " + ask_num_points.ToString)1 K* {0 P/ H% S) ~5 @
stream.Write("parameters= {")
9 S$ ^4 u9 Y& V+ l3 v' l, k+ R For J As Integer = 0 To ask_parameters.Length - 16 V4 Q! r4 ?/ ]; d- K. g3 A: q, D
stream.Write(ask_parameters(J).ToString)
\! ~2 V. b0 G' w7 A6 i if(J < ask_parameters.Length - 1): ~* _" w' a# N5 f% R! ?
stream.Write(",")/ A/ b# n' [# n' C
End if% W+ f* I3 A, N: S: Y. D/ j u
Next) l! O0 T; `. b
stream.WriteLine("}")
6 g* _( Z. N( J' k% x# ]! |0 b# E1 `6 r" k' \ u, _- O, x
stream.Write("point_data= {")* ~1 B z' R, W5 I
For i As Integer = 0 To ask_point_data.Length - 12 \# }, z/ y: n% N4 R: h
stream.Writeline("------------point_data[{0}]", i)
0 F" e* ?+ c6 n& B4 ~ stream.Write("point {")0 s( r" M5 X5 i( p, O& b% i
For j As Integer = 0 To ask_point_data(i).point.Length - 10 Z, w! D# C/ ^* d
stream.Write(ask_point_data(i).point(j))5 s1 o& J. @: w! h
if(j < ask_point_data(i).point.Length - 1)" M: o# y/ f; z, C4 _9 {$ s9 e
stream.Write(",")
$ P( U/ ` V6 Y% j; m End if" [3 K' Q! C8 `; ~$ X2 @
Next3 S" B' X" c# t( j1 m
stream.WriteLine("}")
. T4 y* \0 }* r* h3 F stream.Writeline("slope_type " + ask_point_data(i).slope_type.ToString)
, E+ D3 V8 ?" k7 y4 G$ Y stream.Write("slope {"), v( `& A" b8 P8 {' ~& v; T; Y$ @. y
For k As Integer = 0 To ask_point_data(i).slope.Length - 1
5 t4 ? u9 r4 ^0 A& u3 C stream.Write(ask_point_data(i).slope(k))
1 \5 ^; I/ g' j1 z if(k < ask_point_data(i).slope.Length - 1)
. r1 y5 J% U9 z% e stream.Write(",")1 j8 g0 a8 @" m! \
End if
4 v& G8 S! F3 r) _# Z! H Next
) M+ `5 ~6 f: v4 s1 o stream.WriteLine("}")! O3 z O4 {9 r. T+ |
stream.Writeline("crvatr_type " + ask_point_data(i).crvatr_type.ToString)
% _' |% m5 p+ `. C1 r( l stream.Write("crvatr {")
6 M% P! m* V; {, L For l As Integer = 0 To ask_point_data(i).crvatr.Length - 1" X6 N: x/ t. H8 Z$ Z/ i
stream.Write(ask_point_data(i).crvatr(l))
! m4 `! A2 o9 z/ k! \- U if(l < ask_point_data(i).crvatr.Length - 1)1 ]0 s8 ^# F) P) [# R. V; F6 z
stream.Write(",")
/ r" W7 Q9 l6 v6 }, B% p End if
4 G5 a r% S8 e/ h/ v/ |7 N! \ Next+ i' ]5 d0 w$ l
stream.Writeline("}")3 O- \3 x/ u! d9 x, r% O! ~
Next
* K8 j1 g; b8 @9 q- g- F% D h. r" O2 }" f- j
theUfSession.Part.Save()
: a' v7 }2 V: n ^7 N
- ^$ k4 ? T3 f, h+ I Catch ex As Exception
( @, L* t4 \/ m stream.WriteLine("EXCEPTION: ", ex.Message)3 s% q$ J4 `: D
Return 1
( [& D5 @$ ~. D* f6 Y, Y. A End Try1 r5 n6 S+ y/ S# z
Return 0* z) r; j$ o8 }& b/ {4 p B8 V
& t# q& W4 ]8 |' y+ |! i a: ^ End Function9 `7 R$ s7 ?' O7 u& A
3 T( n& }: `4 U
End Module |