Площадь плоской фигуры не всегда правильно считается

Автор NVladimir, 03.03.08, 23:29:10

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

NVladimir

Для подсчета площади и простановки ее на чертеже написал на Delphi
вот фрагмент кода:

procedure SquareWrite;
var
  x, y: Double;
  gr,gr2: Reference;
  info: RequestInfo;
  j:Integer;
  inertiaPar : InertiaParam;
  s_q_r : Double;
  st : String;
begin
  FillChar( info, sizeof(info), 0 );
  info.prompt := 'Для простановки площади укажите точку внутри области';
  j:=1;

  while ksCursor( Addr(info), x , y, nil ) <> 0 do
  begin
     st:='';
     if (gr<>0) then
        DeleteObj(gr);
     if (gr2<>0) then
        DeleteObj(gr2);

     if( ksColouring( RGB(255, 0, 0))=1 ) then
     begin
        ksMakeEncloseContours( 0, x, y );
        gr  := EndObj();
        gr2 := ksDuplicateBoundaries(  gr );
        if ksCalcInertiaProperties(gr2, addr(inertiaPar), ST_MIX_M)=1 then
        begin
           S_q_r:=around_5(inertiaPar.F*10)/10;
           str(S_q_r:12:1,st);
        end;
     end;
     st:='$d'+Trim(IntTostr(j))+';'+Trim(st)+'$';
     ksText ( x, y, 0, 1.8, 0.85, 0, PAnsiChar(st));

      j:=j+1;
      ksRefreshActiveWindow;
   end;
  if (gr<>0) then
      DeleteObj(gr);
  if (gr2<>0) then
      DeleteObj(gr2);
  ksRefreshActiveWindow;
end;

но оказалось что при сложных построениях площадь не всегда правильно подсчитывается.
Хотя заливка визуально заливает правильно.
Подсчёт площади стандарными средствами дает другой результат.
Помогите разобраться в чём причина.

NVladimir

Извините, забыл сказать, что этот код используется в Компас-График 6+

olegsvg

думаю, без конкретных примеров фигур, площадь которых КОМПАС считает неправильно, вряд-ли кто-то ответит предпетно...

NVladimir

Вот пример такого проблемного чертежа.
Может действительно что-то в построении не так.
Не могу найти ответ почему стандартная функция подсчета площадей считает правильно,
а моя библиотека нет.
Раньше площадь соответствовала закрашенной фигуре, а в этом случае нет.

ТрындецЪ

Тоже столкнулся с такой проблемой.
Программно 5648,307 мм2
Командой КОМПАСа 5479,496 мм2
И чему верить?
Во вложении файл с контуром и макрос на Python, работающий с активным фрагментом (или активным видом чертежа).

05.02.18, 16:41:52 #5 Последнее редактирование: 05.02.18, 17:05:34 от Sabahs
У меня правильно посчитал, всё три способа совпали.
PS. Проблема, похоже в версии Компаса.
+ Благодарностей: 1

ТрындецЪ

Цитата: Sabahs от 05.02.18, 16:41:52
У меня правильно посчитал, всё три способа совпали.
PS. Проблема, похоже в версии Компаса.
Благодарю! Радует, что хотя бы спустя 10 лет баг исправили :-)))