Ranking
Popularna zawartość
Zawartość, która uzyskała najwyższe oceny od 21.10.2024 uwzględniając wszystkie działy
-
Pełna wersja ZWVectorization (ta, którą obecnie dodajemy do ZWCAD Pro) umożliwia obsługę obrazów rastrowych o rozdzielczości do 20 000 pikseli x 20 000 pikseli. Powyższa animacja z lokomotywą powstała przy użyciu rastra o 15 tys. x 6 tys. pikseli.3 punkty
-
Co zrobić, gdy importujemy arkusz blachy w postaci pliku STEP?
RobS oraz jeden pozostały przyznał(a) reputację tomasztalik za temat
Podczas pracy z plikami, które importujemy do ZW3D, często nie mamy dostępu do drzewa historii i parametryzacji. Chcąc parametryzować arkusze blachy i zgięcia w nich zawarte, potrzebujemy narzędzia do ich oznaczania. Naprzeciw wychodzi funkcja Zaznacz gięcie. Na poniższym filmie pokazano w jaki sposób z prostopadłościanu przejść do rozłożonego blaszanego pudełka: Więcej o informacji funkcji znajduje się pod linkiem: ZW3D - Zaznacz gięcie2 punkty -
Kopiowanie wraz z obracaniem
dmatusz3 oraz jeden pozostały przyznał(a) reputację perlon za temat
Komenda MOCORO z dawnego Expressa ale to było w jakimś vlx-ie. Zamiennik znaleziony na autodeskowym forum. Nie wiem czy przejdzie link. Żeby skrócić działanie można to to sobie owrapować commandem jeżeli zależy ci na jakiejś konkretnej kolejności operacji.2 punkty -
Lisp do ucinania
Macbux oraz jeden pozostały przyznał(a) reputację kruszynski za temat
Otrzymaliśmy odpowiedź od producenta ZWCADa. Jest to znany problem. ID zgłoszenia pod którym można w przyszłości monitorować ten temat to SUP-75558. Niestety nie mamy deklaracji o przewidywanym czasie rozwiązania tego tematu.2 punkty -
Zaawansowane lekcje z ZWCAD ARCHITECTURE? Czy są chętni na forum?
dmatusz3 oraz jeden pozostały przyznał(a) reputację Martin_S za temat
Mogę pokazać krok po kroku jakieś trudniejsze działania z ARCHITECTURE, lubię wyzwania, ktoś jest zainteresowany jak "coś" wykonać lub jak to "obejść" by mieć finalnie dany cel? możliwości wersji 2024 są mocne nawet beta 2025 że można w środowisko dwg wykonywać nawet obiekty zabytkowe. interaktywny przykład w PDF 3D ("edytor revitopodobny" w acrobacie readerze) PDF 3D SKLADOWICE_3D.pdf2 punkty -
ZWCAD 2024 SP1.4 - przesuwanie, kopiowanie rzutni w przestrzeni papieru
Chris oraz jeden pozostały przyznał(a) reputację dmatusz3 za temat
Właśnie opublikowaliśmy aktualizację do ZWCAD 2024. Na liście zmian jest również zawarta poprawa wyżej opisanego problemu. Linki do pobrania oraz opis zmian jest dostępny w tym wątku. https://forum.cad.info.pl/topic/1637-linki-oraz-listy-zmian-zwcad-2017÷zwcad-2025/?do=findComment&comment=255962 punkty -
Linki oraz listy zmian. ZWCAD 2017÷ZWCAD 2025
pawmal oraz jeden pozostały przyznał(a) reputację dmatusz3 za temat
Z przyjemnością publikujemy aktualizację do ZWCAD 2024. Wersja oznaczona jest jaki SP 1.5 (VERNUM=24.10_2024.11.07(#9455-eaa63f9f5f2) Ta aktualizacja powinna być także dostępna online w ciągu kilku dni. Skrócona lista zmian: naprawiono problem ze sporadycznie występującym przesuwaniem rzutni w przestrzeni papieru, który pojawił się w SP 1.4 (problem opisywany na forum https://forum.cad.info.pl/topic/5215-zwcad-2024-sp14-przesuwanie-kopiowanie-rzutni-w-przestrzeni-papieru/ naprawiono problem z wydajnością podczas pracy z rysunkami zawierającymi obiekty OLE w specyficznych warunkach, naprawiono problemy ze stabilnością, w tym awarie, nieoczekiwane zamknięcia oraz brak odpowiedzi w różnych scenariuszach, naprawiono problem z wyświetlaniem miniatur podglądu plików DWG w Eksploratorze plików Windowsn naprawiono problem, w którym pasek narzędzi zmieniał swoje położenie po wyjściu z edytora bloków, naprawiono problem z utratą relacji formuł pól w blokach atrybutów, w specyficznych warunkach, naprawiono problemy w funkcji Smart Plot w specyficznych warunkach, naprawiono błędne wyniki przycinania, gdzie linie ciągłe przecinały linie przerywane w przerwach linii, naprawiono problem z nieotwieraniem rysunków 3D zapisanych jako DXF w pewnych przypadkach, naprawiono problem z brakującymi znacznikami punktów początkowych dla polilinii. Linki do pobrania ZWCAD 2024 SP 1.5: ZWCAD 2024 PL 64bit ZWCAD 2024 PL 32bit ZWCAD 2024 EN 64bit ZWCAD 2024 EN 32bit2 punkty -
Zmiana bazowej ściany przy rozłożeniu odgięcia arkusza blachy
RobS oraz jeden pozostały przyznał(a) reputację tomasztalik za temat
Przy projektowaniu detali, może się zdarzyć, że źle zaznaczymy nieruchomą ścianę. Przy rozwinięciu arkusza blachy, detal może nie spełniać naszych lub klienta wymagań. Potrzebna wtedy jest modyfikacja. Z pomocą przychodzi samodzielna komenda Wskaż nieruchomą ścianę. Więcej o funkcji pod adresem: ZW3D - Wskaż nieruchomą ścianę2 punkty -
Jak sprawdzić podstawowe dane o odgięciach
dmatusz3 oraz jeden pozostały przyznał(a) reputację tomasztalik za temat
2 punkty -
ZWCAD - synchroniczne przesuwanie (pan), zoomowanie w 2 rzutniach (plikach)
pawmal oraz jeden pozostały przyznał(a) reputację dmatusz3 za temat
Dziękujemy za uznanie Oto skrypt do załadowania do synchronizacji widoków w rzutni w przestrzeni modelu ViewChanged.dll Bibliotekę trzeba załadować poleceniem netload, uprzednio odblokowując plik .dll. Po załadowaniu pliku ViewChanged.dll ZWCAD wyświetli komunikat z dostępną listą poleceń, czyli dostępne są 2 nowe polecenia: VIEWSYNCHROSTART - włącza synchronizacje, VIEWSYNCHROSTOP - wyłącza synchronizacje. Skrypt działa w taki sposób, że przesuwanie widoku w rzutniach jest ustawione względem pozycji początkowej, natomiast zoom jest jednakowy.2 punkty -
Jak szybko rozłożyć i utworzyć widok arkusza blachy zawierające zgięcia
ibaron oraz jeden pozostały przyznał(a) reputację tomasztalik za temat
Często potrzebujemy skopiować detal wykonany z arkusza blachy, aby móc go później rozłożyć i zwymiarować pod kątem dokumentacji 2D. Może nam do tego posłużyć komenda Widok rozkroju, dostępna we wstążce Arkusz blachy - Zgięcia. Więcej informacji o tej funkcji znajduje się pod linkiem: ZW3D - Widok rozkroju UWAGA: Od wersji 2024, na drzewku historii w zakładce Arkusz blach, Widok rozkroju jest automatycznie generowany. Należy upewnić się czy opcja jest aktywowana: Wstążka > Właściwości > Arkusz blachy :2 punkty -
Problem z bryłą która pochodzi ze sketchup-a
dmatusz3 oraz jeden pozostały przyznał(a) reputację Martin_S za temat
2 punkty -
Prostokąt obejmujący MTEXT i transformacje układów współrzędnych
kruszynski oraz jeden pozostały przyznał(a) reputację kojacek za temat
Potrzebujesz: 1) (załadowanego) CADPL-Pack'a (wiadomo) 2) funkcji z Express Tools: acet-geom-mtxtbox (oprócz AutoCAD-a jest w BricsCAD-zie i GStar'ze. Nie wiem jak jest w ZwCAD-ie) 3) Poniższego kawałka kodu: ;;; ramka MTEXTu (2024 by kojacek) (defun C:MTEST (/ %e %d %p %o %z) (if (and (setq %e (car (entsel "\Wybierz MTEXT:"))) (= "MTEXT" (cdr (assoc 0 (setq %d (entget %e))))) ) (progn (setq %p (acet-geom-mtxtbox %d 0.0) %z (cdr (assoc 210 %d)) %p (mapcar '(lambda (%) (trans % 1 %z) ) %p ) ) (setq %o (cd:ACX_AddLWPolyline (cd:ACX_ASpace) %p t)) (vla-TransformBy %o (cd:CON_TransMatrix 0)) ) (princ "\nZły wybór.") ) ) Z tego co na szybko przetestowałem, maluje prostokąt dla wskazanego MTEXT-u, niezależnie od aktywnego układu współrzednych. Funkcja acet-geom-mtxtbox, zwraca współrzędne prostokata opisującego rzeczywisty obszar MTEXT-u (porównaj z ramką MTEXT-u). Swego czasu poruszałem to tu: https://kojacek.wordpress.com/2017/10/08/wielkosc-obszaru-mtext-u/. Drugi argument funkcji (tutaj 0.0), to odsunięcie prostokąta. Pozwala to na rysowanie większego obramowania.2 punkty -
[LISP] Odmrażanie warstw za pomocą kodu.
swazy oraz jeden pozostały przyznał(a) reputację kojacek za temat
Być może przyczyną jest funkcja entmod. Wprawdzie może ona modyfikować obiekty niegraficzne (tutaj LAYER), ale gdzieś czytałem że są wyjątki dla kodu 70 - nie pamiętam jednak czego dotyczyły. W autocadowskich "antycznychch" czasach (przed ActiveX (czyli przed 1999 )), pewnie bym użył command zamiast entmod… ale pewnie dlatego że byłoby łatwiej. Na marginesie - Twoje warunkowanie kodu 70 jest błędne - działa tylko w wyjątkowych sytuacjach. Kod 70 jest wartością bitową, więc na przykład 1 jest prawdziwe nie tylko dla 1, ale też 3 (2+1)... 5 (4+1)... 7 (2+4+1)... 9... etc. Teraz przykład z użyciem ActiveX (i CADPack'a). Krótko (i co ważniejsze) działa: (defun C:ODMROZWAR () (vlax-for % (cd:ACX_Layers) (if (and (= :vlax-true (vla-get-freeze %)) (wcmatch (vla-get-name %) "LS*") ; <- moj testowy filtr ) (vla-put-freeze % :vlax-false) ) ) (vla-regen (cd:ACX_ADoc) 0) (princ) )2 punkty -
1 punkt
-
1 punkt
-
hmm w architecture 2024 tego nie ma w beta 2025 było1 punkt
-
Lisp do ucinania
Macbux przyznał(a) reputację kruszynski za temat
To nie takie proste. Może być tak, że polecenie extrim nie powstało w LISP, więc nigdy nie było extrim.lsp . Ale pytanie jakie mi się nasuwa: czy (defun c:do_trim () (command "_.TRIM" "T" "R") ; ) to już wszystko? Czy tylko wstęp do czegoś większego? Pytanie jest o tyle zasadne, że podobny efekt możemy uzyskać prosto bez użycia LISP. Możemy przygotować skrót - ikonkę , który będzie miał przypisane makro ^C^C_TRIM;_T;_R;1 punkt -
EXTRIM jest obecnie dostępny jako tryb rozszerzony polecenia UTNIJ (zmienna TRIMEXTENDMODE na 2).1 punkt
-
Jak za pomocą szkicu podzielić arkusz blachy
RobS przyznał(a) reputację tomasztalik za temat
Jeśli w projekcie chcemy podzielić arkusz blachy na dwie części, możemy użyć funkcji Szkic rozerwania tak jak pokazano na filmie poniżej: Więcej informacji znajduje się na stronie: ZW3D - Szkic rozerwania1 punkt -
LISP, obrót widoku
alf przyznał(a) reputację Adam Klaczek za temat
Mam taką wersję: DWidok_Skrecenie_v2.lsp i "chodzi"...1 punkt -
kod, który zamienia punkty na rysunku na okręgi (defun c:OkragiNaObiektach () (setq obiekty (ssget "_:L" '((0 . "POINT")))) (if obiekty (progn (setq i 0) (repeat (sslength obiekty) (setq ent (ssname obiekty i)) (setq i (1+ i)) (setq punkt (cdr (assoc 10 (entget ent)))) (if punkt (progn (command "_.CIRCLE" punkt "10.0") ) ) ) ) ) (princ) ) kod.lsp1 punkt
-
Dzisiaj będzie o praktycznych zastosowaniach kalkulatora1 punkt
-
Super !!! Skrypt działa. Niestety nie dane mi (nam) będzie go dogłębnie przetestować, gdyż posiadamy ZWCADa w wersji 2024. Ale szacunek za ekspresową pomoc i bardzo fajne podejście do rozwiązania problemu.1 punkt
-
Szybka zmiana wielu zgięć przy jednoczesnym tworzeniu wersji arkusza blachy
ibaron przyznał(a) reputację tomasztalik za temat
Może się zdarzyć potrzeba, by zmieniać kąty wielu zgięć naraz lub parametry współczynnika gięcia, przy jednoczesnym kopiowaniu detalu do nowej destynacji. Możemy w tym celu skorzystać z funkcji Liniowe rozłożenie. Opis komendy znajduje się pod linkiem: ZW3D - Liniowe rozłożenie1 punkt -
Wektoryzacja rastrów jest dostępna w pakiecie w ZWCAD 2025 Professional, jednak posiada pewne ograniczenia, np. maksymalny rozmiar rastra jest ograniczony do 2048 pikseli na 2048 pikseli. Do końca roku 2025 przy zakupie nowej licencji ZWCAD 2025 Professional dodajemy pełną roczną licencję modułu do wektoryzacji - https://www.zwcad.pl/promocja-na-zwcad/1169-zwvectorization-promocja-przy-zakupie-programu-zwcad.html Oto kilka przykładów zastosowań tego dodatku.1 punkt
-
Jak prowadzić arkusz blachy po wcześniej przygotowanych profilach
ibaron przyznał(a) reputację tomasztalik za temat
Funkcja Odgięcie po profilach pozwala na prowadzenie arkusza blachy po powierzchni zamkniętych lub otwartych profili. Więcej informacji o możliwościach i parametrach komendy znajduje się na stronie Pomocy ZW3D: ZW3D - Odgięcie po profilach1 punkt -
Jak utworzyć odgięcie wykorzystując własny profil ze szkicu
ibaron przyznał(a) reputację tomasztalik za temat
Funkcja Kołnierz z profilem pozwala na utworzenie odgięcia z dowolnego zamkniętego szkicu, stycznego z krawędzią arkusza blachy. Pełny opis funkcji dostępny w Pomocy ZW3D ZW3D - Kołnierz z profilem1 punkt -
Niestety powyższe nie działa prawidłowo w każdym przypadku orientacji UCS i samego MText. Uzupełniłem kod o odpowiednie translacje żeby rozwiązać, albo raczej ominąć problem. Ponieważ nie mogę już edytować poprzedniego postu załączam kod ponownie. Zmieniłem również definicję dwóch funkcji z TransMatrix.lsp. Dlatego zamieszczam pliki ponownie z prośbą do admina o usunięcie poprzednich wersji. Dorzuciłem również pewien test funkcji acet-geom-mtxtbox oraz plik dwg, który obrazuje problem jej wykorzystania wraz z nagraniem testu. Test rysuje proste linie w przestrzeni żeby uniknąć narzutu polilinii. Czy jest gdzieś dostępna dokumentacja funkcji acet-geom-mtxtbox bo powyższe zrobiło mii nieco zamieszania w głowie. MTextBox.lsp TransMatrix.lsp mtb.dwg1 punkt
-
acet-geom-mtxtbox zwraca obszar obramowania mtext ale rzutuje go na płaszczyznę X-Y WCS a w przypadku kiedy MTEXT nie jest równoległy do tej płaszczyzny to obramowanie dostaje dziwnej translacji. Dlatego Postanowiłem ominąć ten problem poprzez transformację obiektu jak poniżej : ; ============================================================================================= ; ; c:MTextBox - enclose mtext in a box and place leader for callout ; ; --------------------------------------------------------------------------------------------- ; ; ©2024 by Tomasz Tkaczyk ; ; ============================================================================================= ; (load "CADPL-Pack-v1") (load "TransMatrix") (defun c:MTextBox ( / ent entName origin x-axis y-axis z-axis matrix obj) (if (and (setq entName (car (entsel "Wybierz MTEXT:"))) (= "MTEXT" (cdr (assoc 0 (setq ent (entget entName))))) ) (progn (setq origin (cdr (assoc 10 ent)) x-axis (cdr (assoc 11 ent)) z-axis (cdr (assoc 210 ent)) y-axis (cd:T3D_NormalVector '(0 0 0) z-axis x-axis) matrix (cd:T3D_TransformMatrix x-axis y-axis z-axis origin) obj (vlax-ename->vla-object entname) ) (vla-TransformBy obj (vlax-tmatrix (cd:T3D_InvertMatrix matrix))) (vla-TransformBy (cd:ACX_AddLWPolyline (cd:ACX_ASpace) (acet-geom-mtxtbox (entget entname) 0) T) (vlax-tmatrix matrix) ) (vla-TransformBy obj (vlax-tmatrix matrix)) ) ) ) Powyższe wymaga kilku funkcji do transformacji obiektów w przestrzeni. Zebrałem trochę kodu w krótką biblioteczkę : (princ "\nŁadowanie biblioteki TransMatrix............") ;;; ========================================================================================= ; ;;; TransMatrix.lsp ; ;;; [2024-10-29] ©2024 by Tomasz Tkaczyk ; ;;; ========================================================================================= ; ; [T3D] ===================================================================================== ; ; c:UCSZDIR - Zwraca wektor normalny aktualnego lokalnego układu ; ; współrzędnych ; ; cd:T3D_NormalizeVector - Normalizuje odległość między punktami do wektora jednostkowego; ; cd:T3D_NormalVector - Zwraca wektor normalny do płaszczyzny określonej ; ; trzema punktami ; ; cd:T3D_ASin - Zwraca arcus sinus kąta wyrażonego w radianach ; ; cd:T3D_ACos - Zwraca arcus cosinus kąta wyrażonego w radianach ; ; cd:T3D_Angle3PtsVC - Zwraca kąt między odciankami p0-p1 p0-p2 (rachunek wektorowy) ; ; cd:T3D_Angle3PtsTC - Zwraca kąt między odciankami p0-p1 p0-p2 (twierdzenie Carnota); ; cd:T3D_Elev - Zwraca elewację punktu nad płaszczyzną p0-p1-p2 ; ; cd:T3D_ProjectPt - Zwraca punkt rzutowany na płaszczyznę p0-p1-p2 ; ; cd:T3D_TransformMatrix - Zwraca macierz transformacji do układu x-y-z-origin ; ; cd:T3D_InvertMatrix - Zwraca macierz odwrotną do macieży transformacji ; ; cd:T3D_CompositionTwoMatrices - Zwraca wynik mnożenia dwóch macierzy transformacji ; ; =========================================================================================== ; ; =========================================================================================== ; ; Zwraca wektor normalny aktualnego lokalnego układu współrzędnych ; ; ------------------------------------------------------------------------------------------- ; ; (c:UCSZDIR) ; ; =========================================================================================== ; (defun c:UCSZDIR () (trans '(0 0 1) 1 0 T) ) ; =========================================================================================== ; ; Zwraca wektor jednostkowy odległości między dwoma punktami punktami ; ; p1 p2 - punkty w przestrzeni 3D ; ; ------------------------------------------------------------------------------------------- ; ; (cd:T3D_UnitVector p0 p1) ; ; =========================================================================================== ; (defun cd:T3D_UnitVector(p0 p1) (if (not (equal p0 p1 1e-009)) (mapcar '(lambda (x) (/ x (distance p0 p1))) (mapcar '- p1 p0) ) ) ) ; =========================================================================================== ; ; Zwraca wektor normalny do płaszczyzny określonej trzema punktami ; ; w przestrzeni zgodnej z reguła prawej dłoni ; ; p0 p1 p2 - punkty w przestrzeni 3D ; ; ------------------------------------------------------------------------------------------- ; ; (cd:T3D_NormalVector p0 p1 p2) ; ; =========================================================================================== ; (defun cd:T3D_NormalVector (p0 p1 p2 / normal) (cond ( (inters p0 p1 p0 p2) (foreach p '(p1 p2) (set p (mapcar '- (eval p) p0))) (setq normal (list (- (* (cadr p1) (caddr p2)) (* (caddr p1) (cadr p2))) (- (* (caddr p1) (car p2)) (* (car p1) (caddr p2))) (- (* (car p1) (cadr p2)) (* (cadr p1) (car p2))) ) normal (mapcar '(lambda (x) (* x (/ 1 (distance '(0 0 0) normal)))) normal) ) ) ) ) ; =========================================================================================== ; ; Zwraca arcus sinus kąta wyrażonego w radianach ; ; ------------------------------------------------------------------------------------------- ; ; (ccd:T3D_ASin ang) ; ; =========================================================================================== ; (defun cd:T3D_ASin (ang) (if (<= -1 ang 1) (atan ang (sqrt (- 1 (expt ang 2)))) ) ) ; =========================================================================================== ; ; Zwraca arcus cosinus kąta wyrażonego w radianach ; ; ------------------------------------------------------------------------------------------- ; ; (cd:T3D_ACos ang) ; ; =========================================================================================== ; (defun cd:T3D_ACos (ang) (if (<= -1 ang 1) (atan (sqrt (- 1 (expt ang 2))) ang) ) ) ; =========================================================================================== ; ; Zwraca kąt między odciankami p0-p1 a p0-p2 (rachunek wektorowy) ; ; ------------------------------------------------------------------------------------------- ; ; (cd:T3D_Angle3PtsVC p0 p1 p2) ; ; =========================================================================================== ; (defun cd:T3D_Angle3PtsVC (p0 p1 p2 / v1 v2) (if (and (setq v1 (cd:T3D_UnitVector p0 p1)) (setq v2 (cd:T3D_UnitVector p0 p2)) ) (cond ((equal v1 v2 1e-009) 0.0) ((equal v1 (mapcar '- v2) 1e-009) pi) (T (* 2 (cd:T3D_ASin (/ (distance v1 v2) 2)))) ) ) ) ; =========================================================================================== ; ; Zwraca kąt między odciankami p0-p1 a p0-p2 (twierdzenie Carnota) ; ; ------------------------------------------------------------------------------------------- ; ; (cd:T3D_Angle3PtsTC p0 p1 p2) ; ; =========================================================================================== ; (defun cd:T3D_Angle3PtsTC (p0 p1 p2 / d1 d2 d3) (setq d1 (distance p0 p1) d2 (distance p0 p2) d3 (distance p1 p2) ) (if (and (not (zerop d1)) (not (zerop d2))) (cd:T3D_ACos (/ (+ (* d1 d1) (* d2 d2) (- (* d3 d3))) (* 2 d1 d2)) ) ) ) ; =========================================================================================== ; ; Zwraca elewację punktu nad płaszczyzną p0-p1-p2 ; ; ------------------------------------------------------------------------------------------- ; ; (cd:T3D_Elev pt p0 p1 p2) ; ; =========================================================================================== ; (defun cd:T3D_Elev (pt p0 p1 p2) (* (cos (cd:T3D_Angle3PtsVC p0 (mapcar '+ p0 (cd:T3D_NormalVector p0 p1 p2)) pt)) (distance p0 pt) ) ) ; =========================================================================================== ; ; Zwraca punkt rzutowany na płaszczyznę p0-p1-p2 ; ; ------------------------------------------------------------------------------------------- ; ; (cd:T3D_ProjectPt pt p0 p1 p2) ; ; =========================================================================================== ; (defun cd:3D_ProjectPt (pt p0 p2 p3) (mapcar '- pt (mapcar '(lambda (x) (* x (cd:T3D_Elev pt p0 p1 p2))) (cd:T3D_NormalVector p0 p1 p2) ) ) ) ; =========================================================================================== ; ; Zwraca macież transformacji do układu x-y-z-origin ; ; ------------------------------------------------------------------------------------------- ; ; (cd:T3D_TransformMatrix x-axis y-axis z-axis origin) ; ; =========================================================================================== ; (defun cd:T3D_TransformMatrix (x-axis y-axis z-axis origin) (list (list (nth 0 x-axis) (nth 0 y-axis) (nth 0 z-axis) (nth 0 origin)) (list (nth 1 x-axis) (nth 1 y-axis) (nth 1 z-axis) (nth 1 origin)) (list (nth 2 x-axis) (nth 2 y-axis) (nth 2 z-axis) (nth 2 origin)) (list 0 0 0 1) ) ) ; =========================================================================================== ; ; Zwraca macież odwrotną do macierzy transformacji ; ; ------------------------------------------------------------------------------------------- ; ; (cd:T3D_InvertMatrix matrix) ; ; =========================================================================================== ; (defun cd:T3D_InvertMatrix( tmatrix / m00 m01 m02 m03 m10 m11 m12 m13 m20 m21 m22 m23 m30 m31 m32 m33 inv00 inv01 inv02 inv10 inv11 inv12 inv20 inv21 inv22) ;; Pobierz elementy macierzy z listy list (setq m00 (nth 0 (nth 0 tmatrix)) m01 (nth 1 (nth 0 tmatrix)) m02 (nth 2 (nth 0 tmatrix)) m03 (nth 3 (nth 0 tmatrix)) m10 (nth 0 (nth 1 tmatrix)) m11 (nth 1 (nth 1 tmatrix)) m12 (nth 2 (nth 1 tmatrix)) m13 (nth 3 (nth 1 tmatrix)) m20 (nth 0 (nth 2 tmatrix)) m21 (nth 1 (nth 2 tmatrix)) m22 (nth 2 (nth 2 tmatrix)) m23 (nth 3 (nth 2 tmatrix)) m30 (nth 0 (nth 3 tmatrix)) m31 (nth 1 (nth 3 tmatrix)) m32 (nth 2 (nth 3 tmatrix)) m33 (nth 3 (nth 3 tmatrix)) ) ;; Oblicz transpozycję macierzy rotacji (górna lewa 3x3) (setq inv00 m00 inv01 m10 inv02 m20 inv10 m01 inv11 m11 inv12 m21 inv20 m02 inv21 m12 inv22 m22 ) ;; Oblicz odwrotny wektor translacji (setq inv03 (- (+ (* inv00 m03) (* inv01 m13) (* inv02 m23))) inv13 (- (+ (* inv10 m03) (* inv11 m13) (* inv12 m23))) inv23 (- (+ (* inv20 m03) (* inv21 m13) (* inv22 m23))) ) ;; Skonstruuj macierz wynikową (list (list inv00 inv01 inv02 inv03) (list inv10 inv11 inv12 inv13) (list inv20 inv21 inv22 inv23) (list 0 0 0 1) ) ) ; =========================================================================================== ; ; Zwraca wynik mnożenia dwóch macierzy transformacji ; ; ------------------------------------------------------------------------------------------- ; ; (cd:T3D_CompositionTwoMatrices matrixA matrixB) ; ; =========================================================================================== ; (defun cd:T3D_CompositionTwoMatrices (A B) (list (list (+ (* (nth 0 (nth 0 A)) (nth 0 (nth 0 B))) (* (nth 1 (nth 0 A)) (nth 0 (nth 1 B))) (* (nth 2 (nth 0 A)) (nth 0 (nth 2 B)))) (+ (* (nth 0 (nth 0 A)) (nth 1 (nth 0 B))) (* (nth 1 (nth 0 A)) (nth 1 (nth 1 B))) (* (nth 2 (nth 0 A)) (nth 1 (nth 2 B)))) (+ (* (nth 0 (nth 0 A)) (nth 2 (nth 0 B))) (* (nth 1 (nth 0 A)) (nth 2 (nth 1 B))) (* (nth 2 (nth 0 A)) (nth 2 (nth 2 B)))) (+ (* (nth 0 (nth 0 A)) (nth 3 (nth 0 B))) (* (nth 1 (nth 0 A)) (nth 3 (nth 1 B))) (* (nth 2 (nth 0 A)) (nth 3 (nth 2 B))) (nth 3 (nth 0 A))) ) (list (+ (* (nth 0 (nth 1 A)) (nth 0 (nth 0 B))) (* (nth 1 (nth 1 A)) (nth 0 (nth 1 B))) (* (nth 2 (nth 1 A)) (nth 0 (nth 2 B)))) (+ (* (nth 0 (nth 1 A)) (nth 1 (nth 0 B))) (* (nth 1 (nth 1 A)) (nth 1 (nth 1 B))) (* (nth 2 (nth 1 A)) (nth 1 (nth 2 B)))) (+ (* (nth 0 (nth 1 A)) (nth 2 (nth 0 B))) (* (nth 1 (nth 1 A)) (nth 2 (nth 1 B))) (* (nth 2 (nth 1 A)) (nth 2 (nth 2 B)))) (+ (* (nth 0 (nth 1 A)) (nth 3 (nth 0 B))) (* (nth 1 (nth 1 A)) (nth 3 (nth 1 B))) (* (nth 2 (nth 1 A)) (nth 3 (nth 2 B))) (nth 3 (nth 1 A))) ) (list (+ (* (nth 0 (nth 2 A)) (nth 0 (nth 0 B))) (* (nth 1 (nth 2 A)) (nth 0 (nth 1 B))) (* (nth 2 (nth 2 A)) (nth 0 (nth 2 B)))) (+ (* (nth 0 (nth 2 A)) (nth 1 (nth 0 B))) (* (nth 1 (nth 2 A)) (nth 1 (nth 1 B))) (* (nth 2 (nth 2 A)) (nth 1 (nth 2 B)))) (+ (* (nth 0 (nth 2 A)) (nth 2 (nth 0 B))) (* (nth 1 (nth 2 A)) (nth 2 (nth 1 B))) (* (nth 2 (nth 2 A)) (nth 2 (nth 2 B)))) (+ (* (nth 0 (nth 2 A)) (nth 3 (nth 0 B))) (* (nth 1 (nth 2 A)) (nth 3 (nth 1 B))) (* (nth 2 (nth 2 A)) (nth 3 (nth 2 B))) (nth 3 (nth 2 A))) ) (list 0 0 0 1) ) ) (princ " Załadowane") (princ "\nTransMatrix v.0.1 ©2024 by Tomasz Tkaczyk") (princ "\nbased from gile on https://www.theswamp.org/index.php?topic=11561.0") (princ) Powyższe otwiera drogę do modyfikacji programu do rysowania obramowania grupy obiektów dowolnie zorientowanych w przestrzeni na płaszczyźnie X-Y aktualnego UCS'a również dowolnie zorientowanego z uwzględnieniem również obiektów typu MTEXT.1 punkt
-
Problem z bryłą która pochodzi ze sketchup-a
Adam Klaczek przyznał(a) reputację dmatusz3 za temat
1 punkt -
Dzisiaj zamodelujemy klucz płasko-oczkowy.1 punkt
-
W tym ćwiczeniu wrysujemy drogę do mapy zasadniczej stworzymy potrzebne warstwy zaprojektujemy jezdnię i chodnik zmienimy położenie drogi za pomocą czerwonych uchwytów Pobierz teraz rysunek DWG potrzebny do wykonania tego ćwiczenia. Zachęcamy do obejrzenia filmu, w którym wykonamy ćwiczenia krop po kroku.1 punkt