wedzik Opublikowano 29 Października 2020 Zgłoś Opublikowano 29 Października 2020 Potrzebowałbym taką funkcję do kopiowania (a może już jest?): wybieram funkcje i zaznaczam element teraz mogę wpisać odległość albo zmierzyć myszą dopiero teraz wskazuję punkt bazowy i kierunek po naciśnięciu enter program wykonuje kopię w wybranym kierunku po kolejnych naciśnięciach entera tworzone są kolejne kopie w takiej samej odległości od ostatniej kopi jak odległość w punkcie 2 i w tym samym kierunku - czyli jak w punkcie 2 wpisze odległość 60, to kopie będą w 60, 120, 180, 240, 300 itp.
Adam Klaczek Opublikowano 29 Października 2020 Zgłoś Opublikowano 29 Października 2020 Może kopiowanie z szykiem? wedzik i kruszynski 1 1
wedzik Opublikowano 29 Października 2020 Autor Zgłoś Opublikowano 29 Października 2020 Dzięki za zainteresowanie. Nie znałem tego sposobu. Ale nie do końca mi pasuje bo muszę znać liczbę powtórzeń na początku. Dodatkowo chciałbym ustawić odległość powtórzeń, a dopiero potem kierunek
Adam Klaczek Opublikowano 29 Października 2020 Zgłoś Opublikowano 29 Października 2020 Może kopiować ze skokiem biegunowym i śledzeniem? dmatusz3 1
kruszynski Opublikowano 29 Października 2020 Zgłoś Opublikowano 29 Października 2020 A tak z ciekawości: W jakich sytuacjach taka funkcja może się przydać?
wedzik Opublikowano 29 Października 2020 Autor Zgłoś Opublikowano 29 Października 2020 Chciałbym np. zrobić szyk na tej górnej lini w takiej samej odległości jak pomiędzy okręgami na dolnej. Mogę sobie skopiować okręgi, potem obrócić ustawić odniesienie a potem kopiować ręcznie brakujące. Albo mierzyć, pamiętać, wpisywać. A tak: wybieram element,dwa kliki mam odległość wskazuję kierunek a każdy enter to kolejne powtórzenie.
dmatusz3 Opublikowano 29 Października 2020 Zgłoś Opublikowano 29 Października 2020 Dobrze, dzięki za informacje, postaramy się jutro wymyślić jakiś skrypt.
Martin_S Opublikowano 29 Października 2020 Zgłoś Opublikowano 29 Października 2020 Coś podobnego można zrobić w ZWCAD ARCHITECTURE np. 2019-2020, ale brakuje mi starego 2015 ZWA2019-TEST1.dwg
kruszynski Opublikowano 30 Października 2020 Zgłoś Opublikowano 30 Października 2020 Wygląda trochę jak jedna z funkcji naszego ZWGEO: https://youtu.be/E0pC28T7E-M Wiecej tutaj https://www.zwcad.pl/ui-szansa/zwgeo.html
kruszynski Opublikowano 30 Października 2020 Zgłoś Opublikowano 30 Października 2020 Taki skrypt mógłby wyglądać np tak: (defun C:SzykManualny ( / element odleglosc bazowy kierunek Koniec licznik kopiuj *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nC:SzykManualny:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq Koniec "" licznik 1 ) (defun kopiuj ( / v1 *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nkopiuj:*error*: " ) (princ msg ) (princ "\n") ) ) ) ( setq v1 ( Vector:Normalize ( Vector: kierunek bazowy ) ) ) ( setq v ( Vector:XScalar v1 (* odleglosc licznik ) ) ) ( setq clone (vlax-invoke-method element 'Copy) ) ( setq px (Vector+ bazowy v )) (vlax-invoke-method clone 'Move (vlax-3d-point bazowy) (vlax-3d-point px) ) (setq licznik (1+ licznik)) ) (setq element (SelSet:Entsel "Wskaż element" nil)) (if (null element) (*error* nil) ) (setq odleglosc (ZWCAD:GetDist "Podaj odległość" poprzedniaOdleglosc)) (if (null odleglosc) (*error* nil) ) (setq bazowy (ZWCAD:Getpoint "Wskaż punkt bazowy" nil nil ) ) (if (null bazowy) (*error* nil) ) (setq kierunek (ZWCAD:Getpoint "Wskaż kierunek" bazowy nil ) ) (if (null kierunek) (*error* nil) ) (while (equal Koniec "") ( kopiuj ) (setq Koniec ( ZWCAD:GetString "Czy wstawić kolejny" "" ) ) ) (setq poprzedniaOdleglosc odleglosc) (princ) ) (defun Vector: ( A B / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nVector::*error*: " ) (princ msg ) (princ "\n") ) ) ) (list (- (car A) (car B ) ) (- (cadr A) (cadr B ) ) (- (caddr A) (caddr B ) ) ) ) (defun Vector:Length (vec / s *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nVector:Length:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq s (+ (* (car vec) (car vec) ) (* (cadr vec) (cadr vec) ) (* (caddr vec) (caddr vec) ))) (if (< s 0.0000000000001 ) 0.0 (sqrt s )) ) (defun Vector:Normalize (v / len *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nVector:Normalize:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq len (Vector:Length v) ) (if (< len 0.00000001) (list 0.0 0.0 0.0 ) (progn (list (/ (car v ) len) (/ (cadr v ) len) (/ (caddr v ) len) ) ) ) ) (defun Vector:XScalar (v s / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nVector:XScalar :*error*: " ) (princ msg ) (princ "\n") ) ) ) (mapcar '(lambda (x) (* x s) ) v ) ) (defun Vector+ (A B / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\n Vector+ : *error*: " ) (princ msg ) (princ "\n") ) ) ) (if (null A) (setq A (list 0.0 0.0 0.0 ) )) (if (null B) (setq B (list 0.0 0.0 0.0 ) )) (list (+ (car A ) (car B) ) (+ (cadr A ) (cadr B) ) (+ (caddr A ) (caddr B ) ) ) ) (defun SelSet:Entsel (tresc filter / OldNoMutt MSel OutVal *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nSelSet:Entsel:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq tresc (strcat "\n" tresc ": ") ) (prompt tresc ) (setq OldNoMutt (getvar 'NOMUTT)) (setvar 'NOMUTT 1) (setq MSel (if (null filter) (vl-catch-all-apply 'ssget (list ":S:E" )) (vl-catch-all-apply 'ssget (list ":S:E" filter )) ) ) (setvar 'NOMUTT OldNoMutt ) (if (vl-catch-all-error-p MSel) (progn (prompt (vl-catch-all-error-message MSel)) ) (progn (if MSel (progn (setq OutVal (vlax-ename->vla-object (ssname MSel 0)) ) )) ) ) OutVal ) (defun ZWCAD:GetDist (tresc domyslny / Wynik trescformat liczba *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nZWCAD:GetDist:*error*: " ) (princ msg ) (princ "\n") ) ) ) (if domyslny (if (numberp domyslny) (setq tresc (strcat tresc "<" (rtos domyslny 2 4) ">") ))) (setq tresc (strcat "\n" tresc ": ")) (setq liczba(vl-catch-all-apply 'getdist (list tresc ))) (if (vl-catch-all-error-p liczba) (progn (prompt (vl-catch-all-error-message liczba)) (setq Wynik nil ) ) (progn (if (null liczba) (setq Wynik domyslny ) (setq Wynik liczba) ) ) ) Wynik ) (defun ZWCAD:Getpoint (tresc P0 domyslny / SelPt Wynik *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nZWCAD:Getpoint:*error*: " ) (princ msg ) (princ "\n") ) ) ) ;(ZWCAD:Getpoint tresc P0 domyslny ) (setq tresc (strcat "\n" tresc ": ")) (if (not(null P0)) (setq SelPt(vl-catch-all-apply 'getpoint (list P0 tresc ))) (setq SelPt(vl-catch-all-apply 'getpoint (list tresc ))) ) (if (vl-catch-all-error-p SelPt) (progn (prompt (vl-catch-all-error-message SelPt)) (setq Wynik nil ) ) (progn (if (null SelPt) (setq Wynik domyslny ) (setq Wynik SelPt) ) ) ) Wynik ) (defun ZWCAD:GetString (tresc domyslny / *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nZWCAD:GetString:*error*: " ) (princ msg ) (princ "\n") ) ) ) (setq tresc (strcat "\n" tresc ": ")) (String:Get tresc domyslny) ) (defun String:Get (komunikat defVal / Wynik tekst *error* ) (defun *error* ( msg / ) (if (not (null msg ) ) (progn (princ "\nString:Get:*error*: " ) (princ msg ) (princ "\n") ) ) ) ; (setq komunikat "podaj tekst" ) ; (setq defVal "SLU" ) (if defVal (if (not(= defVal "")) (setq komunikat (strcat komunikat "<" defVal ">:" ) )) ) (setq tekst(vl-catch-all-apply 'getstring (list komunikat ))) (if (vl-catch-all-error-p tekst) (progn (prompt (vl-catch-all-error-message tekst)) (setq Wynik nil ) ) (progn (if (null tekst) (setq Wynik defVal ) (if (= tekst "") (setq Wynik defVal ) (if (= tekst ".") (setq Wynik "") (setq Wynik tekst) ) ) ) ) ) Wynik ) Szyk.lsp wedzik 1
Adam Klaczek Opublikowano 30 Października 2020 Zgłoś Opublikowano 30 Października 2020 Również polecenie MEASURE... Jeżeli okrąg zapisać jako blok, zadziała tak: wedzik 1
wedzik Opublikowano 30 Października 2020 Autor Zgłoś Opublikowano 30 Października 2020 Dziękuję. Bardzo mi to ułatwi życie. Jest nawet lepiej niż myślałem bo można wybrać dowolny punkt bazowy. Jeden tylko problem mam,że mogę wskazać tylko jeden element do kopiowania a chciałbym móc zaznaczyć więcej obiektów.
Adam Klaczek Opublikowano 30 Października 2020 Zgłoś Opublikowano 30 Października 2020 6 minut temu, wedzik napisał: [...] chciałbym móc zaznaczyć więcej obiektów. Wszystkie musiały by być w bloku
Martin_S Opublikowano 30 Października 2020 Zgłoś Opublikowano 30 Października 2020 4 godziny temu, kruszynski napisał: Wygląda trochę jak jedna z funkcji naszego ZWGEO: https://youtu.be/E0pC28T7E-M Wiecej tutaj https://www.zwcad.pl/ui-szansa/zwgeo.html dokładnie tak , to przykład praktycznego oznaczania "ogrodzenia" na np. planie zagospodarowania wg normy polskiej
dmatusz3 Opublikowano 30 Października 2020 Zgłoś Opublikowano 30 Października 2020 4 godziny temu, kruszynski napisał: Wygląda trochę jak jedna z funkcji naszego ZWGEO: Wkrótce odbędzie się webinarium ZWGeo, na którym pokażemy jak pracować z mapami cyfrowymi Zapraszam
kruszynski Opublikowano 30 Października 2020 Zgłoś Opublikowano 30 Października 2020 W załączniku aktualizacja pozwalająca wskazywać wiele elementów Szyk.lsp dmatusz3 i wedzik 2
dmatusz3 Opublikowano 30 Października 2020 Zgłoś Opublikowano 30 Października 2020 Nagrałem krótki film pokazujący jak działa skrypt. wedzik 1
wedzik Opublikowano 2 Listopada 2020 Autor Zgłoś Opublikowano 2 Listopada 2020 Dziękuję za pomoc! Skrypt jest świetny. Tego właśnie potrzebowałem.
zwonko Opublikowano 24 Sierpnia 2021 Zgłoś Opublikowano 24 Sierpnia 2021 KIedyś, myślałem o czymś podobnym. Dla mnie lepiej by było gdyby wskazywać rozstaw, a potem punkt poczatkowy i końcowy. Najlepiej żeby z obiektów była tworzona grupa. Nie lubie szyków, ani nowego (ARRAY w ZWCAD 2021) ani starego (ARRAY CLASSIC), zresztą nie zawsze są dla mnie wystarczające bo czasem musze obiekt przestawić, tj. pojedynczy element nie ma takiego samego rozstawu (rysowanie zbrojenia). Dzisiaj chyba to co chciał osiągnąć autor można robić "nowym" szykiem (polecenie ZWCAD 2021)
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się