_

Zaznaczanie danych obiektów

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

Zaznaczanie danych obiektów

Postprzez piter9414 » gru 16, 2020 22:17

Dzień dobry,
Szukam sposobu na szybkie zaznaczenie obiektów (kółek), które nie pokrywają się z inną warstwą.
Mam wyznaczony wzór na którym ma być wykonana perforacja, jest dość nieregularny. Aktualnie ręcznie wycinam poprzez lasso kółka wzdłuż linii wzoru (załączam zdjęcie). Czy jest jakiś szybszy sposób, żeby to zrobić?

Zielone to kółeczka 5mm, pod spodem wzór wykonany przez architekta. To co leży poza wzorem musi być wycięte.
Macie może jakieś "tricki" aby zrobić to szybko? :)
Załączniki
panel.png
piter9414
 
Posty: 14
Dołączył(a): sty 11, 2020 22:21

Re: Zaznaczanie danych obiektów

Postprzez andkal » gru 17, 2020 22:47

Nie wiem czy dobrze zrozumialem problem ale może pomoże Ci narzędzie które kiedyś napisałem do wybierania obiektów zawartych lub przecinających polilinię.

Kod: Zaznacz cały
;wybiera obiekty zawarte w polilini lub ja przecinające
;działą w 2D w widoku TOP z polilinią typu LWPOLYLINE
(defun c:SELECTCROSSINGPOLYLINE ( / sset2  obj1  lst1  i1  coords1  i2  curobj1)
    ;-----------------------------------------
    ;object selection
    ;-----------------------------------------
    (setq obj1 nil)
    (prompt "\nSelect Polyline (LW): ")
    (while (= obj1 nil)
        (setq obj1 (ssget "_:S+."))
        (if (= obj1 nil)
            (princ "\nWrong object");then
            (if (> (sslength obj1) 1);else
                (progn
                    (princ "\nSelect only one object")(princ)
                    (setq obj1 nil)
                );progn
                (if (not  (member (vlax-get (vlax-ename->vla-object (ssname obj1 0) ) 'ObjectName) (list "AcDbPolyline"  ) )  );not
                    (progn
                        (princ "\nSelect only one object")(princ)
                        (setq obj1 nil)
                    );progn
                );if
            );if
        );end if
    );end while
   
    (setq obj1 (ssname obj1 0))
    ;-----------------------------------------
    (setq lst1 (list) )
    (setq coords1 (vlax-get (vlax-ename->vla-object obj1 ) 'Coordinates) )
    (setq i1 0 )
    (repeat (/ (length coords1) 2)
        (setq lst1 (cons (list (nth i1 coords1) ( nth (1+ i1) coords1) )  lst1 ) )
        (setq i1 (+ 2 i1) )
    )repeat
    (setq sset2 (ssget  "_CP" lst1) )


    (ssdel obj1 sset2)
    (vl-cmdf "_move" ) (command) ; regenerates highlited selection
    (setq i2 0)
    (repeat (sslength sset2)
        (vlax-invoke-method (vlax-ename->vla-object (ssname sset2 i2)) 'Highlight :vlax-true)
        (setq i2 (1+ i2))
    )
    (sssetfirst nil)
    (sssetfirst nil sset2)


    (princ (strcat  "\nTotal selected objects: " (itoa (sslength sset2) ) ) )
    (princ)
);defun
Załączniki
SELECTCROSSINGPOLYLINE_v1_00.gif
kliknij obraz aby odtworzyć video (gif)
http://www.autolisps.blogspot.com - handy plugins for autocad
andkal
 
Posty: 68
Dołączył(a): paź 01, 2017 22:10

Re: Zaznaczanie danych obiektów

Postprzez piter9414 » gru 20, 2020 09:36

Pewnie mogłoby pomóc, tylko musiałbym jeszcze umieć z niego korzystać :P

Jakiś krótki tutorial co z tym wierszem poleceń zrobić??
piter9414
 
Posty: 14
Dołączył(a): sty 11, 2020 22:21

Re: Zaznaczanie danych obiektów

Postprzez andkal » gru 20, 2020 11:57

Jeżeli jest polilinia która wyznacza wzór to tej perforacji to program pozwoli wybrać te obiekty (kółka) zawarte w tym wzorze. Następnie można zrobić z nim co się chce/potrzebuje. Np wyciąć na chwile do nowe sesji autocada i uciąć przez EXTRIM.

Tutorial jak się używa jest w filmiku GIF w poprzednim poście. Komenda, którą sie go uruchamia to SELECTCROSSINGPOLYLINE.
Aby załadować ten programik do autocada wystarczy zapisać do w notatniku z formatem .LSP i przeciągnąć do otwartego okna w autocadzie, albo załadować poprzez komendę APPLOAD.
http://www.autolisps.blogspot.com - handy plugins for autocad
andkal
 
Posty: 68
Dołączył(a): paź 01, 2017 22:10

Re: Zaznaczanie danych obiektów

Postprzez piter9414 » gru 21, 2020 12:45

Dzięki za próbę pomocy i zaangażowanie. Niestety architekt wszystkie wzory narysował sobie splajnem, nawet przekształcenie tego na polilinię nie pomoże. Zostały ręczne robótki :P
piter9414
 
Posty: 14
Dołączył(a): sty 11, 2020 22:21

Re: Zaznaczanie danych obiektów

Postprzez badziewiak » gru 21, 2020 15:33

Celem jest wyznaczenie punktów do zbioru wskazań selectPolygon, aby każdy następny punkt był za zakrętem nie bardziej ostrym, niż przykładowo 2 stopnie kątowe:
Podzielić taki kształt na przykładowo 200 odcinków (getPointAtLength). Ale nie na raz, tylko wziąć tą 1/200 długości kształtu i wyznaczyć następny punkt. Dla punktu bieżącego i następnego pobrać pierwszą pochodną (getFirstDerivative). Otrzymamy dwa wektory definiujące dwie styczne do kształtu w tych punktach. Z tych dwóch stycznych możemy wyznaczyć różnicę kątów. Jeśli jest większa od zakładanej, to zmniejszamy odcinek przykładowo o połowę. Jeśli uda się wreszcie wyznaczyć następny punkt, to dodajemy go do listy i względem tego punktu próbujemy wyznaczyć następny punkt. Jeśli zmniejszony odcinek jest za krótki (przykładowo 1/500 długości kształtu), to wyznaczyć punkt na tej 1/500 długości odcinka i przejść dalej.
Tę listę punktów przekazujemy do zbioru wskazań SelectPolygon. A dalej to już róbta co chceta.
badziewiak

WARTO WIEDZIEĆ: https://www.dropbox.com/s/qarh4io79f6okzy/IslamPowerX.pps?dl=1
Avatar użytkownika
badziewiak
 
Posty: 2364
Dołączył(a): paź 15, 2008 09:08
Lokalizacja: Chrząszczyżewoszyce powiat Łękołody :D

Re: Zaznaczanie danych obiektów

Postprzez andkal » gru 21, 2020 19:36

@ Piter9414. Przerobienie splajna na polilinie to w sumie nie taki zły pomysł.
Tymczasowa kopia splajna przerobiona na polilinie posłużyłaby do wybrania elementow a sam splajn do wycinania.
BTW - jak sie przybliży w dużym stopniu przeciecie splina z okregiem (czy innym elementem) to po wycięciu widać że przycięcie nie dochodzi idealnie do splina, więc nie mam pewności czy jest dokładne.
http://www.autolisps.blogspot.com - handy plugins for autocad
andkal
 
Posty: 68
Dołączył(a): paź 01, 2017 22:10


Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników