Czy istnieje możliwość...


MEagle
 Share

Recommended Posts

Witam,

Czy istnieje możliwość aby w sposób automatyczny wszelkie wymiarowanie przechodziło na osobną warstwę?

Używam obecnie już jakiś rok ZWCADa 2008i. Przyjąłem kiedyś taki sposób rysowania, że stałe elementy takie jak tabliczka rysunkowa, rysowana część w rzutach, wymiarowanie rysuje na przydzielonych warstwach. Rysunek na ekranie przez to jest o wiele czytelniejszy. Rysunki są nie raz dość pokaźnych rozmiarów a i przy tym wymiarowań jest mnóstwo. Bywa tak, że umieszczanie elementów rysunkowych i wymiarowania przeplata się. Dlatego zadaję to pytanie, bo bardzo niewygodne jest przełączanie warstw.

Z pozdrowieniami,

MEagle

Link to comment
Share on other sites

Witam

W załączniku plik zawierający funkcję działającą w następujący sposób:

Funkcję wywołuje się przez wpisanie polecenia WW

Użytkownik wpisuje nazwę warstwy

Wszystkie wymiary zostają przeniesione na warstwę o podanej nazwie.

Dziękuję, Panowie, za odpowiedzi.

Do tej pory takich "manewrów" z dodatkowymi funcjami nie robiłem.

Próbuje dodać "wymiary.zel" do ZWCADa, ale pojawia się błąd.

Przebieg instalacji poniżej.

Polecenie: appload
Loading C:\Program Files\ZWCAD 2008i Plk\Download\Wymiary.zel
Polecenie: Wczytuję zaszyfrowany plik......
błąd: pusta funkcja
(VLAX-GET-ZWCAD-OBJECT)
(SETQ *ZCAPP* (VLAX-GET-ZWCAD-OBJECT))
(LOAD "C:/Program Files/ZWCAD 2008i Plk/Download/Wymiary.zel")

Polecenie: ww
Błędna komenda.  Sprobuj ponownie.

Mógłbym prosić o instrukcję jak dobrze dodać funkcję.

Link to comment
Share on other sites

Kiedyś na jakimś forum rozmawiałem z ludźmi na ten temat.

http://www.konstruktorbudowlany.fora.pl/cad,9/warstwa-liniii-wymiarowych,1333.html

Oto może być recepta na twoją bolączkę.

Pozdrawiam Tomasz Jankowski

Polecenie "w+" w wersji z powrotem na poprzednią warstwę działa wyśmienicie.

Minusem jest brak podglądu linii wymiarowych przy podawaniu punktów, ale do tego można się przyzwyczaić.

Dzięki serdeczne.

Link to comment
Share on other sites

Witam

Idąc za ciosem linii wymiarowych chciałbym Państwu przedstawić procedurę do szybkiego wymiarowania szeregowego w pionie i poziomie. Z góry ostrzegam że procedura została napisana pod Intelicada konkurencji ( z Intersoftu). ZWCad-a czasem używam w pracy jak muszę siedzieć w biurze a tam nie chwalę się swoimi procedurami.

W podziękowaniu za uzyskaną na tym forum pomoc chciałem przedstawić swoją procedurę.

Polecenia uruchamiające procedury:

wmz - wymiarowanie szeregowe w poziomie po osi X

wmn - wymiarowanie szeregowe w pionie po osi Y

;***********************************************************************************
;Procedura do szybkiego wymiarowania w stylu aktualnym na określonej warstwie w poziomie i w pionie
;Procedura do wymiarowania szerogowo w pionie i poziomie.
;Polecenie uruchamiające wymiarowanie w poziomie:  wmz
;Polecenie uruchamiające wymiarowanie w pionie:  wmn
;***********************************************************************************
;Autor: Tomasz Jankowski 09,2009r
;***********************************************************************************
;Procedura do szybkiego wymiarowania w stylu aktualnym na określonej warstwie w poziomie 
(defun c:wmz( / P2 P3 P4 P5 x1 x2 y1 y2 x4 x5 nrLK)
(setq old1 (getvar "CLAYER"))
(command "_layer" "_set" "5" ""); włączenie warstwy 5 <<<<< Tu można podać nazwę sowjej warstwy na której wykonywane są wymiarowania 
;--------------------------- pobieranie listy punktow
(c:pob_pkt)
(setq P2 (getpoint "\nWskaż początek wstawienia wymiarów: "))
(demo_punkt P2)
(setq P3 (getpoint P2 "\nWskaż odsunięcia wymiarów: "))
(demo_punkt P3)
(setq x1 (car P2))
(setq y1 (cadr P2))
(setq x2 (car P3))
(setq y2 (cadr P3))
;wstawienie 1 wymiaru
(setq P4 (nth 0 lista1))
(setq x4 (car P4))
(setq P5 (nth 1 lista1))
(setq x5 (car P5))
(command "_dimlinear" (list x4 y1) (list x5 y1) (list x5 y2))
;kontynuacja kolejnych wymiarów
(setq nrLK 0)
(setq nrLK (+ 2 nrLK))
(while (or (/= P4 nil) (/= P5 nil))
(progn
(setq P4 (nth (- nrLK 1) lista1))
(setq P5 (nth nrLK lista1))
(setq x4 (car P4))
(setq x5 (car P5))
(command "_dimlinear" (list x4 y1) (list x5 y1) (list x5 y2))
(setq nrLK (+ 1 nrLK)) ))
;kasowanie listy
(setq lista1 nil)
(setvar "CLAYER" old1 );przywrócenie starej warstwy 
)
;***********************************************************************************
;procedura do szybkiego wymiarowania w stylu aktualnym na określonej warstwie w pionie
(defun c:wmn( / P2 P3 P4 P5 x1 x2 y1 y2 x4 x5 nrLK)
(setq old1 (getvar "CLAYER"))
(command "_layer" "_set" "5" ""); włączenie warstwy 5 <<<<< Tu można podać nazwę sowjej warstwy na której wykonywane są wymiarowania 
;--------------------------- pobieranie listy punktow
(c:pob_pkt)
(setq P2 (getpoint "\nWskaż początek wstawienia wymiarów: "))
(demo_punkt P2)
(setq P3 (getpoint P2 "\nWskaż odsunięcia wymiarów: "))
(demo_punkt P3)
(setq x1 (car P2))
(setq y1 (cadr P2))
(setq x2 (car P3))
(setq y2 (cadr P3))
;wstawienie 1 wymiaru
(setq P4 (nth 0 lista1))
(setq y4 (cadr P4))
(setq P5 (nth 1 lista1))
(setq y5 (cadr P5))
(command "_dimlinear" (list x1 y4) (list x1 y5) (list x2 y5))
;kontynuacja kolejnych wymiarów
(setq nrLK 0)
(setq nrLK (+ 2 nrLK))
(while (or (/= P4 nil) (/= P5 nil))
(progn
(setq P4 (nth (- nrLK 1) lista1))
(setq P5 (nth nrLK lista1))
(setq y4 (cadr P4))
(setq y5 (cadr P5))
(if (/= P5 nil) 
(command "_dimlinear" (list x1 y4) (list x1 y5) (list x2 y5)))
(setq nrLK (+ 1 nrLK)) ))
;kasowanie listy
(setq lista1 nil)
(setvar "CLAYER" old1 );przywrócenie starej warstwy 
)
;***********************************************************************************
;Procedury potrzebne do działania poleceń: wmz; wmn
;***********************************************************************************
;procedura wstawia tymczasowy krzyżyk w punktach wstawienia
(defun demo_punkt( Px0 / x0 y0 )
(setq x0 (car Px0))
(setq y0 (cadr Px0))
(grdraw (list (- x0 5) y0) (list (+ x0 5) y0) 1 1)
(grdraw (list x0 (+ y0 5)) (list x0 (- y0 5)) 1 1))
;***********************************************************************************
;procedura do zbieramoa współrzędnych punktów i zapisywania ich w liście w pamięci komputera
(defun c:pob_pkt( / P1)
(progn
(setq lista1 nil)
(setq P1 (getpoint "\nWskaż 1 punkt:"))
(demo_punkt P1)
(setq lista1 (append lista1 (list P1)));<<<<< ta linia tworzy lzawartość listyistę
;petla do zapisywania punktów
(while (/= P1 nil)
(setq P1 (getpoint "\nWskaż kolejny punkt:"))
(if (/= P1 nil)(demo_punkt P1))
(setq lista1 (append lista1 (list P1)));<<<<< ta linia tworzy lzawartość listyistę
)))
;***********************************************************************************
(princ "\nWczytano polecenia: wmz; wmn")

Tu znajduje się link do procedury zapisanej w pliku: http://www.metrolradom.pl/forum_i/linie_szer.lsp

A tu znajduje się mała prezentacja działania programu: http://www.metrolradom.pl/forum_i/pokaz.htm

Mam nadzieję że Państwu przyda się ten program i przyśpieszy pracę tak jak mi.

Z wyrazami szacunku Tomasz

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share