Нужно расчитать площадь некоторой фигуры состоящей, например из 3 основных и 1 штриховой линий.
Для использования ksCalcInertiaProperties необходимо знать указатель на группу(можно было бы использовать ф-цию ksMakeEncloseContours но она возвращает 0) Как можно по другому получить указатель на группу этих отрезков(линий, кому что нравится)(по точке внутри этого контура указанного пользователем) :!:
компас 5.11
У меня ksMakeEncloseContours работает без проблем :shu:
выложи код глянуть
Вот исходники:
function TDetailForm.GetSquare: double;
var pObj,g,h: Integer;
x, y: Double;
j, typeObj, k: integer;
rez: integer;
iKompas: KompasObject;
iDoc : ksDocument2D;
info : ksRequestInfo;
iMat : ksMathematic2D;
inertia : ksInertiaParam;
hatch : ksHatchLineParam;
Rezzz : integer;
doc : ksDocument2D;
sumSquare: double;
begin
Result := -1;
iKompas := MainForm.KompasApi;
info := ksRequestInfo(ikompas.GetParamStruct(ko_RequestInfo));
iMat := ksMathematic2D(ikompas.GetMathematic2D);
iDoc := MainForm.GetActiveksDocument2D;
inertia := ksInertiaParam(iKompas.GetParamStruct(ko_InertiaParam));
hatch := ksHatchLineParam(ikompas.GetParamStruct(ko_HatchLineParam));
if iDoc=nil then exit;
j := 0;h := 0;sumSquare := 0;
k := iDoc.ksCursor(info, x, y, nil);
if k = -1 then begin
if h <> 0 then
idoc.ksDeleteObj(h);
idoc.ksColouring(255);
pObj := idoc.ksMakeEncloseContours(0,x,y);
h := idoc.ksEndObj;
g := idoc.ksDuplicateBoundaries(h);
imat.ksCalcInertiaProperties(g,inertia,ST_MIX_MM);
if inertia.F > 0 then begin
sumSquare := sumSquare + RoundTo(inertia.F,-3);
inc(j);
end;
if iKompas.ksYesNo('Записать площадь = ' + FloatToStr(RoundTo(sumSquare/10000,-3)) + '') = 1 then begin
Result := RoundTo(sumSquare/10000,-3);
end;
end;
if h <> 0 then idoc.ksDeleteObj(h);
end;
кто нибудь писал библиотечку для подсчета площади :?: можете показать код :?:
в примерах описан случий только если нужно вычислить МЦХ только 1-й кривой, а если их группа :?:
ПОМОГИТЕ КТО ЧЕМ МОЖЕТ :%:
Help :!: :!: :!: Что никто ничего не знает :?: :(((
Или сформулирую по-другому вопрос:
Возможно ли рассчитать площадь фигуры заданой 3 основными и 1 штриховым отрезком :?:
Это вообще возможно средствами предоставляемыми kompasAPI :?: (не используя итератор)
Цитата: AndreySt от 31.07.07, 06:04:50
Или сформулирую по-другому вопрос:
Возможно ли рассчитать площадь фигуры заданой 3 основными и 1 штриховым отрезком :?:
Это вообще возможно средствами предоставляемыми kompasAPI :?: (не используя итератор)
Господа програмисти
площадь многоугольника ограниченного прямими линиями ето простая школьная геометрия и если вам извесни координати вершин то совсем необязательно что придумивать а то я понял что скоро без апи длину линии считать забудем
Цитата: vmnick от 02.08.07, 17:03:41
Цитата: AndreySt от 31.07.07, 06:04:50
Или сформулирую по-другому вопрос:
Возможно ли рассчитать площадь фигуры заданой 3 основными и 1 штриховым отрезком :?:
Это вообще возможно средствами предоставляемыми kompasAPI :?: (не используя итератор)
Господа програмисти
площадь многоугольника ограниченного прямими линиями ето простая школьная геометрия и если вам извесни координати вершин то совсем необязательно что придумивать а то я понял что скоро без апи длину линии считать забудем
фигура была приведена для примера. На самом деле фигура может быть и какой-то неправильной формы(необязательно многоугольник мало их что ли бывает)
Цитата: AndreySt от 03.08.07, 05:15:56
Цитата: vmnick от 02.08.07, 17:03:41
Цитата: AndreySt от 31.07.07, 06:04:50
Или сформулирую по-другому вопрос:
Возможно ли рассчитать площадь фигуры заданой 3 основными и 1 штриховым отрезком :?:
Это вообще возможно средствами предоставляемыми kompasAPI :?: (не используя итератор)
Господа програмисти
площадь многоугольника ограниченного прямими линиями ето простая школьная геометрия и если вам извесни координати вершин то совсем необязательно что придумивать а то я понял что скоро без апи длину линии считать забудем
фигура была приведена для примера. На самом деле фигура может быть и какой-то неправильной формы(необязательно многоугольник мало их что ли бывает)
а что такое неправильная форма наличие дуги и отрезков так отнимаем или додаем площадь сегмента и получаем туже фигуру только с одними отрезками
т.е. получается нужно использовать итератор по элементам что бы получить элементы которые нужно "обробатывать", а это может занять много времени(что не приемлемо :um:)
Решил не открывать новую тему а продолжить здесь:
почему ksMakeEncloseContours (хоть и написано что применяется для штриховки) возвращает 0 при попытке определить контур фигуры В то время как компас штрихует эту же фигуру :?:
а возможно использовать функции компаса(например вызвать стандартную форму для расчета площади) :?: