-
Postów
33 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
7
Treść opublikowana przez RobS
-
Rozmieszczenie punktów na polilinii
RobS odpowiedział(a) na Szyszmar temat w Wsparcie programistyczne LISP i VisualLISP
Skrypt ma rozszerzenie zelx także jest zaszyfrowany dla programów z rodziny ZWCAD. -
Hej, Napisałem skrypt który przepisuje wartość atrybutu o wskazanej nazwie do hiperłącza w wybranych blokach. Zwróć uwagę na wielkość liter w nazwach, ponieważ ma ona znaczenie. Skrypt uruchamia polecenie PrzepiszDoHiperlinku. (vl-load-com) (princ (strcat " Copyright © 2000 — 2025 Usługi Informatyczne Szansa www.zwcad.pl Dostępne polecenia: PRZEPISZDOHIPERLINKU - skrypt automatycznie przepisuje wartość wskazanego atrybutu do hiperłącza w wybranych blokach ") ) (defun LM:vl-getattributevalue ( blk tag ) (setq tag (strcase tag)) (vl-some '(lambda ( att ) (if (= tag (strcase (vla-get-tagstring att))) (vla-get-textstring att))) (vlax-invoke blk 'getattributes)) ) (defun C:PRZEPISZDOHIPERLINKU (/ blockName przepiszVal ss i ent val) (setq blockName (getstring t "\nWpisz nazwę bloku: ")) (setq attName (getstring t "\nWpisz nazwę atrybutu: ")) (setq ss (ssget "_X" (list (cons 2 blockName)))) (setq i 0) (repeat (sslength ss) (setq ent (ssname ss i)) (setq obj (vlax-ename->vla-object ent)) (setq val (LM:vl-getattributevalue obj attName)) (vla-add (vla-get-hyperlinks obj) val (vl-filename-base val)) (setq i (+ i 1)) ) (princ) ) PrzepiszDoHiperlinku.lsp
-
Hej, Warto naprawić rysunek poleceniem TEST, skopiować całość skrótem Ctrl + A -> Ctrl + C i wkleić w nowym rysunku z oryginalnymi współrzędnymi poleceniem _PASTEORIG. Dla bezpieczeństwa rysunek warto zapisać pod nową nazwą. Możesz też podesłać rysunek w wiadomości prywatnej, sprawdzę zachowanie u siebie.
-
ZWCAD 2020 // łączenie wielu plików DWG w jeden
RobS odpowiedział(a) na adamstef temat w ZWCAD Standard i Professional
Hej, Ile znaków mają nazwy tych plików? Czy w nazwie rysunku lub ścieżce są polskie znaki? Spróbowałem z plikiem którego nazwa ma ponad 100 znaków i wgrał się bez przeszkód. Być może problem leży w czymś innym. Jeśli możesz to podeślij przykładowy plik który jest pomijany w wiadomości prywatnej. -
Co dzisiaj robiłem w lispie?
RobS odpowiedział(a) na wedzik temat w Wsparcie programistyczne LISP i VisualLISP
Tak, wybierając rysowanie polilinii w trybie łuku można określić kąt. Poniżej podpowiedź jak wygląda pasek poleceń w angielskiej wersji językowej. Edycję kodu zostawiam Tobie 🙂 -
Co dzisiaj robiłem w lispie?
RobS odpowiedział(a) na wedzik temat w Wsparcie programistyczne LISP i VisualLISP
W takim razie musisz jak na nagraniu zrobić to w dwóch krokach, tj. z dwóch segmentów. Edytując Twój skrypt może to wyglądać na przykład: (defun c:kolko1 () (setq p1(getpoint "Wskaż początek łuku:")) (setq p2(getpoint "Wskaż koniec łuku:")) (setq p3 (list p1)) (command "_.pline" p1 "_a" p2 p3 "") (command "_.pline" p2 "_a" p1 p3 "") (prompt "Okrąg został narysowany") ) Wydaje mi się, że punkt p3 jest zbędny, wielkość łuku polilinii zależy od kąta pomiędzy punktami. -
Co dzisiaj robiłem w lispie?
RobS odpowiedział(a) na wedzik temat w Wsparcie programistyczne LISP i VisualLISP
Hej, @mili napisz co dokładnie ma robić twój skrypt. Dla wygody własnej i innych twórców warto dodawać komentarze do swoich programów. W języku LISP są poprzedzone średnikiem, np. ;Zapisanie współrzędnych pierwszego punktu w zmiennej p1 Skrypt z twojej wiadomości tworzy polilinię która jest łukiem. Jeśli dobrze rozumiem, że chcesz stworzyć okrąg pojedynczym segmentem polilinii to chyba nie da się tego zrobić. -
Kopiowanie wraz z obracaniem
RobS odpowiedział(a) na PiotrI temat w Wsparcie programistyczne LISP i VisualLISP
Żeby uściślić, chcesz najpierw określić kąt obrotu skopiowanego elementu i później go wkleić w we wskazanym punkcie? Kąt obrotu chcesz określić na ekranie czy wpisując w pasku poleceń? -
Kopiowanie wraz z obracaniem
RobS odpowiedział(a) na PiotrI temat w Wsparcie programistyczne LISP i VisualLISP
Hej, Chodzi o to, żeby skopiować element i w trakcie wklejania poza miejscem określić także kąt? W nakładce ZWToolbox jest funkcja Kopiuj poprzez obrót, może to jakoś ułatwi twoje zadanie. Działanie funkcji pokazałem na poniższym nagraniu. -
Zamykanie obiektów w bloku
RobS odpowiedział(a) na Pawel.G temat w Wsparcie programistyczne LISP i VisualLISP
Dodałem kilka linijek do twojego programu które tworzą blok. Można podejść do sprawy na kilka sposobów, ja wybrałem dość podstawowy. Współrzędne lewego dolnego rogu zapisałem w zmiennej PU0. Po stworzeniu konstrukcji w zmiennej BlkName zostaje zapisana nazwa nowo utworzonego bloku według twojego opisu. Tutaj warto dodać jakieś wyróżnienie, w przypadku duplikatu program jest przerwany komunikatem. Później blok zostaje stworzony ze zbioru wybranego funkcją ssget. "_W" zaznacza obiekty w oknie opisanym podobniej jak prostokąt, lewy dolny róg PU0 i prawy górny róg PU2. Po utworzeniu blok jest wstawiony poleceniem _insert, ponieważ znika on z rysunku. Kod programu poniżej (DEFUN C:KONS (/ W H K O L R PU H_NEW X0 Y0 X_START Y_START PU0 PU2 BlkName) (SETQ W (GETREAL "\nPodaj szerokosc modulu: ")) (SETQ H (GETREAL "\nPodaj wysokosc modulu: ")) (SETQ K (GETREAL "\nPodaj kat nachylenia konstrukcji (w stopniach): ")) (SETQ O (GETREAL "\nPodaj odstep miedzy modulami: ")) (SETQ L (fix (GETREAL "\nPodaj ilosc modulow w poziomie: "))) ; Konwersja na typ całkowity (SETQ R (fix (GETREAL "\nPodaj ilosc modulow w pionie: "))) ; Konwersja na typ całkowity (SETQ PU (GETPOINT "\nPodaj naroznik konstrukcji PV: ")) ;; Obliczenie nowej wysokości (SETQ H_NEW (* H (COS (* K (/ PI 180.0))))) ; Konwersja kąta na radiany ;; WYZNACZENIE PRZECIWLEGŁEGO NAROŻNIKA MODUŁU (SETQ X0 (CAR PU)) (SETQ Y0 (CADR PU)) (SETQ X_START X0) ; Zapisanie początkowego X (SETQ Y_START Y0) ; Zapisanie początkowego Y (SETQ PU0 (list X_START Y_START )) ;Zapisanie współrzędnych lewego dolnego rogu konstrukcji w zmiannej PU0 ;; RYSOWANIE MODUŁÓW (repeat L (progn (repeat R (progn (SETQ PU2 (list (+ X0 W) (+ Y0 H_NEW))) ;; RYSOWANIE PROSTOKĄTA (COMMAND "_RECTANG" PU PU2) ;; Przesunięcie w dół o wysokość i odstępu modułu (SETQ Y0 (+ Y0 H_NEW O)) ; Y0 zwiększamy o nową wysokość i odstęp (SETQ PU (list X0 Y0)) ; Nowy punkt startowy ) ) ;; Przesunięcie w prawo o szerokość modułu i zadany odstęp (SETQ X0 (+ X0 W O)) ; X0 zwiększamy o szerokość i odstęp (SETQ Y0 Y_START) ; Resetowanie Y0 do początkowej wartości (SETQ PU (list X0 Y0)) ; Nowy punkt startowy ) ) (setq BlkName (strcat "Konstrukcja " (itoa L) " x " (itoa R))) ;Stworzenie nazwy nowego bloku i zapisanie jej w zmiennej BlkName (command "_Block" BlkName PU0 (ssget "_W" PU0 PU2) "") ;Stworzenie Bloku nazwanego BlkName z punktem bazowym w lewym dolnym rogu konstrukcji (command "_Insert" BlkName PU0 "" "" "") ;Wstawienie bloku który znika po utworzeniu ) -
Zamykanie obiektów w bloku
RobS odpowiedział(a) na Pawel.G temat w Wsparcie programistyczne LISP i VisualLISP
Hej, Spojrzałem na Twój skrypt i chcę się upewnić czy dobrze rozumiem zamysł. Chcesz, żeby pojedynczy moduł był blokiem? Blok można stworzyć funkcją command "_block", wstawić przy pomocy command "_insert". Ponadto skrypt można odrobinę uprościć. Kąt można wprowadzić używając "getangle". Przekształcenie na liczbę całkowitą pominąć używając "getint". Do odczytywania narysowanych elementów użyć "entlast". Rysowanie warto wstawić do osobnej funkcji. -
wyświetlanie punktów (koniec) na linii lub polilinii [Rozwiązany]
RobS odpowiedział(a) na ESPESA temat w ZWCAD Standard i Professional
Hej, Napisałem skrypt PunktyNaKoncach.lsp według pomysłu @dmatusz3 Plik należy wczytać poleceniem AP. Instrukcja użycia wyświetla się w pasku poleceń. Wystarczy tylko wpisać polecenie PunktyNaKoncach, zaznaczyć obiekty i kliknąć Enter. Pomarańczowe punkty zostaną wstawione na warstwie Punkty na końcach, jeśli takiej warstwy nie ma to skrypt automatycznie ją utworzy. Wszystko działa jak na nagraniu 😏 -
[LISP] Kopia definicji bloku pod inną nazwą
RobS odpowiedział(a) na swazy temat w Wsparcie programistyczne LISP i VisualLISP
Hej, Sprawdź poniższy skrypt, spełnia funkcjonalność o której piszesz 😁 Copy or Rename Block Reference -
Do liczenia bloków na rysunku możesz użyć skryptu Block Counter autorstwa Lee Mac. Skrypt uruchamia polecenie BLKCOUNT. Wynik wstawiany jest w formie tabeli z podglądem wyglądu, nazwą i ilością bloków na rysunku.
-
Hej, Długości linii i polilinii możesz zsumować poleceniem LINESUM, wynik wyświetli się w pasku poleceń. Obiekty na tej samej warstwie najlepiej wybrać klikając Prawy przycisk myszy -> Szybki wybór i ustawiając odpowiednie filtry. Po wybraniu obiektów wpisz w pasku poleceń LINESUM. Następnie wpisz P i kliknij Enter, żeby wrócić do poprzedniego zbioru elementów który zniknął po wywołaniu funkcji sumowania. Całość sumowania widać na poniższym nagraniu.
-
Program do podmiany wartości atrybutów w tym w liście bloków
RobS odpowiedział(a) na Robert11 temat w Wsparcie programistyczne LISP i VisualLISP
Hej, Czyli LISP ma automatycznie przejść po blokach NAME1 do NAME30 i zmienić wartość atrybutu SYMBOL na wartość atrybutu LPS, i vice versa? Czy możesz podesłać jakiś przykładowy rysunek z takimi blokami?- 11 odpowiedzi
-
- jedna operacja
- wiele bloków
-
(i 3 więcej)
Oznaczone tagami:
-
Hej, Spróbuj wykonać reset profilu 1. Reset profilu wykonajć przy zamkniętym programie ZWCAD. 2. Otwórz dowolny folder i w pasku adresu (z lewej strony) wklej: %appdata%\ZWSOFT\ZWCAD\2025 3. Zmienić nazwę katalogu en-US na en-US_kopia lub analogicznie pl-PL.
-
Jak szybko przywrócić widok?
RobS odpowiedział(a) na Stefan Wiatr temat w ZWCAD Standard i Professional
Hej, Widok z góry można ustawić jak na poniższych obrazach W obszarze modelu (bez względu na ustawiony interfejs) W interfejsie wstążkowym W interfejsie klasycznym -
OPCJA - SKALUJ SZEROKOŚĆ LINII [Rozwiązany]
RobS odpowiedział(a) na si4lex temat w ZWCAD Standard i Professional
Hej, Skalowanie szerokości linii oznacza, że wraz ze zmianą skali wydruku szerokość linii również zostanie przeskalowana. Na przykład linia o szerokość 2mm w skali 1:2 będzie miała po wydrukowaniu 1mm szerokości. -
Określanie powierzchni
RobS odpowiedział(a) na daria.anielska temat w Wsparcie programistyczne LISP i VisualLISP
Cześć, Element jest tłoczony. Najlepiej będzie poprosić autora rysunku o odczytanie powierzchni w programie Catia gdzie był robiony projekt. Chcesz znać powierzchnię przed czy po zgięciu? -
Bloki dynamiczne - obracanie tekstu
RobS odpowiedział(a) na Ernest125 temat w ZWCAD Standard i Professional
-
zwcad 2025_zestawienie pytań, spostrzeżeń i błędów
RobS odpowiedział(a) na alf temat w ZWCAD Standard i Professional
Cześć, Co do punktu 1, zwróć uwagę na to czy podpięty plik jest otwarty w oddzielnej karcie. Jeśli tak to Edycja odnośnika lokalnie (w pliku z załączonym XRef'em) nie będzie możliwa, wyświetli się komunikat jak niżej. Włącz tylko plik z załączonym XRef'em, wybierz podpięty obiekt i kliknij Edytuj odnośnik lokalnie. Po skończonej edycji klikaj Zapisz edycję odnośnika, żeby zapisać zmiany w podpiętym pliku. Jeśli problem jest w czymś innym to opisz dokładnie tok postępowania. -
Stworzenie własnego stylu kreskowania [Rozwiązany]
RobS odpowiedział(a) na ESPESA temat w ZWCAD Standard i Professional
Cześć, Stworzyłem kreskowanie o którym piszesz wyżej modyfikując delikatnie oryginalny wzór ANSI 34. *ANSI34A,ANSI Plastic, Rubber 45, 0, 0, 0, 16 45, 2, 0, 0, 16 45, 4, 0, 0, 16 45, 6, 0, 0, 16 *ANSI34B,ANSI Plastic, Rubber 45, 8, 0, 0, 16 45, 10, 0, 0, 16 45, 12, 0, 0, 16 45, 14, 0, 0, 16 Odległości pomiędzy liniami (wartość 16 w kodzie) zostały zmniejszone, ponadto jest zdefiniowane przesunięcie (8, 10, 12, 14 w kodzie) dzięki czemu kreskowania możesz wstawić do Palety narzędzi (Ctrl + 3) i wygodnie używać. Tak jak na nagraniu tworzysz tło z kreskowania Solid, później ANSI34A i ANSI34B. Na przykładzie grubość linii ustawiona jest na 0.3 mm -
Skorowidz obiektów MLEADER
RobS odpowiedział(a) na marcin.czyzewski temat w Wsparcie programistyczne LISP i VisualLISP
Cześć, Napisałem skrypt PRZENIESBLOKI.lsp który zautomatyzuje punkt 5. Będąc w rzutni za pomocą polecenia PRZENIESBLOKI bloki o nazwie Skorowidz zostają wybrane i przeniesione do przestrzeni papieru. (princ (strcat " Copyright © 2000 — 2024 Uslugi Informatyczne Szansa www.zwcad.pl Dostepne polecenia: PRZENIESBLOKI - Przeniesienie blokow o nazwie Skorowidz do przestrzeni papieru ") ) (defun C:PRZENIESBLOKI (/ blockList) (setq blockList (ssget "X" (list (cons 0 "INSERT") (cons 2 "Skorowidz")))) (command "_chspace" blockList "") (princ) ) -
Skorowidz obiektów MLEADER
RobS odpowiedział(a) na marcin.czyzewski temat w Wsparcie programistyczne LISP i VisualLISP
Cześć, Wprowadziłem zmianę zgodnie z sugestiami, elementy można zaznaczyć grupowo oknem. Poza tym wszystko działa bez zmian, funkcję można wywołać poleceniem SKOROWIDZ (widzę, że powyżej przez pomyłkę pisałem skoroszyt) Plik LSP z wprowadzonym usprawnieniem załączam do posta. SKOROWIDZ.lsp