На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

рассечение объектов

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
рассечение объектов
 
Здравствуйте господа разработчики !
Просьба проверить работу функции mapCreateObjectCutByLine (в режиме рассечение площадного ЗАМКНУТОЙ ЛИНИЕЙ)
В ГИС Карте, при попытке образть объект КРУГ объектом ОКРУЖНОСТЬ, общя часть отсекается?
Как получить общую часть ?
------------
Сама функция mapCreateObjectCutByLine возвращает 0 при попытке пересечения объекта номер 162 объектом номер 184
Первый параметр 184 - линейный резак, второй 162 - разрезаемый площадной
код

Код
function TRnavTemplate.CutZone(BaseSQR==184, CutLINE==162, Res : HObj) : boolean;
var Cross : HCross;
    _out  : HObj;
begin
  result := false;
  mapDeleteLoop(BaseSQR, 1);
  _out  := mapCreateSiteObject(FMap, FSite);
  Cross := mapCreateObjectCutByLine(CutLINE,BaseSQR,OL_SQUARE,0); /-- режим разрезка площадного с результатом площадь 
  if Cross<>0 then
  while mapGetNextCut(Cross, _out)<>0 do
  begin
    mapReadCopyObject(Res, _out);
    Break;
  end;
  mapFreeObjectsCut(Cross);
  mapFreeObject(_out);
end;



Карта во вложении
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Вычислил закономерность
Если оба объекта карты сохранять функцией mapCommitObject то рассечение и согласование выполняется.
Господа разработчики топологических функций, убедительная просьба получать все нужные входные данные с метрики объекта, а не с файла карты.
В частности это касается размеров объекта который у вас пересчитывается при коммите.
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
1) Просьба проверить работу функции mapCreateObjectCutByLine...
Не знаю смысла такой формы записи, но тут номера объектов заданы наоборот:
BaseSQR==184, CutLINE==162  // Первый параметр 184 - линейный резак, второй 162 - разрезаемый площадной ???

2) Как получить общую часть ? ...
При нарезке получается несколько фрагментов. Но программа после чтения первого фрагмента завершается:
   mapReadCopyObject(Res, _out);
   Break;

Если нужны другие фрагменты, то нужно их считать.

3) Если оба объекта карты сохранять функцией mapCommitObject то рассечение и согласование выполняется... -
как это связано с приведенным текстом программы?
 
Спасибо Олег Валентинович за расширенный ответ !
Проблема в том,
что в одном случае мне нужно было найти результат отсечения, а во втором общая площадь пересечения.
В обоих случаях я использовал mapCreateObjectCutByLine (то есть "контекст отсечения"). теперь всё нормально
Не тот глуп кто не знает, а тот, кто не знает где искать.
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности