Ranking

  1. dmatusz3

    dmatusz3

    Administratorzy


    • Punkty

      16

    • Postów

      3 885


  2. tomasztalik

    tomasztalik

    Użytkownik forum


    • Punkty

      12

    • Postów

      40


  3. Martin_S

    Martin_S

    Użytkownik forum


    • Punkty

      7

    • Postów

      1 908


  4. perlon

    perlon

    Użytkownik forum


    • Punkty

      4

    • Postów

      432


Popularna zawartość

Zawartość, która uzyskała najwyższe oceny od 21.10.2024 uwzględniając wszystkie działy

  1. Na razie mamy coś takiego. Zostało jeszcze zapamiętanie i przeliczenie początkowych przesunięć widoków w rzutni.
    3 punkty
  2. dmatusz3

    Wektoryzacja rastrów

    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
  3. 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ęcie
    2 punkty
  4. perlon

    Kopiowanie wraz z obracaniem

    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
  5. kruszynski

    Lisp do ucinania

    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
  6. 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.pdf
    2 punkty
  7. 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=25596
    2 punkty
  8. 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 32bit
    2 punkty
  9. 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
  10. Badanie odgięć możemy zrealizować dzięki funkcji Informacje o zgięciu. Więcej o tej komendzie można przeczytać na stronie poniżej: ZW3D - Informacje o zgięciu
    2 punkty
  11. 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
  12. 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
  13. konwersję z skp na dwg robię pconplannerem.... przykład: mercy.skp po konwersji : mercy.dwg
    2 punkty
  14. 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
  15. 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
  16. pawmal

    ANNOALLVISIBLE

    Tak na marginesie, bardzo łatwo sprawdzić jak jest ustawiona widoczność tych elementów opisowych.
    1 punkt
  17. RobS

    Kopiowanie wraz z obracaniem

    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.
    1 punkt
  18. Martin_S

    Lisp do ucinania

    hmm w architecture 2024 tego nie ma w beta 2025 było
    1 punkt
  19. kruszynski

    Lisp do ucinania

    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
  20. pawmal

    Lisp do ucinania

    EXTRIM jest obecnie dostępny jako tryb rozszerzony polecenia UTNIJ (zmienna TRIMEXTENDMODE na 2).
    1 punkt
  21. 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 rozerwania
    1 punkt
  22. Adam Klaczek

    LISP, obrót widoku

    Mam taką wersję: DWidok_Skrecenie_v2.lsp i "chodzi"...
    1 punkt
  23. mili

    Co dzisiaj robiłem w lispie?

    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.lsp
    1 punkt
  24. dmatusz3

    Kronika filmowa

    Dzisiaj będzie o praktycznych zastosowaniach kalkulatora
    1 punkt
  25. 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
  26. 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żenie
    1 punkt
  27. dmatusz3

    Wektoryzacja rastrów

    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
  28. 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 profilach
    1 punkt
  29. 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 profilem
    1 punkt
  30. 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.dwg
    1 punkt
  31. 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
  32. Faktycznie ładnie wygląda ten model.
    1 punkt
  33. dmatusz3

    Kronika filmowa

    Dzisiaj zamodelujemy klucz płasko-oczkowy.
    1 punkt
  34. 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
Ten Ranking jest ustawiony na Warszawa/GMT+01:00