Autocad - zlece napisanie skryptu


Autor tematu
kendy
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 2
Posty: 477
Rejestracja: 02 lut 2008, 23:29
Lokalizacja: Wroclaw

Autocad - zlece napisanie skryptu

#1

Post napisał: kendy » 27 lut 2009, 13:27

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.



Tagi:


czarny356
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 1
Posty: 1
Rejestracja: 30 maja 2009, 10:26
Lokalizacja: oka

#2

Post napisał: czarny356 » 30 maja 2009, 14:08

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


aspem
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 1
Posty: 153
Rejestracja: 12 sie 2008, 16:04
Lokalizacja: Dragon city

#3

Post napisał: aspem » 02 cze 2009, 22:20

Witam,

Jak sprawa aktualna - napisz na priv.
Zobaczę co da się z tym zrobić.

Aspem


Cz. Falkowski
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 2
Posty: 2
Rejestracja: 29 lip 2009, 09:33
Lokalizacja: AZ

#4

Post napisał: Cz. Falkowski » 29 lip 2009, 09:55

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.


lewy10psdw
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 3
Posty: 346
Rejestracja: 26 sie 2008, 13:07
Lokalizacja: Koszalin
Kontakt:

#5

Post napisał: lewy10psdw » 17 sie 2009, 17:15

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;)


Cz. Falkowski
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 2
Posty: 2
Rejestracja: 29 lip 2009, 09:33
Lokalizacja: AZ

#6

Post napisał: Cz. Falkowski » 18 sie 2009, 06:48

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.


lewy10psdw
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 3
Posty: 346
Rejestracja: 26 sie 2008, 13:07
Lokalizacja: Koszalin
Kontakt:

#7

Post napisał: lewy10psdw » 18 sie 2009, 17:51

Gratias ago. Teraz wyskakuje mi "blad w pliku okna dialogowego...blad skladni sumbol "ok_cancel _err"


Autor tematu
kendy
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 2
Posty: 477
Rejestracja: 02 lut 2008, 23:29
Lokalizacja: Wroclaw

#8

Post napisał: kendy » 20 sie 2009, 22:43

Witam

Dawno nie zagladalem do tematu - sprawa nieaktualna :/
Znalazlem wykonawce pliku na forum autocada i jego program dziala wysmienicie :)

Mimo to dziekuje za zainteresowanie :)


lewy10psdw
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 3
Posty: 346
Rejestracja: 26 sie 2008, 13:07
Lokalizacja: Koszalin
Kontakt:

#9

Post napisał: lewy10psdw » 22 sie 2009, 08:02

To sie nim podziel ;)
Nie martw się kiedy jest źle bo będzie lepiej. Martw się jak jest dobrze bo będzie gorzej.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Autodesk Software (Autocad, Inventor etc) ”