Previous Next Play Pause
1 2 3 4

Aktualności, wydarzenia, nowości, promocje

Promocje

18 kwiecień 2024

ZWCAD MFG 2025 ukaże się już w czerwcu – jeszcze przed premierą czekają na Ciebie podwójne korzyści! Wraz z premierą wersji ZWCAD 2025 spodziewamy się wydania wersji branżowej ZWCAD MFG, w której...

ZWCAD - lista zmian i nowości

18 kwiecień 2024

Wkrótce premiera ZWCADa MFG 2025! Zachęcamy do zapoznania się z nowym oprogramowaniem CAD Skrót "MFG" w kontekście oprogramowania CAD (Computer-Aided Design, czyli komputerowe wspomaganie...

Promocje

16 kwiecień 2024

ZW3D 2025 już niebawem - skorzystaj z promocji przedpremierowej już dziś! Już 4 czerwca odbędzie się oficjalna premiera ZW3D 2025, zawierająca szereg nowych funkcji i ulepszeń. Zapoznaj się z...

ZWCAD - lista zmian i nowości

27 marzec 2024

Premiera najnowszej wersji programu ZWCAD powoli się zbliża, zachęcamy do zapoznania się z opisem nowości W ZWCAD 2025 znacząco ulepszyliśmy obsługę plików PDF oraz drukowania dużych rysunków. Do...

zapytanie ofertowe cadZapytanie ofertowe

Otrzymaj ofertę dopasowaną do swoich potrzeb. Chętnie doradzimy w wyborze oprogramowania i rozwiejemy wątpliwości. 

Prosimy o pozostawienie danych kontaktowych a nasi eksperci postarają się spełnić Państwa oczekiwania.

Referencje zwcadWybrane referencje

ZWCAD w firmie, która produkuje szkło dla budownictwa - Q4GLASS, ZWCAD i ZWTraffic przy projektach oraganizacji ruchu drogowego, ZWCAD wykorzystywany przy projektach sieci wodociągowych oraz przy konstrukcji hal przemysłowych, magazynowych i handlowych.

Programy CAD na YouTubeKanał YouTube

Zachęcamy do zapoznania się z zawartością naszego kanału na YouTube. Cyklicznie publikujemy filmy pokazujące funkcjonalność naszych programów CAD. Filmy poukładane są tematycznie, na przykład kurs ZWCAD 2024 - zobacz jak łatwo rozpocząć rysowanie.

Przykład 1

Koniec tego teoretyzowania :-). W tej "lekcji" zrobimy coś praktycznego. Przykład, którym się posłużę, będzie prosił użytkownika o wskazanie punktu, a następnie w miejscu wskazanym wstawiony zostanie krzyżyk opisujący współrzędne, X i Y.

p1 cel

Kod rysujący taki znaczek wyglądałby następująco:

  1. (vl-load-com)
  2. (setq *ZCApp* (vlax-get-zwcad-object))
  3. (setq *ActiveDocument* (vla-get-activedocument *ZCApp*))
  4. (setq *MSpace* (vla-get-modelspace *ActiveDocument*))
  5. (defun FullGetpoint (startPoint promp DefVal / ans outVal )
  6. (if startPoint
  7. (setq ans(vl-catch-all-apply 'getpoint (list startPoint promp ))) ; Wskaż punkt, z uwzględnieniem punku początkowego
  8. (setq ans(vl-catch-all-apply 'getpoint (list promp ))) ; Wskaż punkt
  9. )
  10. (if (not(vl-catch-all-error-p ans)) ;warunek sprawdzający czy nie wystąpił błąd we wskazywaniu punku
  11. (progn
  12. (if ans ;Warunek sprawdzający czy został wskazany prawidłowy punkt
  13. (setq outVal ans) ; Zwrócona zostanie lista współrzędnych wskazanego punktu
  14. (setq outVal DefVal) ; Zwrócona zostanie wartość domyślna
  15. )
  16. )
  17. (setq outVal nil) ; zwrócona zostanie pusta wartość
  18. )
  19. outVal
  20. )
  21. (defun C:Krzyz ( / P0 P0v Wysokosc TextX TextXEnt TextY TextYEnt TextBBox textwidth)
  22. (setq P0 (FullGetpoint nil "Wskaż punkt" nil))
  23. (setq P0v (vlax-3d-point P0))
  24. (setq Wysokosc 5)
  25. (if P0
  26. (progn
  27. (setq TextX (vla-addtext *MSpace* (rtos (car P0) 2 2) P0v Wysokosc)) ;dodaje tekst
  28. (setq TextXEnt(entget(vlax-vla-object->ename TextX)))
  29. (setq TextBBox (textbox TextXEnt))
  30. (setq textwidth (caar(cdr TextBBox ))) ;Oblicza szerokość tekstu
  31. (vlax-invoke-method TextX 'Move P0v (vlax-3d-point(list (+ (car P0) (* 0.2 Wysokosc )) (+ (cadr P0) (* 0.2 Wysokosc )) (+ (caddr P0) (* 0.1 Wysokosc ))))) ; Przesuwa punkt
  32. (vla-addline *MSpace* (vlax-3d-point (list (- (car P0) (+ textwidth (* 0.2 Wysokosc ))) (cadr P0) (caddr P0))) ;Tworzy linię
    (vlax-3d-point (list (+ (car P0) (+ textwidth (* 0.2 Wysokosc ))) (cadr P0) (caddr P0))))
  33. (vla-addline *MSpace* (vlax-3d-point (list (car P0) (+ (cadr P0) (+ textwidth (* 0.2 Wysokosc ))) (caddr P0)))
    (vlax-3d-point (list (car P0) (- (cadr P0) (+ textwidth (* 0.2 Wysokosc ))) (caddr P0))))
  34. (setq TextY (vla-addtext *MSpace* (rtos (cadr P0) 2 2) P0v Wysokosc))
  35. (vlax-invoke-method TextY 'Move P0v (vlax-3d-point(list (+ (car P0) (* 0.2 Wysokosc )) (+ (cadr P0) (* 0.2 Wysokosc )) (+ (caddr P0) (* 0.1 Wysokosc )))))
  36. (vlax-invoke-method TextY 'Rotate P0v (/ pi -2.0))
  37. )
  38. )
  39. (command "regen")
  40. (print )
  41. )

  • Linie 1-4 są podstawą, najlepiej zapisać sobie to w szablonie i każdy tworzony plik lispa zaczynać od tych linii.
  • Linie 5-20 to funkcja prosząca użytkownika o wskazanie punktu. Zawiera obsługę sytuacji wyjątkowych jak wciśnięcie klawisza [ESC]. Jeśli użytkownik wciśnie [ENTER] zostanie zwrócona domyślna wartość (trzeci parametr wywołania funkcji).
  • Linie 21 - 41 Główna funkcja rysująca znacznik
  • Linia 27 Tworzony jest nowy obiekt - tekst jednowierszowy.
    (rtos (car P0) 2 2) pobiera współrzędną X wskazanego punktu. Jest to liczba. Natomiast do tworzenia tekstu potrzebna jest nam zmienna typu tekst. Konwersji liczby rzeczywistej na tekst można dokonać funkcją rtos. Jej parametrami wywołania są trzy liczby: Pierwsza to wartość jaką chcemy zamienić. Druga to system w którym chcemy wyświetlić, gdzie 2 oznacza system dziesiętny. Trzecia to ilość miejsc po przecinku, do których chcemy zaokrąglić. Po takiej zamianie mamy wartość, która będzie wyświetlana, kolejne parametry to współrzędne punktu wstawienia takiego tekstu oraz wysokość tekstu.
  • Wielkość znaku krzyża, czyli długości linii tworzących znak możemy ustawić na stałe. Na potrzeby tego przykładu postanowiłem że długość tych linii zależna będzie od szerokości tekstu, czyli pokreślony zostanie cały napis, niezależnie od tego, ile znaków będzie miał tekst. Szerokość tekstu możemy poznać na dwa sposoby. Pierwszy sposób dotyczy jedynie tekstów jednowierszowych i jest to funkcje textbox. Inny to GetBoundingBox, ale o niej porozmawiamy innym razem
  • Linia 29 "mierzy" szerokość tekstu jednowierszowego. Jej parametrem jest nazwa obiektu (zwracana przez entget). Funkcja zwraca dwuelementową listę, na podstawie której, możliwe jest określenie wysokości i szerokości tekstu.
  • Linia 28 Zmienia teksty typu obiekt na nazwę obiektu, która jest potrzebna do funkcji textbox
  • Linia 31 Gdyby tekst leżał dokładnie na linii czyli we współrzędnych wskazanych przez użytkownika byłoby to mało czytelne, dlatego podniesiemy nasz napis odrobinę, a dokładnie to o 1/5 wysokości napisu i przesuniemy go w prawo.
  • Linia 32, 33 Tworzą linie, których współrzędne początku i końca są odsunięte w poszczególnych kierunkach o szerokość tekstu.
  • Linie 34-41 Dodają ostatni tekst, określający współrzędną y. Tekst ten również jest przesuwany, żeby nie pokrywać się z linią a następnie obracany jest o 90 stopni, aby unaocznić że dotyczy to współrzędnej y.