lispy, lispy i inne lispy


alf

Rekomendowane odpowiedzi

  • Odpowiedzi 52
  • Dodano
  • Ostatniej odpowiedzi

Top użytkownicy w tym temacie

Top użytkownicy w tym temacie

Jeżeli długość kreski głównej waha się w granicach: od >niż odsunięcie a <= niż dwa odsunięcia to skrypt rysuje dwie kreski

myślę że w skrypcie napisał pan że wstawiamy tylko jedną kreskę prostopadłą gdy główna linia jest krótsza niż odsunięcie (powinno być krótsza niż dwa odsunięcia).

Więcej błędów na razie nie zauważyłem.

Odnośnik do komentarza
Udostępnij na innych stronach

Zabrałem się za naukę lispa i od razu mam problemy :mrgreen:

Nie wiem jak sprawdzić lispem czy dana warstwa istnieje, jaki warunek zastosować?

Poniżej zamieszczam kod którego końcówka działa ale początek niestety nie.

Może ktoś jest w stanie mnie poprawić, lub nakierować gdzie mogę znaleźć informację co robię nie tak. Zamierzam zrobić podobną funkcje do wstawienie stylu tekstu (ale najpierw chcę skończyć ten tutaj).

(defun c:test ()


; wybieramy warstwe IS_opisy jako aktualną lub gdy jej nie ma tworzymy ją i ustawiamy jako aktualną

; sprawdzamy listę warstw ====================
(setq lista-warstw
(list (command "_layer" "?" "*" "" "");command
);list
);setq
;=============================================


(if (/= nil (member "IS_opisy" lista-warstw))

; od tego miejsca wg mnie jest OK

(progn
(command "_clayer" "IS_opisy")
);progn  do zdarzenia na tak

(progn
(command "_layer"
	"_N" "TEMP-LAYER"
	"_C" "41" "TEMP-LAYER"
	"_L" "Continuous" "TEMP-LAYER"
	"_LW" "0.13" "TEMP-LAYER" "")
(command "_rename" "_LA" "TEMP-LAYER" "IS_opisy")
(command "_clayer" "IS_opisy")
);progn do zdarzenia na nie 
);if
);defun test

Odnośnik do komentarza
Udostępnij na innych stronach

Również czekam na samouczek.

Ze sprawdzaniem warstw i stylów tekstu sobie poradziłem. Z ewentualnym tworzeniem nowych o określonych parametrach również.

Mam za to problem z zakończeniem pętli. Teraz wstawiłem na sztywno 100 powtórzeń ale chciałbym aby pętla powtarzała się dopóki będę wybierał punkt. Jeśli kliknę "prawym" przyciskiem myszy pętla powinna się zakończyć. Teraz co prawda po kliknięciu prawym też się pętla przerywa ale jest to spowodowane błędnie wprowadzoną daną :???:

Poniżej kod pętli, którą chciałbym przerywać "prawym" przyciskiem myszy.

Da się to jakoś zgrabnie poprawić?

 (repeat 100
 ;teraz petla do odczytywania wspulrzednych i wypisywania tekstu pod tabelką.
 ; ustawiamy zmienną PUNKT1 z wpółrzędnymi punktu na rozwinieciu
 ; zwcad prosi o klikniecie punktu i odczytuje współrzedne tego punktu i przypisuje je do PUNKT1
 (setq PUNKT1 (getpoint "\nWskaż punkt na rozwinięciu.")
 X1 (car PUNKT1)
 Y1 (cadr PUNKT1)
 punktA punktA2
 punktB punktB2
 punktC punktC2
 )

; ustawiamy zmienne ODLEGLOSC i RZEDNA
 (setq ODLEGLOSC (+ (/ (- X1 X0) 100) odl0)
	RZEDNA (+  POZIOM (/ (- Y1 Y0) 100))
 )

; zwcad wpisuje text odległość i rzedna w tabelce
   (setq X2 (- X1 5.0)
	  Y2 (- Y0 40)
      PUNKT2 (list X2 Y2)
   )
      (command "_.text" "_J" "_C" PUNKT2 "18" "90" (rtos ODLEGLOSC 2 2) )
      (print ODLEGLOSC)

     (setq X3 (- X1 5.0)
	    Y3 (- Y0 120)
           PUNKT3 (list X3 Y3)
     )
 (command "_.text" "_J" "_C" PUNKT3 "18" "90" (rtos RZEDNA 2 2) )
 (print RZEDNA)

 ;rysowanie linii tabelki
     (setq X4 X1
	    Y4 (- Y0 160)
           PUNKT4 (list X4 Y4);punkt4 jest dolnym punktem pionowej linii tabelki
		X5 X1
	    Y5 (- Y1 15)
           PUNKT5 (list X5 Y5);punkt5 jest górnym punktem pionowej linii tabelki
		punktC2 PUNKT4
		punktB2 (list X4 (+ Y4 80))
		punktA2 (list X4 (+ Y4 160))
   )
 (command "_line" PUNKT4 PUNKT5 "")
 (command "_line" punktA punktA2 "")
 (command "_line" punktB punktB2 "")
 (command "_line" punktC punktC2 "")
 ; koniec rysowania linii tabelki

 )

Odnośnik do komentarza
Udostępnij na innych stronach

Trzeba to zrobić przez sprawdzenie tego z zwróci getpoint

Ja bym to zrobił tak:

(setq Px (getpoint "Wskaż pierwszy punkt"))

(while Px

.

.

.

(setq Px (getpoint "Wskaż kolejny punkt"))

)

Jeśli wciśnie Pan [ENTER] kliknięcie prawym powinno dać ten sam skutek, to getpoint zwróci nil a pętla więcej się nie wykona.

Jeśli wciśnie Pan [ESC] Program się wywali. To też można obsłużyć przez vl-catch-all-apply .

Odnośnik do komentarza
Udostępnij na innych stronach

Mój pierwszy skrypt napisany. Może nie jest idealny ale działa.

Przyda się projektantom instalacji sanitarnych.

Skrypt opisuje rzędne i odległości na rozwinięciu kanalizacji sanitarnej. Opisy tworzą się specjalnie stworzonym stylem tekstu "IS_SIMPLEX" na warstwie "IS_opisy".

Za pomoc przy pisaniu skryptu dziękuję Panu o nicku :"kruszynski".

Skrypt uruchamiamy poleceniem: PKS

PKS_v1.00.zel

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...
Co prawda nigdy nie robiłem rozwinięcia inst. kanalizacyjnej wewnętrznej w innej skali niż 1:100 ale w wolnym czasie (chwilowo brak) pomyślę nad dodaniem takiej funkcji.

ale zewnętrzne to skala 1:100/1000 lub mniej (pionowa w "decymetrach")..

wymiarowanie profili jest problemem, bo albo trzeba mieć osobny program do tego albo dziergać na piechotę. Nie spotkałam jeszcze jeszcze nakładki na cadowy program, która by wymiarowała profile.. :???:

Odnośnik do komentarza
Udostępnij na innych stronach

do profili zewnętrznych jest program "Kreślarz"

http://www.kreslarz.hydrosystem.lublin.pl/

wersja demo ma ograniczenie czasowe (bardzo długie, mi się nigdy nie skończyło, nie wiem czemu)

Kilka osób prosiło już mnie o przerobienie tego skryptu tak aby nadawał się do zewnętrznych profili, bo kreślarza nie używają.

Zapewne w wolnych chwilach powstanie taki skrypt, dodam kilka linijek tabeli typu: zagłębienie, przykrycie, spadek itp. i udostępnię go na forum.

Będzie trzeba klikać dwa razy więcej (na przewodzie wymiarowanym oraz na rzędnej terenu) ale dzięki temu uzupełni się cała tabelka :-)

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 miesiące temu...
  • 2 lata później...
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.