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

CorelDRAW - grafika wektorowa - Zaznaczenie wszystkiego wewnątrz krzywej.

doominus31 - 17 Sierpień 2016, 00:42
Temat postu: Zaznaczenie wszystkiego wewnątrz krzywej.
Cześć.

Mam kilkanaście krzywych. W każdej zamkniętej krzywej są różnego rodzaju obiekty/krzywe.
Chce teraz krzywą razem ze wszystkim w środku zgrupować.
Jak to najprościej zrobić?
Na rysunku jest zrobiony niby nesting, więc normalnie zaznaczając przy okazji zaznaczę obiekty z innej krzywej.

chezare - 17 Sierpień 2016, 03:52

Niestety, jak się źle zorganizuje pracę, to później jest tak jak u Ciebie.
Musisz klikać, albo zakreślać kursorem poszczególne elementy, które chcesz zgrupować z wciśniętym klawiszem shift, szybciej się chyba tego zrobić nie da.

blo - 17 Sierpień 2016, 11:44

Jeśli nie ma tego za dużo to można zacząć zaznaczanie od jednej z krawędzi arkusza i jak już zaznaczy się daną grupę obiektów to przenosić je na inną warstwę a następnie wyłączać tę warstwę.
doominus31 - 17 Sierpień 2016, 12:59

To nie ja to Autodesk tak robi.

Z programu dostaje właśnie coś takiego... tylko że na początku jest większa kaszana na szczęście podzielona na odpowiednie warstwy.

Pierwsze trzeba wszystko zaznaczyć i użyć funkcji join curve. Potem po kilku minutach jak C to przetrawi reduce node. I tak na 3 warstwach. A potem zaznaczanie wszystkiego co przynależy do danego elementu i grupowanie. Po grupowaniu można bawić się w nesting.

Pojedyńczych elementów składających się z wielu drobniejszych do zgrupowania.
Jest ok 800-1000 szt.

Problemem by to nie było gdyby z softu Autodesk wychodziły od razu znestingowane obiekty.
A tu masakra straty na materiale jak nie wiem.


chezare - 17 Sierpień 2016, 22:36

Od razu wiedziałem, że to demozaur. :-)
Wycinasz to ze złota? Ja bym się zastanowił, czy ta praca jest warta kawałka materiału, z tego co widzę na obrazku który zamieściłeś, niewielkiego. Moim zdaniem szkoda pracy. Do tego, jeśli to wygląda tak jak na obrazku, to dosyć łatwo zaznaczyć komplet obiektów, bo każdy zawarty jest w prostokątnym polu nie mającym wspólnej części z sąsiadem.

doominus31 - 18 Sierpień 2016, 21:24

To tylko przykład.
Robię coś większego.

bidon184 - 18 Sierpień 2016, 22:39

no ale ja nie kumam ,auto desk i otwieramy w corelu i mamy pretensje ze krzywe nie zlaczone,to jakis kosmos,ufff prztea to inna idea softu i zapisu wektorow :roll:
doominus31 - 19 Sierpień 2016, 20:48

Autodesk zapisuje do dxf lub eps lub pdf.

Idea jest taka a w zasadzie cel tego programu żeby stworzyć plik dla plotera tnącego.
Niestety to co z tego wychodzi to niezoptymalizowana kaszanka.

bidon184 - 19 Sierpień 2016, 21:00

nie nie nie kolego :-) tn program to wirtualizacja i to jego cel to nie ma nic wspolnego z wykonywalnym wektorem na papierze :-)
doominus31 - 19 Sierpień 2016, 21:08

Co przez to rozumiesz?

Wgrywa się do niego model.
Wybiera rodzaj materiału i technikę.
I otrzymujemy plik dla plotera.
Wycinamy i mamy po sklejeniu taki obiekt.


Mogę taki gotowy puścić na ploter ale optymalizacja takiego pliku leży i kwiczy.
Trzeba poprawić kilkoma narzędziami żeby był ok.
Pierwsze to join curve a drugie reduce nodes.
I plik jest już zdatny dla plotera. Ale nie ma optymalizacji cięcia, idzie w cholerę odpadu materiału.

A ręcznie nie da się tego zrobić bo części są rozsypane.

grzjanik - 28 Listopad 2016, 10:00
Temat postu: Zaznaczanie wewnątrz krzywej
Poniższe macro robi to czego potrzebujesz.

Zaznaczasz krzywą wewnątrz której są obiekty i klikasz Uruchom macro. Tyle.

Pozdrawiam. GrzJanik

Kod:
Sub ZaznaczWewnatrzKrzywej()

If ActiveDocument Is Nothing Then MsgBox "Otwórz dokument.": Exit Sub
If ActiveShape Is Nothing Then MsgBox "Zaznacz obiekt!", vbCritical: Exit Sub

    Dim OrigSelection As ShapeRange
    Set OrigSelection = ActiveSelectionRange
    Dim Doc As Document, s As Shape, sOverLap As Shape
    Dim X As Double, Y As Double, w As Double, h As Double
    Set Doc = ActiveDocument

    Doc.ReferencePoint = cdrCenter
    Doc.ActiveShape.GetBoundingBox X, Y, w, h
    Set sOverLap = Doc.ActivePage.SelectShapesFromRectangle(X, Y, X + w, Y + h, True)
    ActiveSelectionRange.UngroupAll
    Set sOverLap = Doc.ActivePage.SelectShapesFromRectangle(X, Y, X + w, Y + h, True)
    OrigSelection.RemoveFromSelection

End Sub


[/code]

Daj znać czy Ci się przyda. :)

doominus31 - 9 Grudzień 2016, 22:48

Fajnie ale straciłem wszystkie projekty.

Sprawa jest taka że ten program dzieli sortuje krzywe na odpowiednie warstwy.

Wiec mamy
warstwę zewnętrzną obrysu przekroju
warstwę wewnętrzną z otworami jeśli takie były w przekroju
warstwę z otworami punktami pozycjonującymi przekroje miedzy sobą
warstwę z oznaczeniem liczbowym porządkowym danego przekroju

Najfajniej byłoby gdyby skrypt zaznaczał po kolei obiekty na warstwie 1 i scalał w grupę z pozostałych warstw.


Niestety tego na razie nie wypróbuje.


Powered by phpBB modified by Przemo © 2003 phpBB Group