Скрипт временно прячет объект

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

denisgrim

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

zemnoy

out of space
15 лет на форуме
Сообщения
352
Реакции
0
Ответ: Скрипт временно прячет объект

"залочить" объект не поможет?
 

denisgrim

Участник
Топикстартер
Сообщения
1 171
Реакции
1
Ответ: Скрипт временно прячет объект

zemnoy сказал(а):
"залочить" объект не поможет?
нет, нужно чтобы именно прятался объект, подобно слою. То есть, недавно просто оказался в ситуации, когда залочивание объекта не помогало. Сложно объяснить, что именно я делал и как, но я бывалый пользователь Корела, и просто так воздух не стал бы сотрясать. Выкрутился из своей ситуации солдатской смекалкой в ущерб времени и продуктивности.
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Ответ: Скрипт временно прячет объект

Имхо, никто не будет заморачиваться. Корел же не люстра, и наоборот. Другой принцип. Другие правила. И потом всегда есть Object Manager, где можно полюбасу выделить нужный вам объект не трогая остальных...
Сложно представить ситуацию в которой Вас так расколбасило, честно говоря. Хотя не спорю, скриптик такой был бы неплох. Только в нем надо будет учитывать сгруппирован с кем либо объект, который мы будем прятать, или нет, находится ли он в поверклипе или нет и тд., а также необходимо как-то его обратно возвращать в то же самое место, на ту же страницу, тот же слой, и в то же место по порядку расположения на самом слое.
Я к тому, что макрос не так уж и прост будет.
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Ответ: Скрипт временно прячет объект

Чисто по-приколу... Макрос.
Открываете редактор VBA, в окошке Project Explorer`а тыкаете мышкой на GlobalMacros (GlobalMacros.gms), там тыкаете уже правой кнопкой мышки над Modules, выбираете import File - lsd.bas
После, в кореле лезете в меню Tools-customization-commands, справа выбираете Macros, почти в самом низу списка будет lsd.скрыть, lsd.показать. Вешаете на эти два макроса shortcut keys и вот.

Сразу скажу макрос супер сырой, и делать я с ним вряд ли что буду, но зато можете колбасить код вдоль и поперёк.
Гига минусы:
- не спрячет объект, находящийся в группе,
- возвращая объекту видимость, увы, не вспоминает его, так сказать z-order.

Эти два минуса, убили меня, и я пошёл спать =)
 

Вложения

  • lsd.rar
    626 байт · Просм.: 355

Sanchos

Sancho
15 лет на форуме
Сообщения
806
Реакции
158
Ответ: Скрипт временно прячет объект

Что то вы муть наводите. Проще всего -- пишем макрос который, при нажатии нужной клавиши, назначит объекту под курсором 100% прозрачность и заблокирует его... ну и соответственно кнопку показать обратно всё.
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Ответ: Скрипт временно прячет объект


Не по теме:
Sanchos, не мешай колдовать, гыгы...
 

denisgrim

Участник
Топикстартер
Сообщения
1 171
Реакции
1
Ответ: Скрипт временно прячет объект

всё-таки попытаюсь объяснить, что я делал: нужно было засунуть в паверклип точно спозиционированные объекты. При этом, невозможно было ткнуть на контейнеры. Менеджер объектов не поможет в таких случаях. При этом, подобных объектов было несколько, и они стыковались между собой текстурами (гильоши в паверклипах, разные по цвету). Короче, мне пришлось выравнивать содержимое паверклипов по координатам, записанным на бумажку - ужас.
Проще всего -- пишем макрос который, при нажатии нужной клавиши, назначит объекту под курсором 100% прозрачность и заблокирует его.
а ткнуть на нижележащий объект получится сквозь этот?
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Ответ: Скрипт временно прячет объект

denisgrim сказал(а):
а ткнуть на нижележащий объект получится сквозь этот?
да, уже опробовано, гыгы попишу макросик как только лень прогоню

ЗЫ. Вышеописанную проблему не очень понял, а картинку примерную можете показать что и куда пытались засунуть и почему не получается? Просто для личного самообучения, а может и там не так уж все плохо было...
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Ответ: Скрипт временно прячет объект

denisgrim сказал(а):
а ткнуть на нижележащий объект получится сквозь этот?
Вот что значит - тяпницо. Значит так. Придя домой и опробовав еще раз, могу сказать, следующее: если есть два объекта одинакового размера один над другим, и верхний объект сделать прозрачным и заблокировать, то можно щелкать до потери сознания - до нижнего не добраться, точнее добраться можно. но не так как хотелось бы...
"чиёрт побьери..."
 

denisgrim

Участник
Топикстартер
Сообщения
1 171
Реакции
1
Ответ: Скрипт временно прячет объект

qsedftghk сказал(а):
"чиёрт побьери..."
вот я про это же! только верхний объект у меня ещё больше чем нижний. Картинку показывать бессмысленно, ибо там чёрт ногу сломит - непонятно будет короче. Мне пришлось сначала выравнивать несколько паверклипов, состыкованных рядом, и потом в них засовывать состыкованные текстуры. Сначала я всё выровнял, а потом отодвигал текстуры, чтобы можно было ткнуть в контейнер. А потом снова возвращал текстуры в исходную позицию. Неприятно в общем.
 

denisgrim

Участник
Топикстартер
Сообщения
1 171
Реакции
1
Ответ: Скрипт временно прячет объект

По сути - ситуация банальна. Если контейнер меньше, чем объект, и при этом требуется точно позиционировать их друг относительно друга заранее, то добраться до контейнера нельзя, не отодвинув верхний объект.
может быть, скрипт будет временно отодвигать объект далеко-далеко, а потом возвращать его на место?
 

Raisk

Участник
Сообщения
38
Реакции
0
Ответ: Скрипт временно прячет объект

View - Wireframe и пихайте в клипы все, что угодно.
 

denisgrim

Участник
Топикстартер
Сообщения
1 171
Реакции
1
Ответ: Скрипт временно прячет объект

Raisk сказал(а):
View - Wireframe и пихайте в клипы все, что угодно.
воистину! Спасибо, о великий гуру! Про это свойство я не знал. Гениально!
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Ответ: Скрипт временно прячет объект


Не по теме:
denisgrim, жжошь.
Все равно надо будет на досуге попробовать что-нить наваять для сокрытия или сдвига... Хотя бы ради освоения vba

 

Raisk

Участник
Сообщения
38
Реакции
0
Ответ: Скрипт временно прячет объект

А почему нельзя было по условиям задачи поднять наверх контейнер и потом беспроблемно кидать в него объекты?
 

denisgrim

Участник
Топикстартер
Сообщения
1 171
Реакции
1
Ответ: Скрипт временно прячет объект

Raisk сказал(а):
А почему нельзя было по условиям задачи поднять наверх контейнер и потом беспроблемно кидать в него объекты?
Ну и мыммышление у вас....'8()' (простите, вы девушка/женщина?)
действительно... можно же было просто хоткеем поставить объект вниз, и тыкать в контейнер спокойненько.. я просто в ауте....
 

dizzy

Участник
Сообщения
425
Реакции
1
Ответ: Скрипт временно прячет объект

Такая фича реализована во фрихенде. Наверное единственное ноухау, кое на меня произвело хоть какое-то впечатление.

Но в принципе замутить такое труда не составит, пока писал придумал как:).

Четыре подфункции:
Скрыть выделенный.
Скрыть все кроме выделенного.
Показать последний скрытый.
Показать все скрытые.
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Ответ: Скрипт временно прячет объект

Я настолько не силен в кодинге, отсюда и вопрос.
Допусти есть кружочек и прямоугольник. Кружочек выше прямоугольника. Они сгруппированы. И допустим, я хочу скрыть прямоугольник. Потом что-нибудь поделать (неважно что), потом показать прямоугольник. Вопрос в следующем, на vba - это реально сделать? То есть, надо ведь будет как-то запоминать, что прямоугольник сгруппирован с кругом, и, также, запоминать, что круг выше прямоугольника.. ну, к примеру.. Просто интересно. Или логика другая?
 

dizzy

Участник
Сообщения
425
Реакции
1
Ответ: Скрипт временно прячет объект

Код:
Sub hideShape()
Dim sh As Shape, hhide As Shape, shh As Shape
Set sh = ActiveShape: Set shh = sh.Duplicate
Set hhide = ActivePage.ActiveLayer.CreateRectangle2(sh.PositionX, sh.PositionY, 0.001, 0.001)
hhide.Fill.ApplyNoFill: hhide.Outline.Width = 0
shh.OrderBackOf hhide
hhide.Name = "Hide shape"
shh.AddToPowerClip hhide
hhide.OrderFrontOf sh
sh.Delete
hhide.RemoveFromSelection
End Sub

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