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

CorelDRAW - grafika wektorowa - eksport współrzędnych środków obiektów do pliku

AgnieszkaG - 19 Luty 2014, 11:37
Temat postu: eksport współrzędnych środków obiektów do pliku
Witam,
mam plik, w którym naniosłam 300 elips i potrzebuję go wyeksportować z cdr jako plik, który odczytam w excelu i będzie zawierał współrzędne x i y poszczególnych obiektów.

Będę bardzo wdzięczna za pomoc.

Pozdrawiam

s-p-i-n - 19 Luty 2014, 11:59

raczej nie wykonalne
tegraf - 19 Luty 2014, 12:37

Narysuj jedną elipsę o średnicy 50 mm na kartce o wymiarach 100x100 mm. Umieść środek elipsy w punkcie o współrzędnych 25, 25 mm (lewy, dolny narożnik). Wyeksportuj jako svg. Otwierając ten plik w notatniku, znajdziesz gdzieś linię podobną do tej:

Kod:
  <circle class="fil0 str0" cx="25" cy="75" r="25"/>


Cx to współrzędna x, Cy - to współrzędna Y. r - promień. Od razu widać, że współrzędna Y jest liczona inaczej (0,0 to lewy górny róg, inaczej niż w Corelu, wartość 75 wynika z liczenia 100-25=75). Więc będzie Ci potrzebny jakiś "czyściciel" tego pliku ze zbędnych danych oraz obliczający poprawną współrzędną Y - chyba, że nie trzeba lub zmienisz początek współrzędnych w Corelu.

Nic innego chyba się nie da wykombinować.

AgnieszkaG - 19 Luty 2014, 13:27

Ok, dzięki. Fakt, liczy y inaczej, a moje współrzędne były na tyle szczegółowe, że nie widziałam tego na pierwszy rzut oka. Dzięki za pomoc!
chezare - 20 Luty 2014, 07:50

Prościej chyba byłoby napisać kilka linijek makra. Jedno kliknięcie i po robocie.
Może np. tak:
Kod:
Sub elipsy()
'deklaracje zmiennych
Dim x As Double
Dim y As Double
Dim w As Double
Dim h As Double
Dim s As String
Dim el As Shape
'koniec deklaracji

ActiveDocument.Unit = cdrMillimeter 'zmiana czytanych wartości na milimetry,
                                    'standardowo są cale
s = "" 'wyczyszczenie łańcucha tekstu do którego będą wpisywane wartości
  For Each el In ActivePage.Shapes 'pętla wyszukująca na stronie elipsy,
                                   'tylko elipsy :-)
   If el.Type = cdrEllipseShape Then 'jak się jakaś znajdzie to
     el.GetPosition x, y 'czytana jest jej pozycja w odniesieniu do początku wsp.
                         'lewa i górna krawędź
     el.GetSize w, h     'a tutaj szerokość i wysokość elipsy
     'tutaj zapamiętywane są wartości
     s = s + str(x) & ";" & str(y) & ";" & str(w) & ";" & str(h) & Chr(13)
   End If
  Next el
If s <> "" Then 'jeśli napis przechowujące wartości nie jest pusty
                'to są one wpisywane na stronę, wystarczy je skopiować
ActiveLayer.CreateArtisticText ActivePage.SizeWidth, ActivePage.SizeHeight, s, _
cdrPolish, , "Arial", 12, cdrFalse, cdrFalse, , cdrLeftAlignment
End If
End Sub


Powpisywałem te głupie komentarze żeby mnie kolega Szaman nie sponiewierał :-)
Wszystko za apostrofem można pokasować.


To oczywiście zadziała tylko wtedy kiedy elipsy nie zostały "skrzywione" i program widzi je jako elipsy. Wystarczy skopiować tekst, wkleić do np. notatnika, zapisać i otworzyć w Excelu wybierając jako znak rozdzielający średnik.


Powered by phpBB modified by Przemo © 2003 phpBB Group