[CDR X5-X8] как выделить все шейпы после разъединения

  • Автор темы Автор темы Nezar
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Nezar

Участник
Топикстартер
Сообщения
158
Реакции
3
убил день. пробовал разные способы.
но они или кривые или работают не так как надо.
задача.
есть некоторый шейп.
допустим это квадрат, внутри которого отверстие.
применяем к нему Ctrl+k - разъединить кривая
получаем два шейпа. все тот же квадрат но уже без отверстия
и собственно шейп в виде того самого отверстия.
а теперь вопрос.
как мне теперь узнать какой из шейпов был квадратом, а какой получился из отверстия.
замечу что отверстий может быт много.
думал по координатам искать. но ерунда получается.
может есть стандартные функции.
или может попробовать узнать есть ли шейп сверху или снизу от данного...
не знаю.
может кто то сталкивался.
спасибо!
 
Во первых, тема не соответствует названию, ибо после разьединения шейпы выделены изначально. А во вторых, в топиковой постановке вопрос лишен смысла вообще - скомбинированы могут быть шейпы совершенно произвольные и понятия "квадрат" и "дырка" в данной формулировке ничего не значат. Давайте подходить с другой стороны - вам нужно определить какой шейп полностью лежит внутри другого? Это очень сложная задача, практически нетривиальная в общем случае, но в случае простых шейпов, например прямоугольников, как у вас, все таки решаемая относительно бескровно.
 
Давайте подходить с другой стороны - вам нужно определить какой шейп полностью лежит внутри другого?
совершенно верно.
шейпы простые. и всегда один полностью лежит внутри другого
 
В случае прямоугольников достаточно было бы проверять граничные координаты, но даже в случае эллипсов или повернутых прямоугольников данный метод не работает, к сожалению, нужно что-то хитрое изобретать. Скажем, если фигуры контурами не пересекаются, то площадь скомбинированной фигуры будет равна сумме площадей, если одна лежит вовне другой и разности если наоборот 'hmmm'
 
имено по этому бросил затею с кординатами.
прбовал через s.IsOnShape(x, y). прикольно, но тоже не совсем подходит. т.к. шейпов с "вложениями" мжет быт несколько.
а можно както выделит шейпы внутри произвольного контура? т.е. както задать выделение через кординаты.
 
через объединение можно - но както геморно
 
  • Спасибо
Реакции: Nezar
Если у вас по условиям задачи был объект с дырками, то после его разъединения дырки будут заведомо меньше по размеру, что элементарно проверяется.
 
Если у вас по условиям задачи был объект с дырками, то после его разъединения дырки будут заведомо меньше по размеру, что элементарно проверяется.
Два разнокалиберных объекта рядом вовсе не обязательно объект и его дырка
 
По условию задачи был объект с дырками, а объекта из разнокалиберных ненакладывающихся контуров не было.
 
Если у вас по условиям задачи был объект с дырками, то после его разъединения дырки будут заведомо меньше по размеру, что элементарно проверяется.
к сожалению не подходит, т.к. объекты совершенно разный. а так с самого начала думал так сделать.
 
Статус
Закрыто для дальнейших ответов.