Тема: Как создать сплайн???

нашел функцию AddSpline.
У нее параметы вершины плюс начальная и конечная касательная к сплайну.
Пытался так:
mySpline := VarArrayCreate([1, 10*3], varDouble);
{10точек * 3размерности }
и забивал значения mySpline[i] := ... поочередно для x,y,z для каждой из 10 точек
Далее писал вывод сплайна:
AcadApp.ActiveDocument.ModelSpace.AddSpline(mySpline, ' ', ' ')
' ' - пробел (если бы я нажал пробел в командной строке АвтоКада).
Но не работает.
Не могу понять, что я не учел.
Жду помощи.

Re: Как создать сплайн???

> Игорь
Пробелы не годятся - нужны два вектора с 3-мя double

Re: Как создать сплайн???

Пишу следующее:

 AcadApp.ActiveDocument.ModelSpace.AddSpline(GetSpline, GetPoint(0,0), GetPoint(0,0));

где GetSpline - набор точек Сплайна

 Function GetSpline: OleVariant;
var i : integer;
begin
  Result:= VarArrayCreate([1, 37*3+1], varDouble);
  for i:=1 to 37 do begin
   Result[1+(i-1)*3]:= XY[1,i];
   Result[2+(i-1)*3]:= XY[2,i];
   Result[3+(i-1)*3]:= 0;
   end;
end;

А GetPoint - нулевой трехмерный вектор

Function GetPoint(X, Y: double): OleVariant;
begin
  Result:= VarArrayCreate([0, 2], varDouble);
  Result[0]:= x;
  Result[1]:= y;
  Result[2]:= 0;
end;

Дельфи пишет

Разрушительный сбой

.
В чем проблема???

Re: Как создать сплайн???

Так писать нельзя,

AcadApp.ActiveDocument.ModelSpace.AddSpline(GetSpline, GetPoint(0,0), GetPoint(0,0));

Потому что для сплайна нужно указать два нулевых вектора, которые будут касательными в точках начала и конца. А когда вы задаете вектор с кооординатами(0,0)(0,0) Ругается АВТОКАД!! а не делфи.
надо писать так

procedure NewSplyne(x1 : Double;
                    x2 : Double;
                    y1 : Double;
                    y2 : Double;)
begin
if (x1<>0) or (y1<>0) then
 if (x2<>0) or (y2<>0) then
   AcadApp.ActiveDocument.ModelSpace.AddSpline(GetSpline, GetPoint(x1,y1), GetPoint(x1,y1));

end;