iCAx开思工具箱
标题:
通过点创建样条曲线
[打印本页]
作者:
yxjizyh
时间:
2008-5-15 10:51
标题:
通过点创建样条曲线
/* B-spline parameters */
int degree = 3;
int periodicity = 0;
int num_points = NUMBER_POINTS;
/* Point/slope UFCurve attribute array */
UFCurve.PtSlopeCrvatr[] point_data = new UFCurve.PtSlopeCrvatr[NUMBER_POINTS];
/* Arrays of user's defining point data */
double[] parameters={0.00, 0.17, 0.32, 0.45, 1.23};
double[] points = {1.1000, 0.5320, 2.0000,
1.5240, 0.6789, 2.3000,
2.0000, 0.9000, 3.5956,
2.3456, 1.3456, 3.7890,
3.1000, 2.4567, 3.3214};
int[] slopeTypes = { UF_CURVE_SLOPE_DIR,
UF_CURVE_SLOPE_AUTO,
UF_CURVE_SLOPE_NONE,
UF_CURVE_SLOPE_DIR,
UF_CURVE_SLOPE_VEC};
double[] slopeVecs = {1.2300, 5.0506, 4.0360,
0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000,
0.5000, 1.0000, 0.5000,
1.0000, -2.0000, 1.0000};
int[] crvatrTypes = {UF_CURVE_CRVATR_NONE,
UF_CURVE_CRVATR_AUTO_DIR,
UF_CURVE_CRVATR_NONE,
UF_CURVE_CRVATR_VEC,
UF_CURVE_CRVATR_VEC};
double[] crvatrVecs = {0.0000, 0.0000, 0.0000,
1.0000, 2.5780, 5.6700,
0.0000, 0.0000, 0.0000,
1.0000, -1.0000, 1.0000,
-1.0000, -1.0000, -1.0000};
int i, save_def_data = 1;
Tag spline_tag;
for (i= 0; i<NUMBER_POINTS; i++)
{
point_data.point= new double[3];
point_data.point[0] = points[3*i];
point_data.point[1] = points[3*i+1];
point_data.point[2] = points[3*i+2];
point_data.slope_type = slopeTypes;
point_data.slope= new double[3];
point_data.slope[0] = slopeVecs[3*i];
point_data.slope[1] = slopeVecs[3*i+1];
point_data.slope[2] = slopeVecs[3*i+2];
point_data.crvatr_type = crvatrTypes;
point_data.crvatr= new double[3];
point_data.crvatr[0] = crvatrVecs[3*i];
point_data.crvatr[1] = crvatrVecs[3*i+1];
point_data.crvatr[2] = crvatrVecs[3*i+2];
}
/* Create B-spline UFCurve */
theUfSession.Curve.CreateSplineThruPts(degree,
periodicity,
num_points,
point_data,
parameters,
save_def_data,
out spline_tag);
theUfSession.Part.Save();
return 0;
}
public static void Main(string[] args)
{
theSession=Session.GetSession();
theUfSession= UFSession.GetUFSession();
fs = new FileStream("EX_Curve_CreateSplineThruPts.log", FileMode.Create, FileAccess.Write);
w = new StreamWriter(fs); // create a stream writer
w.Write("Log Entry : \r\n");
w.WriteLine("--Log entry goes here--");
w.Flush(); // update underlying file
if ( File.Exists("EX_Curve_CreateSplineThruPts.prt") )
{
w.WriteLine("Remove EX_Curve_CreateSplineThruPts.prt file from <roject Folder>\\bin\\Debug !!");
w.WriteLine("EX_Curve_CreateSplineThruPts.prt already exists. !!");
w.Close();
return;
}
try
{
EX_Curve_CreateSplineThruPts curveTest1 = new EX_Curve_CreateSplineThruPts();
if (curveTest1.Execute()==0)
{
w.WriteLine("Successful");
}
else
{
w.WriteLine("Failed");
}
}
catch(NXException e)
{
w.WriteLine("Exception is: {0}", e.Message);
}
w.WriteLine("End of Log File");
w.Close();
}
public static int GetUnloadOption(string dummy)
{
return UFConstants.UF_UNLOAD_IMMEDIATELY;
}
}
}
请问这里的
double[] slopeVecs = {1.2300, 5.0506, 4.0360,
0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000,
0.5000, 1.0000, 0.5000,
1.0000, -2.0000, 1.0000};和
double[] crvatrVecs = {0.0000, 0.0000, 0.0000,
1.0000, 2.5780, 5.6700,
0.0000, 0.0000, 0.0000,
1.0000, -1.0000, 1.0000,
-1.0000, -1.0000, -1.0000};
数组中的具体值应该怎样确定的, 和数组double[] crvatrVecs是什么意思?
请各位帮忙,谢谢了!
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3