Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy Arkance Systems [www.cadforum.cz]
CZ | SK | EN | DE
Přihlášení
či registrace
   právě nás čte: 3911 
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

 

NápovědaCAD diskuze, rady, výměna zkušeností

 
CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion 360, 3ds Max a s dalšími CAD aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy Arkance Systems (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoMaturitní práce v Lispu

 Odpovědět Odpovědět archiv
Autor
Zauwi Zobrazit panel
Nováček
Nováček

Přihlášen: 29.led.2006
Lokalita: ČR (PA)
Používám:
Inventor 11
Stav: Offline
Bodů: 3
Přímý odkaz na tuto zprávu Téma: Maturitní práce v Lispu
    Zasláno: 29.led.2006 v 09:52

Dobrý den,

chtěl bych se zeptat jestli někdo umí vysvětlit kreslení technických křivek v Cadu pomocí programu udělaným v Lispu?

(defun C:cyklo()
  (setq r(getreal"poloměr tvořící kružnice:"))
  (setq d(getreal"vzdálenost bodu:"))
  (setq t1 -2)
  (setq t2 4)
  (setq int (/ (- t2 t1) 100.0))
  (command "úsečka" "40,50" "400,50" "")
  (setq a t1)
  (setq x (-(* r a)(* d (sin a))))
  (setq y (- r (* d (cos a))))
  (setq x (+ x 40))
  (setq y (+ y 50))
  (command "bod" (list x y))
  (repeat 250
    (setq a (+ int a))
    (setq x (-(* r a)(* d (sin a))))
    (setq y (- r(* d(cos a))))
    (setq x (+ x 40))
    (setq y (+ y 50))
    (command "úsečka" "@" (list x y) "")
    )
  (command "regen")
  )

tohle je program na kreslení cykloidy,ale vůbec nevím jak se k tomu došlu.Příkazy znám ale nevim jak se v tomto případě postupuje.Myslím to ke vstahu k rovnicím přímek..mám ještě dělat hypocykloidu,epicykloidu,evolventu,archimedovu spirálu,a sinusovku...

 



Upravil Zauwi - 29.led.2006 v 09:53
Zpět nahoru
Seiner Zobrazit panel
CAD/BIM manager
CAD/BIM manager

Přihlášen: 01.říj.2004
Lokalita: ČR (PA)
Používám:
Mechanical 2017, Inventor 2017 a starší
Stav: Offline
Bodů: 1662
Přímý odkaz na tuto zprávu Zasláno: 29.led.2006 v 12:17

1. Při zběžném pohledu na zaslaný kód mám jisté pochybnosti o jeho správnosti. Nechápu například, proč je rozsah úhlů stanoven od -2 do 4, proč je krok setina rozsahu, ale cyklus kreslení se opakuje 250x. Na detailní rozbor ale nemám čas.
(nemýlím-li se, udávají se parametry goniometrických funkcí v lispu v obloukové míře).

2. Jinak ale postup obecně je triviální
- zajistit si vstup parametrů úlohy,
- nastavit případné konstanty a stanovit krok výpočtu
- nakreslit tvořící prvky (např. úsečku a kružnici)
- v cyklu vypočítat body křivky a průběžně je spojovat (v příkladu bylo použito spojování lomenou čarou z úseček)

3. Problémy může mít začátečník se sintaxí lispu - ze začátku je přepis z matematického vyjádření poněkud nepřirozený, ale to se při průměrném IQ rychle poddá.
Příklad: lisp :(setq x (-(* r a)(* d (sin a))))
             matematicky: x=r*a-d*sin(a)
(což je mimochodem právě x-ová souřadnice bodu cykloidy s poloměrem tvořící kružnice r a vzdáleností tvořícího bodu d od středu při odvalení o úhel a)

4. Všimnul jsem si, že stejně jako já, má většina účastníků této konference jisté výhrady přerůstající až v odpor ke zpracovávání domácích úkolů pro "vyčůrané" studenty. Myslím, že každý rád poradí zvídavému mladému muži v konkrétním problému, ale nečekejte, že vám to někdo tady napíše. Účastníci této konference jsou většinou lidé z praxe a vědí, jaké budoucí mladé kolegy a nástupce by chtěli. Takové, kteří si dokážou sehnat informace a s problémem se poprat.

Vítězslav Seiner

Chrudim
Zpět nahoru
Seiner Zobrazit panel
CAD/BIM manager
CAD/BIM manager

Přihlášen: 01.říj.2004
Lokalita: ČR (PA)
Používám:
Mechanical 2017, Inventor 2017 a starší
Stav: Offline
Bodů: 1662
Přímý odkaz na tuto zprávu Zasláno: 29.led.2006 v 12:45

Pokusím se o okomentování:

(defun C:cyklo() ;příkaz definice uživatelské funkce cyklo
  (setq r(getreal"poloměr tvořící kružnice:")) ; vstup a přiřazení poloměru
  (setq d(getreal"vzdálenost bodu:")) ; vstup a přiřazení d
  (setq t1 -2) ; nastavení počátečního úhlu - já bych tam dal asi 0
  (setq t2 4) ; nastavení koncového úhlu - já bych tam dal 2*PI
  (setq int (/ (- t2 t1) 100.0)) ; nastavení kroku výpočtu
  (command "úsečka" "40,50" "400,50" "") ;nakreslení odvalovací úsečky
  (setq a t1) ;nastavení úhlu na dolní mez
  (setq x (-(* r a)(* d (sin a)))) ;výpočet x-ové souřadnice prvního bodu
  (setq y (- r (* d (cos a)))) ;výpočet y-ové souřadnice prvního bodu
  (setq x (+ x 40)) ; posunutí x-ové souřadnice vzhledem k nakreslené odvalovací úsečce
  (setq y (+ y 50)) ; dtto pro y
  (command "bod" (list x y)) ;nakreslení bodu
  (repeat 250 ;začátek cyklu (ale proč 250?)
    (setq a (+ int a)) ;zvětšení úhlu o nastavený přírustek
    (setq x (-(* r a)(* d (sin a)))) ; výpočet x-ové souřadnice
    (setq y (- r(* d(cos a)))) ;výpočet y-ové souřadnice
    (setq x (+ x 40)) ;posunutí (asi pro názornost rozepsáno do 2 příkazů)
    (setq y (+ y 50)) ; posun y
    (command "úsečka" "@" (list x y) "") ;nakreslení úsečky z předchozího bodu do aktuálního
    ) ;konec cyklu
  (command "regen") ;regenerace "pro jistotu"
  ) ;konec definice funkce

 

Jinak kód je značně jednoduchý a nijak neošetřuje chybové stavy. Odvalovací úsečku bych asi kreslil radši podle zadaného poloměru kružnice.
A ještě poznámka. Až budete psát pro další křivky, uvědomte si, že AutoCAD umožňuje zadání bodů v polárních souřadnicích a pro některé křivky jsou rovnice v polárním vyjádření jednodušší.



Upravil Seiner - 29.led.2006 v 12:50
Vítězslav Seiner

Chrudim
Zpět nahoru
Zauwi Zobrazit panel
Nováček
Nováček

Přihlášen: 29.led.2006
Lokalita: ČR (PA)
Používám:
Inventor 11
Stav: Offline
Bodů: 3
Přímý odkaz na tuto zprávu Zasláno: 30.led.2006 v 13:07
Děkuju za důkladný rozbor.Nechtěl jsem,aby mi tu práci někdo napsal,spíš mi šlo o to,jestli je tu někdo,kdo by mi byl ochotný s tím poradit.potřeboval bych něco jako postup....při psaní kodu...napadlo mě,že budu muset asi postupovat stejně jako kdybych to kreslil na papír...?
Kdyby jste mi  třeba poradil do začátku,byl bych Vám vděčný.
Zpět nahoru
Seiner Zobrazit panel
CAD/BIM manager
CAD/BIM manager

Přihlášen: 01.říj.2004
Lokalita: ČR (PA)
Používám:
Mechanical 2017, Inventor 2017 a starší
Stav: Offline
Bodů: 1662
Přímý odkaz na tuto zprávu Zasláno: 30.led.2006 v 13:14

Jenže já už opravdu nevím, co by mohlo být návodnější, než okomentovaný kód.
Jestli chcete postup tak asi:

1. Zjistit si definici kreslené křivky a její rovnice (nejlépe) v parametrickém tvaru.

2. Rozhodnout o vstupních parametrech úlohy, případně o konstantách a rozsahu řešení.

3. Modifikovat vzorovou úlohu.

Vítězslav Seiner

Chrudim
Zpět nahoru
Zauwi Zobrazit panel
Nováček
Nováček

Přihlášen: 29.led.2006
Lokalita: ČR (PA)
Používám:
Inventor 11
Stav: Offline
Bodů: 3
Přímý odkaz na tuto zprávu Zasláno: 30.led.2006 v 13:39
Díky pokusím se o to...dám vědět jak to dopadlo
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 10361:VIPJak pomocí Lispu rozšířit prohledávací cesty AutoCADu?
Tip 5802:VIPPřevodník hladin a dávkové operace.
Tip 3274:VIPJak programově vytvořit vícelistový DWF soubor?
Tip 609:V AutoCADu mi nejde volání příkazu 3DARRAY z LISPu.
Tip 3081:Jak zapnout/vypnout obrazovkové menu z LISPu nebo skriptu?
Tip 2990:Existují nějaké hry pro AutoCAD?


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 0,926 sekund.