Просматривают:
1 Анонимно
Сделать подобный скрипт |
||
|
||
---|---|---|
Новичок
Присоединился:
2010/7/9 1:03 Откуда Минск
Сообщений: 4
|
Увидел классный скрипт здесь:
http://www.oberonplace.co... Но для старых версий Корела - в новых не работает. Хотелось бы такой же, но чтобы работал в Х4 - Х5. Суть в том, что он заменяет все выделенные объекты (допустим, множество кружочков) на такой объект, который находится в буфере обмена (допустим, звездочка). При этом можно настроить его так, чтобы размер или повторял исходный объект, или оставался таким же. Можно сделать еще круче - если в буфере будут несколько разных объектов, допустим, звездочка, ромб, квадрат и т.д., чтобы скрипт их произвольно размещал на месте выделенных объектов. Это реально?
Опубликовано: 2010/7/9 1:14
|
|
|
Re: Сделать подобный скрипт |
|
---|---|---|
Титан - модератор
Присоединился:
2006/4/8 19:42 Сообщений: 152
|
когда-то очень давно писал на форуме там же, скорее всего будет работать и в Х4/Х5
Sub scatter() Dim sh As Shape, sr As ShapeRange, x#, y#, w#, h#, i& Dim AgentSmith As Shape, VSR As ShapeRange If ActiveDocument Is Nothing Then Exit Sub Set sr = ActiveSelection.Shapes.FindShapes() If sr.Count = 0 Then MsgBox "Select target objects, invoke the macro, click Agent Smith shape" Exit Sub End If If ActiveDocument.GetUserClick(x, y, i, -1, Snap:=false, CursorShape:=313) Then _ Exit Sub With ActivePage.SelectShapesAtPoint(x, y, SelectUnfilled:=True) If .Shapes.Count = 0 Then Beep: Exit Sub Set AgentSmith = .Shapes(.Shapes.Count) End With Set VSR = New ShapeRange ActiveDocument.ReferencePoint = cdrCenter For Each sh In sr sh.GetBoundingBox x, y, w, h With AgentSmith.TreeNode.GetCopy .VirtualShape.RotationAngle = sh.RotationAngle .VirtualShape.SetBoundingBox x, y, w, h, KeepAspect:=True .LinkAsChildOf sh.Layer.TreeNode VSR.Add .VirtualShape End With Next ActiveDocument.LogCreateShapeRange VSR sr.delete ' evaporate originally selected shapes End Sub Работает так: выделяем кучу объектов, запускаем макрос, тыкаем в заменитель. Имхо так быстрее, чем через тормозной буфер корела.
Опубликовано: 2010/7/9 9:28
|
|
|
Re: Сделать подобный скрипт |
|
---|---|---|
Новичок
Присоединился:
2010/7/9 1:03 Откуда Минск
Сообщений: 4
|
Спасибо, надеюсь , будет работать.
Только вот у меня знаний в этой области никаких. Не понимаю, как его сохранить, инсталлировать и запустить... Ранее скачивал готовые макросы и кидал их в папку - а чс этим кодом как поступать?
Опубликовано: 2010/7/9 10:33
|
|
|
Re: Сделать подобный скрипт |
|
---|---|---|
Титан - модератор
Присоединился:
2006/4/8 19:42 Сообщений: 152
|
а вот и готовый макрос
Опубликовано: 2010/7/9 11:05
|
|
|
Re: Сделать подобный скрипт |
|
---|---|---|
Новичок
Присоединился:
2010/7/9 1:03 Откуда Минск
Сообщений: 4
|
wOxxOm, спасибо - классный скрипт! Очень полезный и очень толковый - все одним махом делает )
Кстати, его можно модифицировать - сделать еще одну версию, чтобы новый объект копировал не только размер, но и цвет замещаемого. Еще было бы прикольно сделать версию, когда новые объекты произвольно вращаются, т.е. изменяют немного свое положение относительно своего центра вращения - это добавит "спонтанности" к результату...
Опубликовано: 2010/7/9 11:47
|
|
|
Re: Сделать подобный скрипт |
|
---|---|---|
Титан - модератор
Присоединился:
2006/4/8 19:42 Сообщений: 152
|
ээ, я потерял кайф от макросо-писания, но все это легко можно добавить в код - тут бывают товарищи с огоньком и соответствующими умениями.
Опубликовано: 2010/7/9 12:07
|
|
|
Re: Сделать подобный скрипт |
|
---|---|---|
Новичок
Присоединился:
2010/7/9 1:03 Откуда Минск
Сообщений: 4
|
товарищи с огоньком - где вы?
не ленитесь - классный скрипт получится. Пробовал сам разобраться - нашел в Кореле, где записывать макросы, но у меня какая-то фигня кривая получается - руки не оттуда растут )) Кто может дописать еще 2-3 версии на основе макроса wOxxOm? 1. чтобы новый объект копировал не только размер, но и цвет замещаемого объекта. 2. чтобы новые объекты произвольно вращались по своей оси 3. Супер-макрос Выделенные исходные объекты (например, 100 прямоугольников) замещаются в произвольном порядке на объекты, находящиеся в буфере обмена (допустим, звездочка, кружок и ромб) или по клику на группе этих сгруппированных объектов (звездочка, кружок и ромб). При этом можно также сделать несколько модификаций данного макроса: - чтобы новые объекты оставались неизменными по свойствам; - чтобы они принимали такой же размер, как у исходного объекта; - чтобы они копировали размер и цвет исходного (замещаемого) объекта; - чтобы они копировали размер и цвет исходного (замещаемого) объекта и произвольно вращались по своей оси
Опубликовано: 2010/7/9 12:46
|
|
|