Znaleziono 2 wyniki

autor: Cz. Falkowski
18 sie 2009, 06:48
Forum: Autodesk Software (Autocad, Inventor etc)
Temat: Autocad - zlece napisanie skryptu
Odpowiedzi: 8
Odsłony: 5220

Mea culpa.
Zapomnialem dodac jedna linijke kodu.

Wstaw ja do pliku uszczelka.lsp jak pokazano ponizej.

;;;;...........
(command"CIRCLE" cd "D" d)
(command"-ARRAY" "SI" (entlast) "P" c n "360" "Y") ;;;dodaj ta jedna linijke kodu
))
))
) ;cond
) ;while
(unload_dialog dclp)
(princ)
)
;;;;koniec pliku *.lsp

A propos, nie mam w zwyczaju krzyczec, pisalem duzymi literami aby bardzo poczatkujacy nie przegapili, ze to wazne.



Pozdrowienia.
autor: Cz. Falkowski
29 lip 2009, 09:55
Forum: Autodesk Software (Autocad, Inventor etc)
Temat: Autocad - zlece napisanie skryptu
Odpowiedzi: 8
Odsłony: 5220

Napisalem ci dwa pliki:
uszczelka.dcl
uszczelka.lsp

Oto one:

//plik uszczelka.dcl dla uczczelka.lsp
uszczelka : dialog { label ="Uszczelka.lsp";
:column{
:boxed_column { label = "Wymiary";
:edit_box{key="od"; label="Srednica zewnetrzna"; edit_width=6;fixed_width=true;}
:edit_box{key="id"; label="Srednica wewnetrzna (opcja A)"; edit_width=6;fixed_width=true;}
:edit_box{key="n"; label="Ilosc otworkow (opcja B)"; edit_width=6;fixed_width=true;}
:edit_box{key="d"; label="Srednica otworkow (B)"; edit_width=6;fixed_width=true;}
:edit_box{key="dp"; label="Srednica podz. otworkow (B)"; edit_width=6;fixed_width=true;}
} ////boxed_column
:boxed_row{label = "Punkt srodkowy";
:edit_box{key="c"; label="Cen"; edit_width=26;fixed_width=true;}
:button{key="<c";label="<<";}
} ////boxed_row
spacer;
:row{ok_button; cancel_button;}
} ////column
} ////dialog
////koniec pliku

;;plik uszczelka.lsp
;;rysuje uszczelke
;; potrzebuje pliku uszczelka.dcl
;; Cz. Falkowski
;; Phx,AZ,USA 7/28/2009
;;; globalne zmienne: uszczelka: udcl
(defun c:uszczelka (/ od id n d dd c pkt dclp what tl x y cd)
(if (not udcl)(setq udcl (getfiled"Wybierz plik USZCZELKA.DCL" "" "dcl" 0)))
(if udcl (setq dclp (load_dialog udcl))(alert"Nie znaleziono pliku:\nuszczelka.dcl"))
(if (not uszczelka:)(setq uszczelka: (list "50.0" "20.0" "4" "10.0" "35.0" "0,0")) )
(setq what 20 tl (list "od" "id" "n" "d" "dp" "c") )
(mapcar '(lambda(x y)(set (read x)y)) tl uszczelka:)
(while (< 1 what)
(if(not(new_dialog "uszczelka" dclp))(progn(alert(strcat"Brak definicji:\nuszzelka\nw pliku "udcl))) )
(mapcar '(lambda(x)(set_tile x(eval(read x)))) tl)
(action_tile "od" "(setq od $value)")
(action_tile "id" "(setq id $value)")
(action_tile "n" "(set_tile \"n\"(setq n (itoa(abs(fix(atof $value))))))")
(action_tile "d" "(setq d $value)")
(action_tile "dp" "(setq dp $value)")
(action_tile "c" "(setq c $value)")
(action_tile "<c" "(progn(setq uszczelka(list od id n d dp c))(done_dialog 3))")
(action_tile "accept" "(progn(setq uszczelka(list od id n d dp c))(done_dialog 2))")
(action_tile "cancel" "(progn(setq uszczelka(list od id n d dp c)))(done_dialog 1))")
(setq what(start_dialog))
(cond
((= what 3)
(if(setq pkt(getpoint"\nWybierz pkt srodkowy usczelki: "))
(setq c (strcat(rtos (car pkt) 2 4)","(rtos(cadr pkt) 2 4)))
)
)
((= what 2)(progn
(command"_CIRCLE" c "D" od "_CIRCLE" c "D" id)
(if(and(>(atoi n)0)(>(atof d)0) (>(atof d)0))(progn
(setq cd(strcat "@"(rtos (* 0.5(atof dp))2 4)",0"))
(command"_CIRCLE" cd "D" d)
(command"-array" "SI" "L" "P" c n "360" "Y")

))
))
) ;cond
) ;while
(unload_dialog dclp)
(princ)
)
;;;koniec pliku uszczelka.lsp


Jezeli jestes zupelnie zielony w AutoLISP to zrob co nastepuje:
1. Zrob sub-folder LSP w folderze posiadajcym ACAD
np C:\Program Files|Autodesk|ACAD 2008\Lsp
2. Zapisz moje pliki do tegoz foldera
3. Wystartuj ACAD a nastepnie zaladuj plik USZCZELKA.LSP poprzez jego komende
_APPLOAD
4. Wystartuj makro poprze komende USZCZELKA
5. Makro zapyta o plik USZCZELKA.DCL - wybierz go.
6. Wpisz wymiary i kliknij OK.

Pamietaj, ze powinnes miec zmienne:
CMDDIA = 1
FILEDIA = 1

Makro rysuje jedna uszczelke, nastepnie uzyj commendy _ARRAY.
Mozna ja dodac do makro ale jest juz pozno i chce mi sie spac.

Good night!
Cz

P.S.
Oczywiscie napisalem to w ramach "profesional courtesy" i wcale tego makro nie potrzebuje. Zrob z nim co uwazasz za stosowne.

Wróć do „Autocad - zlece napisanie skryptu”