Corel FORUM
Forum użytkowników programów firmy Corel. Grafika wektorowa, rastrowa i obróbka zdjęć cyfrowych

Makra - Makro zmiany rozmiaru wg %

kadoesdoi - 30 Listopad 2022, 14:03
Temat postu: Makro zmiany rozmiaru wg %
Hej Wszystkim

Próbowałem zrobić skrypt i makro który zmniejszałby obiekt m. in. o 4%.
Niestety okazało się, że na innych obiektach nie działa poprawnie ponieważ mimo że wpisywałem 96% w polu procentowym to skrypt zapamiętuję rozmiar obiektu a nie to o ile procent zmniejszyłem obiekt.

Czy jest możliwość stworzenia takiego skryptu?

kek - 1 Grudzień 2022, 08:37

Witam.
Ale po co skrypt?
Wystarczy, że zaznaczysz obiekt, a następnie w oknie "Współczynnik skalowania" wpiszesz o ile chcesz zmniejszyć/zwiększyć dany obiekt.
Np. w oknie masz 100% dopisujesz -4 (100-4), i obiekt zmniejszy się o 4%.
Jeśli w oknie masz inną liczbę niż 100, to dorysuj w obiekcie jakiś kwadracik, który późnij wykasujesz, i później zaznaczając całość masz w okienku procentów 100. Dalej postępujesz jak na początku pisałem, a na koniec usuwasz dodany element i gotowe.

kadoesdoi - 1 Grudzień 2022, 12:13

Hej.

I tak teraz pracuję. :)

Mam trzy stałe wartości które się powtarzają w mojej pracy.
Chciałbym mieć skrypt do każdej z nich aby ustawić skróty klawiaturowe.

W zaawansowanej formie chciałbym, aby skrypt obiekt z pierwszej strony skopiował na druga i zmniejszył o 4 lub 15%, a oryginał z pierwszej zmniejszył o 73 % i zmienił położenie, dopasowując grafikę do wizualizacji. :)

Nie wiem w ogóle czy to jest możliwe, ale taki chciałbym skrypt.
Póki co zatrzymałem się na procentowym zmniejszaniu.

kadoesdoi - 6 Styczeń 2023, 10:16

Hej

Informatyk z mojej pracy chcąc pomóc podesłał taki skrypt, ale coś nie działa.
Macie może pomysł dlaczego?


VBA script dla CorelDraw

Sub ResizePercentage(percentage As Double)
Dim sel As Selection
Set sel = ActiveSelectionDim obj As Shape
For Each obj In sel
Dim newWidth As Double
newWidth = obj.Width * (percentage / 100)
Dim newHeight As Double
newHeight = obj.Height * (percentage / 100)

' Resize the object
obj.SetSize newWidth, newHeight
Next
End Sub


Pozdro.

Martin Nez - 4 Marzec 2023, 01:47

Witam,
spróbuj tego - nie jest to rozwiązanie Twojego problemu z resetowaniem pola procentowego, ale chyba nada się do tego co chcesz stworzyć.
Kod:
Sub test()
    ksi 90
End Sub

Sub ksi(procent As Double)
    ActiveSelection.SetSize ActiveSelection.SizeWidth * (procent / 100), 0#
End Sub

Pozdr,
MN

krof - 5 Grudzień 2023, 14:55

Sub nowa_warstwa()
' Tworzenie nowej warstwy
Dim la2
la2 = "Warstwa-4%" 'Nazwa warstwy

Set newLayer = ActiveDocument.ActivePage.CreateLayer(la2)
If ActiveSelectionRange.Shapes.Count = 0 Then
MsgBox "Nie zaznaczono obiektów do przeskalowania", 16, "Uwaga"

Else
'kopiowanie z warstwy podstawowej do warstyw la2
Set sr = ActiveSelectionRange
sr.Copy
newLayer.Paste

'przeskalowanie obiektu na warstwie la2
Set sr1 = newLayer.Shapes.All

sr1.SizeHeight = sr1.SizeHeight * 1.04
sr1.SizeWidth = sr1.SizeWidth * 1.04

MsgBox "Wykonano"
End If

End Sub

Teraz można się bawić dalej dodać jeszcze jedną warstwę, jakieś dodatkowe fajerwerki np.sprawdzanie czy warstwa o takiej nazwie już isnieje.


Powered by phpBB modified by Przemo © 2003 phpBB Group