Option Strict Off; N: p8 D2 y: S: p
Imports System
1 ]9 F* w8 P$ v! kImports System.IO% [$ V3 C D% m1 {
Imports NXOpen2 N8 \! b3 C+ M
Imports NXOpen.Features
+ ?5 q6 r( }" D# A: Z& mImports NXOpen.Preferences
2 T- j0 R* C( ~" P3 CImports NXOpen.UF$ h4 h* ?" C% R3 s- w" n& x- V, T
4 x, }5 B. v8 w3 y/ @$ G
Module EX_Curve_CreateSplineThruPts+ m6 G4 _+ Q) ^; i( ]/ m% B
; j2 Q. J7 p9 G0 V! V' I0 x" a Dim createMaster As Boolean = False ' set to True if creating a master file
( K% q! l/ S1 H0 H0 s' d: w Dim testName As String = "EX_Curve_CreateSplineThruPts"
# Q% J, N; c/ B0 o) m9 f% q, M, E6 F; G
Dim theSession As Session0 e# e1 @- q$ I( |. q# w
Dim theUfSession As UFSession
/ s0 [. V1 |$ h) `& h; D% M, f: S) q/ k6 p( e, C4 U# R
Public Const UF_CURVE_CRVATR_NONE As Integer = -1
: v: t$ m% _1 h; v+ F Public Const UF_CURVE_SLOPE_NONE As Integer = -1
$ p! m7 q" \* [; O; F8 I
) i* K, N$ r) f. P
, [7 s: P$ l5 O9 y2 q( `6 c. Q
8 W; O S' n2 S8 O2 I
: r2 P3 }1 S5 w) _# o1 N Function Execute(ByVal stream As StreamWriter, ByVal theUfSession As NXOpen.UF.UFSession) As Integer1 I4 g+ x7 f: r& k9 E, Y
Try* H, N# b3 J5 Y+ O% v0 i
Dim PartTag As NXOpen.Tag
- H- R- K! h0 r* ?2 u* \9 k: a Dim units As Integer = [UFConstants].ENGLISH, I- M3 k! {- C8 ~; p+ T8 O G6 g
Dim PartName As String
}6 |6 v9 o, `6 @; w
- X- \" }( M; ]: u/ M theUfSession.Part.[New](testName, units, PartTag)6 [# o$ f' d' _ W; g( R' Y8 }; s6 L
theUfSession.Part.AskPartName(PartTag, PartName)
2 d$ [2 @# G; Q0 }8 @8 [- t8 m3 Z stream.WriteLine("New Part File Created :-" + testName)
' `, r) }. i9 M K
$ k: i& L S! T0 { 'B-spline parameters
4 Z( A& k+ T6 A+ r( b stream.WriteLine("CreateSplineThruPts Data Creation:-")
, }5 H n) t/ A" l: U! @2 R5 @ Dim degree As Integer = 3; \) `8 ?1 K( |; R
Dim periodicity As Integer = 0
% W7 }4 l' c g Dim num_points As Integer = 5
- A" q: R% D& X- ]/ f3 |; `0 x& [% p3 A& Z; C8 \
' Point/slope UFCurve attribute array *% A; ~& b5 S8 Z% p* {# _9 m
Dim point_data(num_points) As UFCurve.PtSlopeCrvatr
9 e* N( F5 n( Q5 ]; K9 O9 _. ?1 Y5 \) `
% p2 R+ L+ I8 T '' Arrays of user's defining point data
6 c0 L7 B5 V, ?1 N Dim parameters() As Double = {0.0, 0.17, 0.32, 0.45, 1.29}4 [0 F/ |$ k3 ]
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}
3 |8 Z3 k4 q; C0 u @
2 d4 M D p% m4 I 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}
5 B" o3 V) U8 U) k4 d- g5 ~ 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}! c( q% S& o2 ]: @' 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}, x+ |' A0 R1 D4 u- J1 t7 G
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}
' u) ?5 Z9 u5 C; `1 q9 G
& u& ^' o$ |: q% i+ W" F Dim save_def_data As Integer = 1
) @! Y0 y/ x, B+ u9 r Dim spline_tag As Tag
9 p& U6 z* Y+ e) n& X: O% ^ U" d; v" m
For i As Integer = 0 To num_points - 16 |$ u/ n9 _. M3 |4 C6 S% `4 I
point_data(i) = New UFCurve.PtSlopeCrvatr- Z8 O1 w {7 I; m
Dim tempPoints(2) As Double; o' x5 p* g; N, z/ \
tempPoints(0) = points(3 * i)
/ ]7 T/ O4 D# j3 o) R; v( ]% ` tempPoints(1) = points(3 * i + 1)
9 h2 f' C, g* ~7 Q& W tempPoints(2) = points(3 * i + 2). u! P: I1 R0 N, U
point_data(i).point = tempPoints9 r2 a' T' \9 P2 E" W* b' B* }
point_data(i).slope_type = slopeTypes(i)
) k- ?5 v4 u6 o k Dim tempSlope(2) As Double# F: J) ]9 Z4 b k8 H( Z
tempSlope(0) = slopeVecs(3 * i)( x$ c/ @" m0 G3 S+ [
tempSlope(1) = slopeVecs(3 * i + 1). X- c8 {7 g+ B# J9 n
tempSlope(2) = slopeVecs(3 * i + 2)
5 I% `# C! [# i point_data(i).slope = tempSlope
% g+ V6 k2 u% [, c7 T point_data(i).crvatr_type = crvatrTypes(i)9 H! X: a; ~( K8 N! k
Dim tempCrvatr(2) As Double
" ~ X- ~; O. S tempCrvatr(0) = crvatrVecs(3 * i)# r4 \6 \! t8 _
tempCrvatr(1) = crvatrVecs(3 * i + 1). }* y" j: v, I
tempCrvatr(2) = crvatrVecs(3 * i + 2)
$ z5 E, L* j1 w4 D: F, d) }! r point_data(i).crvatr = tempCrvatr
' o7 J/ c2 q& p; C* _ Next
% Z: L7 b2 K3 W4 z* N) z stream.WriteLine("Successful")
( {9 R1 @: F# k$ D7 S' T5 Q) n 'Create B-spline UFCurve
4 @6 s+ ~8 k/ s0 U; z- T stream.WriteLine("Create Spine Through Points= ")
% z' e9 u2 R6 ]+ B- k$ G ]7 y theUfSession.Curve.CreateSplineThruPts(degree, periodicity, num_points, point_data, parameters, save_def_data, spline_tag)* z L$ R/ E& o$ H! E& y. m
stream.WriteLine("Successful") g o- L4 Z: q- _. @# c
1 c0 w6 B; ^" [4 |, z4 }* W 'Ask spline thr points parameters
& b; f3 @1 z! i- a& b7 T/ K stream.WriteLine("Query Spine Through Points= ")
+ b" B1 H& u! D8 O- f; L3 ?, g Dim ask_degree As Integer
0 R% `$ M( G; o% n( [8 i Dim ask_periodicity As Integer
( u( z! A& _: ^ Dim ask_num_points As Integer7 `4 t( c3 Z* K
Dim ask_parameters() As Double; E) n6 e; H9 _' n7 Q1 S
Dim ask_point_data() As UFCurve.PtSlopeCrvatr
# ^. w" N1 r% R/ Y# S( O+ [ theUfSession.Curve.AskSplineThruPts(spline_tag, ask_degree, ask_periodicity, ask_num_points, ask_point_data, ask_parameters)+ h3 V5 V' T) `7 C+ \
stream.WriteLine("Successful")
6 l2 y/ P1 Q( V1 O" O stream.WriteLine("SplineThruPts Data")
6 V+ W3 |8 Q' x1 Y$ X9 @ stream.WriteLine("degree= " + ask_degree.ToString)
! X# i; u8 Y9 m" D6 G' H# Q$ ~# q stream.WriteLine("periodicity= " + ask_periodicity.ToString)" H! `8 h3 O$ m) p4 ]& \
stream.WriteLine("num_points= " + ask_num_points.ToString)
1 Y2 H4 D K5 M F stream.Write("parameters= {")
/ `1 T Y/ ~( I! q# q% g: a For J As Integer = 0 To ask_parameters.Length - 1
0 m% l% {7 z1 j, d2 n2 r9 S! h; X stream.Write(ask_parameters(J).ToString), N% v0 d( p$ Q6 h$ T! u: m0 |2 ~
if(J < ask_parameters.Length - 1)
3 p) j2 B9 Y$ e+ ?/ V stream.Write(",")+ I W I& d2 C/ l9 L! `
End if
# J* H9 Y+ z N& L- ?: h Next9 b$ m3 M! L) {7 V( z, E
stream.WriteLine("}")
/ f. l6 t/ n8 H* k" t1 N3 T0 r, c' u' W- h" k
stream.Write("point_data= {")
0 I( F# B9 I5 v% C4 C& s( h3 Z For i As Integer = 0 To ask_point_data.Length - 1
/ M. C7 Q5 g9 d% F _! r stream.Writeline("------------point_data[{0}]", i)
) c6 p4 A. F0 P q6 z stream.Write("point {")$ n! W; _2 i# D/ W; o
For j As Integer = 0 To ask_point_data(i).point.Length - 1( m. X' W& a! {8 o, K
stream.Write(ask_point_data(i).point(j)), t( M3 |( {, {6 J
if(j < ask_point_data(i).point.Length - 1)
2 }( i4 L" P Q, Z d1 n; L stream.Write(",")
& L# B- d u, ]# K" v0 r End if0 O5 I) r" C& d9 ? h
Next
/ i2 v( g' ?$ X; j3 ] stream.WriteLine("}")0 ]% ~( F% Z6 |& I! H# n8 Q
stream.Writeline("slope_type " + ask_point_data(i).slope_type.ToString)
8 p8 F$ L; J" Q0 y% v7 G stream.Write("slope {")
) `2 V* [) E' f. f2 I. R/ Q For k As Integer = 0 To ask_point_data(i).slope.Length - 1/ Y( b7 d% X5 U9 ]8 e5 C
stream.Write(ask_point_data(i).slope(k))5 M6 I6 L6 k) R
if(k < ask_point_data(i).slope.Length - 1)4 z9 \3 i5 L9 V0 `* M* M m
stream.Write(",")5 q/ [ N3 P+ x1 f& u9 I3 q
End if
+ l' }. U& I( {1 p Next
" T" F6 B" R2 b stream.WriteLine("}")
3 `4 k- q0 X- T5 C stream.Writeline("crvatr_type " + ask_point_data(i).crvatr_type.ToString)- B0 M/ |( m+ c9 b+ x; K
stream.Write("crvatr {")5 Y) v4 J: I8 I. n
For l As Integer = 0 To ask_point_data(i).crvatr.Length - 16 ~# h: A" R" C0 d, I5 _5 e0 i
stream.Write(ask_point_data(i).crvatr(l))
1 I0 Y4 R7 D/ c0 f) k6 ~3 E$ m- C if(l < ask_point_data(i).crvatr.Length - 1)
6 c9 d' C4 \6 H) H stream.Write(",")0 s# v; D: i! c: \1 }0 |: H
End if
7 i8 w) t/ H. a7 g% {+ ?/ I0 Z Next
& s9 D; A2 s' @ stream.Writeline("}")2 B, B; m7 a; e
Next
5 i7 M) @# M( s0 q1 K# e. g/ e* F" V
theUfSession.Part.Save()
- O' P! J0 W$ s0 Y. p: q7 \ o( B3 J7 s3 q
Catch ex As Exception
" y, l5 Z2 w( u8 |" Y- x2 B stream.WriteLine("EXCEPTION: ", ex.Message)
, k6 l2 M6 @7 |, U Return 1
# M8 R1 ? J- A8 x7 F! e End Try: u7 r* n0 \8 f
Return 0
% }: _1 v$ ^$ K3 ?6 E+ A& ?! ^& x) Y5 o# d7 W" m
End Function. x+ s/ L1 f: F8 Q" |
9 L1 O( o6 m+ _
End Module |