Поиск и выборка групп объектов с текстом

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

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
Такое дело, ребят ... Есть файл с однотипными группами объектов, которые содержат названия стран. Умеет ли Корел путем манипуляций со скриптами или еще какими плагинами - выделять все введенные названия разом? Т.е. я допустим ввожу текстовые данные в подобие поисковой строки, либо в отдельные строки для каждой страны, а эта штука выделяет все объекты со странами скопом ...
Пример групп прилагается
Страны.jpg
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
24 656
Оценка реакций
8 429
Брр
В смысле как - корел макросом определял бы является текстовая строка названием страны или нет??? '%)'
 

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
Ну в теории да ... тоесть есть у меня, допустим, текстовый документ с перечисленными странами, взять бы эти страны, да копипастнуть через запятую в какую-нибудь строку поиска по кореловскому документу, и на выходе получить выделенные страны
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
24 656
Оценка реакций
8 429
А по другому какому то признаку искать нельзя - цвету ли какому текстовому атрибуту?
Вдобавок, если строки внутри групп, то придется все разгруппировывать иначе никак не выделит.
 

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
Ну не вопрос, разгрупирую, или само пусть разгрупирует ... по другому признаку никак, весь текст в одном цвете, одним шрифтом и кеглем...
 

lev

Модератор
15 лет на форуме
Сообщения
1 842
Оценка реакций
1 698
Примерно так:
Код:
Sub Macro1()
  mm = Array("Greece", "Italy", "Spain")
  Set tsr = ActiveLayer.FindShapes(, cdrTextShape)
  For Each t In tsr
    For i = 0 To UBound(mm)
       If t.Text.Story = mm(i) Then t.AddToSelection
    Next i
  Next t
End Sub
или с примитивным ручным вводом
Код:
Sub Macro2()
  mm = Split(InputBox("Введите слова для поиска через пробел"))
  Set tsr = ActiveLayer.FindShapes(, cdrTextShape)
  For Each t In tsr
    For i = 0 To UBound(mm)
      If t.Text.Story = mm(i) Then t.AddToSelection
    Next i
  Next t
End Sub
 
Последнее редактирование:

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
Попробуемс, заранее благодарю.
 

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
Да, в принципе это то, что я искал, и даже выделяет внутри группы, теперь только костыли придумать для того, чтоб группу всю выделял вместе с названием, но это уже помозгуем ) Спасибо большое !
 

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
Пардон, снова жаловаться придется ... Все-таки макрос различает регистр, так мало того, это создает неудобство еще и тем, что оригинальный файл с текстом содержит текст написаный как строчным регистром так и прописным, но абсолютно всем текстовым объектам присвоен атрибут ALLCAPS, поэтому выборку делать нереально практически ... есть ли способ отучить скрипт различать регистр ?
 

splxgf

Участник
Сообщения
6 841
Оценка реакций
3 038
А в чем проблемы?
Код:
If UCASE(t.Text.Story) = UCASE(mm(i)) Then t.AddToSelection
Разве такой код не будет отрабатывать?
 

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
Я, пардон, не кодер прост ) Куда, простите вставить эту строчечку, учитывая макрос выше ?
 

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
ога, заработало )
благодарю
 

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
Здравствуйте граждане знатоки. Есть еще нерешенный вопрос по этой теме, уж простите за бойан... в общем у меня теперь есть макрос для поиска нужных слов в документе, но вот проблема: мне в конечном итоге надобно выделять не просто текстовые объекты, а сами группы объектов в которые собственно эти объекты и входят ... а у меня на выходе несколько выделенных текстовых объектов ... я перепробовал множество манипуляций с объектами, но ни одна из них не позволила мне включить в выделение полностью группы. Как мне быть ?
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
24 656
Оценка реакций
8 429
а сами группы объектов в которые собственно эти объекты и входят
Сложность задачи заключается в том, что объекты могут содержать вложенную группировку, причем, совершенно различной природы. Какую группу при этом выбирать? Самую верхнюю? В этом случае, получается, недостаточно найти нужный объект, а придется, найдя его, карабкаться вверх по дереву групп, пока самую верхнюю группу не найдешь, ее и выделять. %8
 

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
мм, я уловил суть ... а если группа только одна, из текстового объекта, прямоугольника и двух кривых, и так каждая группа, это упрощает нам задачу ?
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
24 656
Оценка реакций
8 429
Конечно
вместо строки

Код:
If UCASE(t.Text.Story) = UCASE(mm(i)) Then t.AddToSelection
поставить конструкцию типа

Код:
If UCASE(t.Text.Story) = UCASE(mm(i)) Then
  Set g = t.ParentGroup
  If g Is Nothing Then
   t.AddToSelection
  else
   g.AddToSelection
  endif
endif
примерно как то так
 

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
Бомба ! Спасибо ! На какой адрес доставить печеньки ?
 

CreativeCharge

Участник
Топикстартер
Сообщения
12
Оценка реакций
0
ну это уж от предпочтений зависит )
 
Статус
Закрыто для дальнейших ответов.