Strona 1 z 1
Autocad - zlece napisanie skryptu
: 27 lut 2009, 13:27
autor: kendy
Witam
Mam potrzebe posiadania pewnego skryptu. Niestety sam nie umiem go wykonac wiec chetnie zlece go komus kto sie na tym zna. Oczywiscie zaplace
Produkuje uszczelki i chce aby skrypt robil takie kroki:
1. pytanie czy uszczelka (wszystkie sa okragle) ma otwory czy nie
2. pytanie o srednice zewn a potem wewnetrzna
3. jesli otwory sa to ile, na jakiej srednicy podzialowej i jaka maja srednice
4. jaka ilosc
dobrze byloby aby zapamietywal najpierw te dane bo jesli kojejna uszczelka wchodzi 'w srodek' to chcialbym aby od razu ja tam dopasowywal.
Idealem byloby gdyby jeszcze przy np. wiekszej liczbie uszczelek malych niz duzych, wpisywal male do duzych tyle ile ma byc duzych a reszte malych osobno a nastepnie wszystko rysowal (nesting przeprowadze juz kolejnym programem wiec chodzi tylko o samo rysowanie).
Czy jest to wogole do zrobienia? Jesli tak to czy ktos by sie tego podjal?
Pozdrawiam
k.
: 30 maja 2009, 14:08
autor: czarny356
jest możliwe napisanie takiego skryptu bądź też skorzystanie z AutoLISP, skrypt może być napisany albo w excelu bądź też w Pascalu, tylko pisząc skrypt najlepiej jest korzystać z komend angielskich, a po drugie w skryptach ciężko jest wykryć błąd więc polecam Auto LISP.
czarny
: 02 cze 2009, 22:20
autor: aspem
Witam,
Jak sprawa aktualna - napisz na priv.
Zobaczę co da się z tym zrobić.
Aspem
: 29 lip 2009, 09:55
autor: Cz. Falkowski
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.
: 17 sie 2009, 17:15
autor: lewy10psdw
Zrobilem wszystko zgodnie z Twoja instrukcja, makro dziala, ale chyba nie do konca, a mianowicie- nie rozmieszcza otworow szykiem kolowym, Tworzy mi tylko jednen otwor polozony na srednicy podzialowej i chyba jeszcze tworzy uszczelke dwokrotnie tzn, dwie nalozone na siebie. Moze to ja zrobilem cos nie tak? jezeli chodzi o visuallisp to to moje pierwsze doczynienie z nim, wiec prosze nie krzyczec;)
: 18 sie 2009, 06:48
autor: Cz. Falkowski
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.
: 18 sie 2009, 17:51
autor: lewy10psdw
Gratias ago. Teraz wyskakuje mi "blad w pliku okna dialogowego...blad skladni sumbol "ok_cancel _err"
: 20 sie 2009, 22:43
autor: kendy
Witam
Dawno nie zagladalem do tematu - sprawa nieaktualna :/
Znalazlem wykonawce pliku na forum autocada i jego program dziala wysmienicie
Mimo to dziekuje za zainteresowanie

: 22 sie 2009, 08:02
autor: lewy10psdw
To sie nim podziel
