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

FAQ - najczęściej zadawane pytania - grupowa zmiana parametów wymiaru obiektów

elmo - 20 Czerwiec 2009, 13:11
Temat postu: grupowa zmiana parametów wymiaru obiektów
dzień dobry

to mój pierwszy post na forum - więc nie bijcie za bardzo...

mam pytanie: czy istnieje możliwość zmiany wymiarów identycznych obiektów (np. elips - o takich samych parametrach) ale w taki sposób aby nie zmieniły po tej transformacji swoich położeń???

z góry dziękuję za pomoc
elmo

tlomiej - 20 Czerwiec 2009, 22:30

jesli cie dobrze zrozumiałem to wystarczy wpisac nowe wymiary w "górnym pasku"
elmo - 22 Czerwiec 2009, 07:54

niestety nie do końca...
chodzi o to że po zaznaczeniu grupy obiektów wpisanie nowych parametrów wymiaru będzie się odnosić do całości zaznaczenia a nie poszczególnych obiektów (co powoduje że zmienia się położenie konkretnych obiektów)...
mi zaś chodzi o zaś o to aby np. w grupie 20 elips zmienić ich wymiary ale bez zmiany ich położenia - oczywiście można to zrobić z każdą oddzielnie ale jest to strasznie pracochłonne...

zatem czy jest jakiś sposób przyśpieszenia tej pracy???

wawel - 22 Czerwiec 2009, 18:02

Moze tak:
1. wyszukac w dokumencie te owale o konkretnych parametrach (Edycja- znajdz i zamien - znajdz obiekty i tu wybrac wlasciwe i nast. znajdz wszystkie)
2. zaznaczone obiekty wyciac skrot (ctrl x)
3. Otworzyc nowy dokument i ctrl v (wkleic te owale) - rozgrupowac jesli sa zgrupowane
4. Uzyc tego macro z visual basic - narzedzia Visual Basic - uruchom
macro do uzycia:

Sub Scaleforumcorel()
Dim s As Shape
ActiveDocument.ReferencePoint = cdrCenter
For Each s In ActiveDocument.ActivePage.Shapes
s.Stretch 0.7
Next s
End Sub

parametry skalowania mozna oczywiscie zmienic - te cyfe.

przykladowa skala:

pomniejszanie
0.5 - skala 50%
0.55 - skala 55%
0.7 - skala 70%

powiekszanie
1.5 - skala 150 %
itd

To macro powinno nam przeskalowac hurtem wszystkie obiekty w dokumencie.

5. Zaznaczamy wszystko, kopiujemy i wklejamy do tego pierwszego domumentu.

Jesli tych elementow jest mniej to wystarczy (zamiast tego macro) w nowym dokumencie zmniejszyc jeden owal i nastepnie nacisnac tab (skok do nastepnego obiektu) i kombinacje klawiszy ctrl R (powtorz) i tak powtarzac kilka razy.
pozdr.

elmo - 23 Czerwiec 2009, 08:23

dzięki Wawel :)

drugi sposób działa
przy czym, w moim przypadku nie muszę kopiować do nowego dokumentu ponieważ rysuję głównie z zastosowaniem wielu warstw tak więc mogę wykonać tę procedurę w obrębie danego rysunku

pytanie co do pierwszego sposobu - wykonuję ten rysunek w Corelu "9" (może ma to jakiś wpływ) ale po skopiowaniu grupy obiektów do nowego rysunku i... no właśnie nie mogę użyć "narzędzia - visual basic" - ponieważ nie jest on aktywny (podświetlony) zatem skąd należy pobrać owe macro lub w jaki sposób stworzyć je?

dzięki i pozdrawiam

wawel - 23 Czerwiec 2009, 09:18

Co do rozwiazania nr 1
Makro nie jest aktywne bo go trzeba zrobic lub zmodyfikowac jakies inne gotowe dostepne w corelu. To makro przygotowalem pod ten problem wiec na liscie makr byc go nie moze.
Wrzucilem w wersji tekstowej tak zeby bylo widac o co tam chodzi i aby mozna bylo zobaczyc gdzie modyfikowac parametr dot. skalowania.

Nie wiem jak w wersji 9 sie to sprawdzi to rozwiazanie ale na 12 to dziala wiec mozna np tak.
sposob 1.
1. Narzedzia -> visual basic -> uruchom i w tym okienku ktore sie pojawi wybrac jakies dostepne z listy rozwijanej na dole macros in. Jesli nie ma tam makr mozna sciagnac dowolne darmowe np. CropMarks.gms np z tej strony www.oberonplace.com/vba/drawmacros/index.htm tam tez jest instrukcja gdzie to zainstalowac.
2. Po wybraniu makra z listy naciskamy z prawej edit
3. Otworzy sie edytor i pod tymi wpisanymi makrami wkleic trzeba ten tekst

Sub Scaleforumcorel()
Dim s As Shape
ActiveDocument.ReferencePoint = cdrCenter
For Each s In ActiveDocument.ActivePage.Shapes
s.Stretch 0.7
Next s
End Sub

4. File -> save macro
5. Wychodzimy z edycji kombinacja klawiszy Alt Q

6. Teraz powinnismy otrzymac na liscie obok roznych innych makr w ramach tego makra - Crop marks jako dodatkowa opcje scaleforumcorel.
7. po jego wskazaniu naciskamy run
8. Macro dziala i skaluje wszystkie elementy teksty, wektory i mapy bitowe - jest wiec uniwersalne.

Jesli ten sposob nie zadziala w wersji 9
mozna sprobowac tak:
1. rysujemy dowolny element np prostokat
2. Narzedzia -> visual basic -> rejstruj
3. powiekszamy ten kwadrat
4. Narzedzia -> visual basic -> zatrzymaj
5. Narzedzia -> visual basic ->uruchom -> edytuj i w miejsce tego zapisanego wpisu wklejamy

Sub Scaleforumcorel()
Dim s As Shape
ActiveDocument.ReferencePoint = cdrCenter
For Each s In ActiveDocument.ActivePage.Shapes
s.Stretch 0.7
Next s
End Sub

teraz wykonujemy kroki tak jak wyzej od pt 4

Gdy chcemy zmienic skale w zapisanym makro przechodzimy do jego edycji i zmieniamy np 0.7 na 0.5 lub dowolna inna wartosc.
Corel pokazuje nam zawsze skale wiec nie ma problemu zeby dobrac do zmniejszonego czy powiekszonego elementu skale bo pokazuje na pasku wlasciwosci skale nawet jesli zmniejszylismy rozmiar w mm.

Narzedzia Visual basic tez byc moze nie sa aktywne bo moze nie bylo pelnej instalacji corela?
pozdr.

elmo - 23 Czerwiec 2009, 20:46

wielkie dzięki - działa :)
wawel - 24 Czerwiec 2009, 13:19

Wlasciwie skoro masz to na warstwach
to wklejajac ten tekst z jedna modyfikacja

Sub Scaleforumcorel()
Dim s As Shape
ActiveDocument.ReferencePoint = cdrCenter
For Each s In ActiveDocument.ActiveLayer.Shapes
s.Stretch 0.7
Next s
End Sub

to przeskaluje wszystkie elementy w ramach aktywnej (wybranej) warstwy bez wychodzenia do innego dokumentu, i skalowania innych obiektow na nie zaznaczonych warstwach.
pozdr.

Krasbit - 28 Czerwiec 2009, 20:35

elmo napisał/a:
mam pytanie: czy istnieje możliwość zmiany wymiarów identycznych obiektów (np. elips - o takich samych parametrach) ale w taki sposób aby nie zmieniły po tej transformacji swoich położeń???


Szybko, wygodnie i bez znajomosci VBA można wykonac te zadanie zrobic korzystając z tych makr do przenoszenia właściwości obiektu.


1. zaznacz obiekt wzorcowy w ktorym zmieniles wymiar na pożądany
2. wybierz makro Właściwości do skopiowania i zaznacz szerokosc, wysokosc oraz punkt odniesienia = cdrCenter (w przypadku elips i chęci pozostawienia niezmiennie centrum w srodku okregu - jezeli o to Ci chodzilo)
3. kliknij w kopiuj właściwości zaznaczonego obiektu.
4. zaznacz pozostałe obiekty ktorym chcesz nadac te same wymiary
5. kliknij w przenieś właściwości na zaznaczone obiekty.
Dodatkowym atutem jest mozliwość przeniesienia tych wlasciowsc na wszystkie obiekty w wybranym zakresie stron jednym kliknięciem korzystając z makra przenieś właściwości na nazwane obiekty . Warukiem jest odpowiednie przygotowanie projektu (po prostu nazwanie wszystkich tych elips wspólna nazwą np "elipsy") i podanie tej nazwy jako parametru.

Krasbit - 30 Czerwiec 2009, 13:50

Korzystając z tych makr możesz również kopiować i wklejać inne właściwości miedzy obiektami ( w tym efekty i wypełnienia). Zobacz przykład pod tym adresem:
Copy and Paste properties between objects - the simplest way!


Powered by phpBB modified by Przemo © 2003 phpBB Group