Приветствую Вас, Гость! Регистрация RSS

DelphiVS

Воскресенье, 01.12.2024
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Усечь кривую API
MaxaДата: Среда, 30.09.2009, 05:48 | Сообщение # 1
Школьник
Группа: Администраторы
Сообщений: 22
Репутация: 0
Статус: Offline
Немогу найти в манах про использование функции Усечь кривую, а необходимость такая есть. как юзать данную функцию? какие параметры?

Для примера:
Есть окружность пересеченная отрезком, нужно Усечь нижнюю часть окружности...
kscircle(100,100,50,1);
kslineseg(40,90,160,100,1);

 
MaxaДата: Среда, 30.09.2009, 05:49 | Сообщение # 2
Школьник
Группа: Администраторы
Сообщений: 22
Репутация: 0
Статус: Offline
var
kompas:KompasObject;
d2d:ksdocument2d;
cur,ln:reference;
x1,x2,x3,y1,y2,y3:double;
m2d:ksMathematic2D;
arr:ksdynamicarray;
par:ksMathPointParam;
begin
//подключаемся к компас
kompas:=KompasObject(GetActiveOleObject('Kompas.Application.5'));
//подключаемся к активному чертежу
d2d:=ksdocument2d(kompas.ActiveDocument2D);
//рисуем окружность и отрезок
cur:=d2d.ksCircle(100,100,50,1);
ln:=d2d.ksLineSeg(40,90,160,100,1);
//подключаемся к мат вычислениям
m2d:=ksMathematic2D(kompas.GetMathematic2D);
//параметры точки
par:=ksMathPointParam(kompas.GetParamStruct(ko_MathPointParam));
//структура массива точек
arr:=ksdynamicarray(kompas.GetDynamicArray(POINT_ARR));
//если пересечение есть
if m2D.ksIntersectLinSCir(40,90,160,100,100,100,50,arr)=true then
begin
//считываем первую точку
arr.ksGetArrayItem(0,par);
x1:=par.x;
y1:=par.y;
//считываем вторую точку
arr.ksGetArrayItem(1,par);
x2:=par.x;
y2:=par.y;
//усекаем
//y2-10 делаем специально, чтобы точка принадлежала нижней части усеченной кривой
d2d.ksTrimmCurve(cur,x1,y1,x2,y2,x2,y2-10,1);
end;
 
  • Страница 1 из 1
  • 1
Поиск: