Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: garipov72 от 08-10-2014, 12:59:07

Название: Линии внутри полилинии
Отправлено: garipov72 от 08-10-2014, 12:59:07
Добрый день. Во вложении есть пример. Есть контур поллинии внутри него надо нарисовать линии, от границы до границы. Первая мысль была штриховка, однако как выяснилось нельзя (будут проблемы при трансляции в MapInfo), сказали нарисовать линиями.
Собственно я в тупике, может у кого есть мысли куда смотреть?


(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs13.postimg.org%2Fpbm39y4k3%2Fimage.jpg&hash=ea72c6e4405e82b8ebed42083848c818) (http://postimg.org/image/pbm39y4k3/)
Название: Re: Линии внутри полилинии
Отправлено: Андрей Бушман от 08-10-2014, 13:00:49
может у кого есть мысли куда смотреть
Создать штриховку и затем её взорвать (Explode).
Название: Re: Линии внутри полилинии
Отправлено: garipov72 от 08-10-2014, 13:03:54
Андрей, можно по подробнее, я так понимаю будет преобразование?
Название: Re: Линии внутри полилинии
Отправлено: Андрей Бушман от 08-10-2014, 13:07:26
Андрей, можно по подробнее, я так понимаю будет преобразование?
Название: Re: Линии внутри полилинии
Отправлено: garipov72 от 08-10-2014, 13:40:28
Андрей Спасибо!!!! Даже с моими кривыми руками все получилось как надо! А я уже думал геометрией заняться...
Название: Re: Линии внутри полилинии
Отправлено: Александр Ривилис от 08-10-2014, 13:43:07
А я уже думал геометрией заняться...
Андрей предложил самое простое и быстрое решение. Хотя повозится с геометрией программисту было бы интересней. Мне так кажется.  ;)
Название: Re: Линии внутри полилинии
Отправлено: garipov72 от 08-10-2014, 14:39:02
Опять уперся в камень. В качестве примера проверки убеждения брал пример от http://adn-cis.org/shtrixovka-pri-pomoshhi-autocad-.net-api.html (http://adn-cis.org/shtrixovka-pri-pomoshhi-autocad-.net-api.html) и травил его. Все отработало на ура. Однако в проекте я должен залить замкнутую поллинию (Polyline), собственно получаю постоянно ошибку. Я так понимаю её надо во что то преобразовать?
Название: Re: Линии внутри полилинии
Отправлено: trir от 08-10-2014, 14:52:47
Цитировать
будут проблемы при трансляции в MapInfo
Бред, а что сразу в tab/mif не сделать?
Или использовать MPolygon? Его для того и придумали!

Цитировать
её надо во что то преобразовать?
Засунуть в ObjectIdCollection
Название: Re: Линии внутри полилинии
Отправлено: garipov72 от 08-10-2014, 15:18:19
trir спасибо за подсказку. Не судите строго, за глупые вопросы, не везде с ходу могу сообразить. Все получилось.
Название: Re: Линии внутри полилинии
Отправлено: Дима_ от 10-10-2014, 23:45:30
Берете габариты контура, проводите "временные" линии и вычисляете точки пересечения их с контуром (их всегда будет четное количество если контур имеет рациональную площадь) - соединив точки через пару (1-2; 3-4; 5-6,..) - вы получите линии внутри контура. Похожий алгоритм реализовывался здесь http://adn-cis.org/forum/index.php?topic=750.0 (http://adn-cis.org/forum/index.php?topic=750.0) для разделение площади на "клетки".
Можно и без временных линий - но здесь надо будет поиграть с математикой (или упростить задачу только до линейных отрезков контура).
Название: Re: Линии внутри полилинии
Отправлено: Александр Ривилис от 11-10-2014, 01:38:45
их всегда будет четное количество если контур имеет рациональную площадь
Не совсем так. Есть еще вырожденные пересечения, которые необходимо отдельно обрабатывать.