Autocad - zlece napisanie skryptu
-
Autor tematu - Specjalista poziom 2 (min. 300)
- Posty w temacie: 2
- Posty: 477
- Rejestracja: 02 lut 2008, 23:29
- Lokalizacja: Wroclaw
Autocad - zlece napisanie skryptu
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.
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.
Tagi:
-
- Nowy użytkownik, używaj wyszukiwarki
- Posty w temacie: 2
- Posty: 2
- Rejestracja: 29 lip 2009, 09:33
- Lokalizacja: AZ
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.
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.
-
- Specjalista poziom 2 (min. 300)
- Posty w temacie: 3
- Posty: 346
- Rejestracja: 26 sie 2008, 13:07
- Lokalizacja: Koszalin
- Kontakt:
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;)
-
- Nowy użytkownik, używaj wyszukiwarki
- Posty w temacie: 2
- Posty: 2
- Rejestracja: 29 lip 2009, 09:33
- Lokalizacja: AZ
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.
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.
-
- Specjalista poziom 2 (min. 300)
- Posty w temacie: 3
- Posty: 346
- Rejestracja: 26 sie 2008, 13:07
- Lokalizacja: Koszalin
- Kontakt:
-
- Specjalista poziom 2 (min. 300)
- Posty w temacie: 3
- Posty: 346
- Rejestracja: 26 sie 2008, 13:07
- Lokalizacja: Koszalin
- Kontakt: