Zobrazit plnou verzi příspěvku: křivky ve VisualLispu, AutoCAD 2002
martinfr
21.12.2004, 17:50
Při kreslení křivky, kdy potřebuji nakreslit čáru, navázat oblouk, na něj zase čára, zase oblouk a zase čára. Vypadat by to mělo jako ležaté "U". První čára + první oblouk + navázaná čára se mi nakreslí dobře, ale od druhého oblouku mi to zlobí. Někdy se to vykreslí správně, někdy to oblouk úplně ignoruje a hned naváže poslední čáru. Pokud by bylo potřeba, zdrojový soubor můžu zaslat. Nemám s lispem moc zkušeností. Pokud by byla k dispozici nějaká stránka o lispu v češtině, byl bych za ní vděčný. Předem díky.
Bez kódu se samozřejmě nedá přesně zjistit, čím to je. Ale ještě než ho pošlete, zjistěte si, jestli nemáte zapnutý nějaký uchopovací mód. V lispovských programech se to běžně dělá tak, že na žačátku se nastavení OSMODE uloží do proměnné, pak se nastaví na 0 a na konci programu se vrátí původní hodnota. Obdobně pro hladinu, barvu, typ čáry.
Vladimír Michl
22.12.2004, 08:49
Mimochodem - lepší než nastavovat OSMODE na 0 je přičíst k aktuální hodnotě OSMODE číslo 16384 a na konci programu jej zase odečíst. Výhoda oproti nule je ta, že pokud váš LISP z jakéhokoliv důvodu selže, stiskem F3 si snadno opět zapnete původní kombinaci uchopovacích módů. Přičtění 16384 znamená dočasné potlačení osnapu.
martinfr
22.12.2004, 12:58
Nenastavuji žádné uchopovací módy. Tady uvádím ten výpis. Momentálně tam nemám kreslený druhý rádius.
(defun C:vetrak () (setq ctverecx (getdist "Zadej velikost čtverce v ose X: ") ctverecy (getdist "Zadej velikost čtverce v ose Y: ") prumer (getdist "Zadej vnitřní průměr: ") otvorx (getdist "Zadej velikost čtverce upevňovacích otvorů v ose X: ") otvory (getdist "Zadej velikost čtverce upevňovacích otvorů v ose y: ") dotvor (getdist "Zadej průměr upevňovacích otvorů: ") sirka (getdist "Zadej celkovou šířku: ") osaz (getdist "Zadej šířku osazení: ") stred '(0.0 0.0) polomer (/ prumer 2.0) prumer1 (+ prumer 14.0) konecx (/ ctverecx 2.0) konecy (/ ctverecy 2.0) pocatekx (- konecx) pocateky (- konecy) pocatek (list pocatekx pocateky) konec (list konecx konecy) sox (/ otvorx 2.0) soy (/ otvory 2.0) sox1 (- sox) soy1 (- soy) so1 (list sox1 soy1) so2 (list sox soy1) so3 (list sox1 soy) so4 (list sox soy) startx (+ konecx 200.0) pom1 (+ startx sirka) pom2 (+ polomer 7.0) pom3 (- pom1 7.0) pom4 (- pom1 osaz) startxy (list startx polomer) konec1 (list pom3 polomer) konec2 (list pom1 pom2) konec3 (list pom1 konecy) konec4 (list pom4 konecy) konec5 (list pom4 pom5) txtsta '(100.0 100.0) txtsta1 '(100.0 95.0) txtsta2 '(100.0 90.0) txtsta3 '(100.0 85.0) hlad "Detail") (command "obdélník" "a" 3.0 pocatek konec "") (command "kružnice" stred "d" prumer "") (command "kružnice" stred "d" prumer1 "") (command "kružnice" so1 "d" dotvor "") (command "kružnice" so2 "d" dotvor "") (command "kružnice" so3 "d" dotvor "") (command "kružnice" so4 "d" dotvor "") (command "křivka" startxy konec1 "o" "r" 7.0 konec2 "e" konec3 konec4 "") (setq starty1 (1+ polomer) startxy1 (list startx starty1) konec11 (list pom3 starty1)) (command "úsečka" startxy1 konec11 "") (command "text" startxy 2.5 0 startxy "") (command "text" konec1 2.5 0 konec1 "") (command "text" txtsta 2.5 0 polomer "") (command "text" txtsta1 2.5 0 prumer "") (command "text" txtsta2 2.5 0 starty1 "") (command "text" txtsta3 2.5 0 startxy1 "") (command "zoom" "m" "") (princ))
martinfr
28.12.2004, 07:59
Tak jsem použil nastavení OSMODE 0 a už mi to kreslí dobře. Díky za radu. Ještě takovou drobnost, mohli by jste mi napsat, jak uložím do proměnné aktuální hosdnotu OSMODE? Nějak se mi to nezdařilo. Dík
(setq xxx (getvar "OSMODE")) - ulozeni do promenne
(setvar "OSMODE" xxx) - navrat z promenne