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

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

CreativeCharge

Участник
Топикстартер
Сообщения
12
Реакции
0
Такое дело, ребят ... Есть файл с однотипными группами объектов, которые содержат названия стран. Умеет ли Корел путем манипуляций со скриптами или еще какими плагинами - выделять все введенные названия разом? Т.е. я допустим ввожу текстовые данные в подобие поисковой строки, либо в отдельные строки для каждой страны, а эта штука выделяет все объекты со странами скопом ...
Пример групп прилагается
Страны.jpg
 
Брр
В смысле как - корел макросом определял бы является текстовая строка названием страны или нет??? '%)'
 
Ну в теории да ... тоесть есть у меня, допустим, текстовый документ с перечисленными странами, взять бы эти страны, да копипастнуть через запятую в какую-нибудь строку поиска по кореловскому документу, и на выходе получить выделенные страны
 
А по другому какому то признаку искать нельзя - цвету ли какому текстовому атрибуту?
Вдобавок, если строки внутри групп, то придется все разгруппировывать иначе никак не выделит.
 
Ну не вопрос, разгрупирую, или само пусть разгрупирует ... по другому признаку никак, весь текст в одном цвете, одним шрифтом и кеглем...
 
Примерно так:
Код:
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
Да, в принципе это то, что я искал, и даже выделяет внутри группы, теперь только костыли придумать для того, чтоб группу всю выделял вместе с названием, но это уже помозгуем ) Спасибо большое !
 
Пардон, снова жаловаться придется ... Все-таки макрос различает регистр, так мало того, это создает неудобство еще и тем, что оригинальный файл с текстом содержит текст написаный как строчным регистром так и прописным, но абсолютно всем текстовым объектам присвоен атрибут ALLCAPS, поэтому выборку делать нереально практически ... есть ли способ отучить скрипт различать регистр ?
 
А в чем проблемы?
Код:
If UCASE(t.Text.Story) = UCASE(mm(i)) Then t.AddToSelection
Разве такой код не будет отрабатывать?
 
  • Спасибо
Реакции: CreativeCharge
Я, пардон, не кодер прост ) Куда, простите вставить эту строчечку, учитывая макрос выше ?
 
Там похожих мест немного '))'
Вместо
If t.Text.Story = mm(i) Then t.AddToSelection
 
  • Спасибо
Реакции: CreativeCharge
Здравствуйте граждане знатоки. Есть еще нерешенный вопрос по этой теме, уж простите за бойан... в общем у меня теперь есть макрос для поиска нужных слов в документе, но вот проблема: мне в конечном итоге надобно выделять не просто текстовые объекты, а сами группы объектов в которые собственно эти объекты и входят ... а у меня на выходе несколько выделенных текстовых объектов ... я перепробовал множество манипуляций с объектами, но ни одна из них не позволила мне включить в выделение полностью группы. Как мне быть ?
 
а сами группы объектов в которые собственно эти объекты и входят
Сложность задачи заключается в том, что объекты могут содержать вложенную группировку, причем, совершенно различной природы. Какую группу при этом выбирать? Самую верхнюю? В этом случае, получается, недостаточно найти нужный объект, а придется, найдя его, карабкаться вверх по дереву групп, пока самую верхнюю группу не найдешь, ее и выделять. %8
 
мм, я уловил суть ... а если группа только одна, из текстового объекта, прямоугольника и двух кривых, и так каждая группа, это упрощает нам задачу ?
 
Конечно
вместо строки

Код:
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
Бомба ! Спасибо ! На какой адрес доставить печеньки ?
 
ну это уж от предпочтений зависит )
 
Статус
Закрыто для дальнейших ответов.