Выделить группу объектов внутри другого

Статус
Закрыто для дальнейших ответов.

sniffysko

Участник
Топикстартер
Сообщения
191
Реакции
0
Есть большой объект (контур) внутрь которого набросано много мелких объектиков. Надо выделить все мелкие объектики, которые лежат внутри большого объекта. Не суть важно касаются ли они контура. Или наоборот. :о) Выделить все, которые лежат за пределами контура.

Маскирование не канает, т.к. объекты в этом случае режутся контуром. Нужны только целые объекты. До этого пытал в илевской ветке, но там сказали, что есть функция в кореле, которая позволяет выводнять это действие.
 

knower

Валерий Кнауэр
15 лет на форуме
Сообщения
1 006
Реакции
18
Ответ: Выделить группу объектов внутри другого

Просто выделяешь их все (за исключением контура) жмёшь F10 и с прижатым Alt обводишь нужную область. Потом Del. :)
Способ действует, если среди них только объекты в кривых. Без битмапов, эффектов, эллипсов и прочих, у которых по F10 свой инструмент.
 

Вложения

  • 1.png
    1.png
    21.4 КБ · Просм.: 1 047

Fog_patch

12 лет на форуме
Сообщения
3 163
Реакции
998
Ответ: Выделить группу объектов внутри другого

Как-то наш модератор Lev подсказал функцию isonshape.
С помощью нее можно написать то что вы хотите. Есть возможность сделать опцию захвата/не захвата пересекающихся объектов.
Принцип может быть такой:

Код:
Sub SelectIsOnShape()
Dim s As Shape
Dim x As Double, y As Double
Dim sKey As Shape

Set sKey = ActiveShape
For Each s In ActivePage.Shapes
    s.GetPosition x, y
     If sKey.IsOnShape(x, y, -1) Then
        s.AddToSelection
     End If
Next s
End Sub

Как пользоватся. Рисуем к примеру кружки по всему листу, а сверху (или снизу неважно) рисуем карандашом сложную загогулину. Потом выделяем загогулину и запускаем этот код.
К сожалению функция не всегда работает идеально. Но тут я ничем помочь не могу.
 

sniffysko

Участник
Топикстартер
Сообщения
191
Реакции
0
Ответ: Выделить группу объектов внутри другого

Скрипт вероятно то, что мне и надо. Вставил ваш код в новій файл. Назвал SelectOnTheSape.csc, скопировал в каталог Corel Graphics 12\Draw\Scripts\
Запустил менеджер скриптов. Выделил контур. Запустил скрипт и получил сообщение об ошибке. :о( К сожалению не силен в скриптах и че с ним делать не знаю. Можно надеяться на вашу помощь?

Да, фокус с обводкой руками не пройдет. Контур очень сложный.
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Выделить группу объектов внутри другого

В очередной раз призываю отличать скрипты написанные на языке CorelSCRIPT от макросов написанных на VBA. Код написанный Fog_patch - макро, а не скрипт. Соответственно его нужно копировать в VBEditor.
 

sniffysko

Участник
Топикстартер
Сообщения
191
Реакции
0
Ответ: Выделить группу объектов внутри другого

lev сказал(а):
Код написанный Fog_patch - макро, а не скрипт. Соответственно его нужно копировать в VBEditor.

Спасибо за подсказку. В общем-то с горем пополам запустил скрипт. То что надо! Класс! Спасибо всем.
 

greatdeal

Забанен
Сообщения
469
Реакции
0
Ответ: Выделить группу объектов внутри другого

Fog_patch сказал(а):
К сожалению функция не всегда работает идеально. Но тут я ничем помочь не могу.
Потому что сначала надо явно задать Document.ReferencePoint. В данном простом применении этой функции проще всего задать его по центру. Добавьте в начало скрипта строчку:

Код:
ActiveDocument.ReferencePoint = cdrCenter
 

greatdeal

Забанен
Сообщения
469
Реакции
0
Ответ: Выделить группу объектов внутри другого

sniffysko сказал(а):
Спасибо за подсказку. В общем-то с горем пополам запустил скрипт. То что надо! Класс! Спасибо всем.
Создайте текстовый документ в папке GMS (лучше в профиле), myGms.txt, переименуйте его тип в gms, и запускайте Корел. По Alt+F11 открываете басик, находите там свой жимэс и валите туда все скрипты которые найдете полезными с помощью копи-пейста. Чтобы какая-то подпрограмма не торчала в меню Play, добавляйте к ее названию Private.
 

sniffysko

Участник
Топикстартер
Сообщения
191
Реакции
0
Ответ: Выделить группу объектов внутри другого

Угу. Спасибо.
 

Toh_A

Участник
Сообщения
47
Реакции
0
Ответ: Выделить группу объектов внутри другого

Задумка хорошая и очень полезная, но исполнение к сожалению кривовато.

Не цепляет некоторые объекты попадающие под контур, но стоит их немного подвинуть или растянуть и запустить макрос опять-они попадают в выделение.
Интересно ведет себя с импортированными епсами. Например, импортирую визитку с ограничительным контуром(типа обрезной формат), все элементы визитки помещаются в этот контур(на вылет ничего нету). Выделяю контур, запускаю макрос-зацепились только несколько объектов(почемуто самые крупные). Сгруппировываю/разгруппировываю содержимое контура(все элементы под ним), запускаю макрос-все проходит на ура, цепляет даже самые мелкие загогулины.

Это лечится?
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Выделить группу объектов внутри другого

В общем-то с горем пополам запустил скрипт.
валите туда все скрипты которые найдете полезными
moderatorial
С сегодняшнего дня все называтели скриптов макросами и макросов скриптами будут отправляться в бан на пару дней, за введение читателей форума в заблуждение.
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Выделить группу объектов внутри другого

В общем понимании нет чётких границ между макросом и скриптом.
Но в сообществе CorelDRAW сложились свои правила. Скриптами называются программы для автоматизации CorelDRAW написанные на языке CorelSCRIPT, редактируемые в более не поставляемом с программой CorelDRAW CorelSCRIPT Editor'е, сохраняемые в файлах с расширением *.csc и т.д. и т.п. Макро или макрос - программа для автоматизации CorelDRAW на языке VBA, редактируемые во встроенном VBEditor'e, сохраняемые в самих файлах *.cdr или в файлах *.gms и т.д. и т.п.
Характерную ошибку возникающую при путанице скриптов с макросами вы можете наблюдать в сообщении №4 данной ветки.
По другим языкам программирования у меня пока претензий нет, в связи с редкостью их упоминания в нашем форуме.
 

xm

иксэ́м
R.I.P.
Сообщения
4 978
Реакции
2 667
Ответ: Выделить группу объектов внутри другого

можно встрянуть и задать "глупый" вопрос
а вот всё что здесь говорилось и спрашивалось - это к какой программе имеет отношение?
вроде раздел CorelDraw...
но ни вопрос мне не понятен в отношении этой программы - что значит "выделить мелкие объекты внутри контура"? какого контура и как выделить?
ни ответы: F10 - это переход в шейпер, alt-F10 - меню трансформации.
ни тем более приложенная картинка - как в режиме шейпера (а видимый пунктир и узлы явно указывают на это) выделены РАЗНОЦВЕТНЫЕ (то есть разные а не один) объекты?
раз 5 тему перечитал - ну никак не могу врубится.

и еще в вопросе слово "маскирование" озадачило - какое в кореле маскирование? powerclip - да. ну ладно, здесь просто видимо пост-иллюстратовская ошибка в терминологии.

я в кореле 10 лет не вылезая - с трешки начал. а тут - как на другую корел-планету попал 66(
 

xm

иксэ́м
R.I.P.
Сообщения
4 978
Реакции
2 667
Ответ: Выделить группу объектов внутри другого

опа! так это 13й!!!
не давал покоя вопрос - как это я чтото в кореле не знаю!
работаю в 11м
13й стоит так для мебели (скока еденицу за Х не пряч - ну 13й он, до нельзя горбатый).
вощем начал рыться в нём (когда бесрезультатное перелопачивание старого доброго корела 11го просто вывело из себя) . эх - "контур"..!.. какой же это контур? boundary (хотя может в русском так и перевели, но имхо в кореле итак контуров полно более привычных - outline и эффект contour)
поковырял его, "контур" ентот. штука забавная. а на кой его выдумали - имхо штука абсолютна бесполезная, та же группа тока в профиль... я ошибаюсь?

зы....прошло еще 5 мин: ааа, по точкам без комбайна ровнять и там двигать можно. тобишь группа и комбайн 2в1. крута!!! (но снова загадка - абрис трансформируется отдельно от заливки и наоборот - как во флеше 66. но это уже не суть - после при необходимости разберусь)))

всё, вопросы (без ответов по причине ночи) и "глупые" недоумения мои сняты.
сорри благородное собрание

ззы но имхо таки заголовок топа и сам вопрос сформулированы некорректно. ни одного нормального термина чтоб хоть догадаться о чем речь
 
Статус
Закрыто для дальнейших ответов.