Zobrazit plnou verzi příspěvku: Autolisp metody pro půdorysy

gadael
11.06.2012, 21:47
Zdravím,jsem nováček v práci s CADem, do školy vyrábím jednoduchou aplikaci napsanou v autolispu - jednoduchého bytového architekta. Prozatím jsem si napsal procedury pro vytvoření pokoje a několik druhů nábytku a vytvořil jsem si vlastní panely v menu z jejichž ovládacích prvků jsem namapoval tyto procedury.Mám několik dotazů:neznáte nějakou funkční rutinu, která vloží na zadané místo na zdi symbol dveří (klasický z půdorysů). Několik jsem jich na internetu našel, ale žádnou se mi nepodařilo zprovoznit na mém AutoCADu 2010.v lispu bych si rád napsal rutinku, která mi pootočí danou entitu o 90° (bude se jednat o poslední přidanou entitu, takže ji získám pomocí entlast). Jak na to? Asi něco jako command "ROTATE" ... bohužel nevím, jak na tu konstrukci.Díky moc,Honza

alfred
11.06.2012, 22:15
Pokud se nejedna vylozene o cviceni do skoly, tak doporucuji nejprve dost dlouho hledat - takovyhle projektu bylo jiz mnoho. Namatkou zminim treba kdysi SKIJO. Ale proc dvere kreslit lispem-neni lepsi dobrý dynamicky blok? ad otoceni - proste pouzijete stejnou sekvenci povelu jako na klavesnici: Priklad: (command "_rotate" "L" "" PAUSE "10")otoci posleni entitu o 10°referencni bod se zadava rucne

gadael
11.06.2012, 22:29
chtěl jsem použít něco jako např. toto:(DEFUN C: DOOR ()
(SETVAR "CMDECHO" 0)
(SETQ HOR (GETDIST "\nHORIZONTAL DISTANCE:"))
(SETQ VER (GETDIST "\nVERTICAL DISTANCE:"))
(SETQ TR (GETDIST "\nTRIM WIDTH:"))
(SETQ KNOB (GETDIST "\nENTER DOOR KNOB RADIUS:"))
(SETQ CL (GETVAR "CLAYER"))
(SETQ SP (GETPOINT "\nPICK LOWER LEFT CORNER OF OPENING:"))
(SETQ P2 (POLAR SP (DTR 0) HOR))
(SETQ P3 (POLAR SP (DTR 180) TR))
(SETQ P4 (POLAR P2 (DTR 0) TR))
(SETQ P5 (POLAR P4 (DTR 90) (+ TR VER)))
(SETQ P6 (POLAR P5 (DTR 270) TR))
(SETQ P7 (POLAR P6 (DTR 180) TR))
(SETQ P8 (POLAR P7 (DTR 180) HOR))
(SETQ P9 (POLAR P8 (DTR 180) TR))
(SETQ P10 (POLAR P9 (DTR 90) TR))
(SETQ P11 (POLAR P10 (DTR 270) (+ TR VER)))
(COMMAND "LAYER" "M" "DOOR" "C" "YELLOW" "" "")
(COMMAND "LINE" SP P8 P7 P2 P3 P10 P8 P10 P5 P7 P5 P4 P2 C)
(SETQ P12 (POLAR SP (DTR 90) 36))
(SETQ P13 (POLAR P12 (DTR 0) 3))
(COMMAND "LAYER" "M" "KNOB" "C" "GREEN" "" "")
(COMMAND "CIRCLE" P13 KNOB "")
(SETVAR "CLAYER" CL)
)
(DEFUN DTR (a) (* Pi (/ a 180.0)))
(PRINC)Vypadá to velmi jednoduše a mně by to úplně stačilo, ale v AutoCADu 2010 se mi to nepodařilo rozchodit, hlásí to chybu. Děkuju za odpověď.

alfred
12.06.2012, 06:50


[QUOTE=gadael]chtěl jsem použít něco jako např. toto:(DEFUN C:DOOR ();původně (DEFUN C: DOOR ()
(SETVAR "CMDECHO" 0)
(SETQ HOR (GETDIST "\nHORIZONTAL DISTANCE:"))
(SETQ VER (GETDIST "\nVERTICAL DISTANCE:")) ;nepoužívejte pro proměnné název funkce! Název proměnné změňte.
(SETQ TR (GETDIST "\nTRIM WIDTH:"))
(SETQ KNOB (GETDIST "\nENTER DOOR KNOB RADIUS:"))
(SETQ CL (GETVAR "CLAYER"))
(SETQ SP (GETPOINT "\nPICK LOWER LEFT CORNER OF OPENING:"))
(SETQ P2 (POLAR SP (DTR 0) HOR))
(SETQ P3 (POLAR SP (DTR 180) TR))
(SETQ P4 (POLAR P2 (DTR 0) TR))
(SETQ P5 (POLAR P4 (DTR 90) (+ TR VER)))
(SETQ P6 (POLAR P5 (DTR 270) TR))
(SETQ P7 (POLAR P6 (DTR 180) TR))
(SETQ P8 (POLAR P7 (DTR 180) HOR))
(SETQ P9 (POLAR P8 (DTR 180) TR))
(SETQ P10 (POLAR P9 (DTR 90) TR))
(SETQ P11 (POLAR P10 (DTR 270) (+ TR VER)))
(COMMAND "LAYER" "M" "DOOR" "C" "YELLOW" "" "");viz níže
(COMMAND "LINE" SP P8 P7 P2 P3 P10 P8 P10 P5 P7 P5 P4 P2 C)
(SETQ P12 (POLAR SP (DTR 90) 36))
(SETQ P13 (POLAR P12 (DTR 0) 3))
(COMMAND "LAYER" "M" "KNOB" "C" "GREEN" "" ""); pro příkaz bez dialogu použijte "-LAYER". Nezapoměňte, že v českém AutoCadu je potřeba zadávat pro anglické příkazy ještě podtržítko - tedy "_-layer"
(COMMAND "CIRCLE" P13 KNOB "")
(SETVAR "CLAYER" CL)
)
(DEFUN DTR (a) (* Pi (/ a 180.0)))
(PRINC)Vypadá to velmi jednoduše a mně by to úplně stačilo, ale v AutoCADu 2010 se mi to nepodařilo rozchodit, hlásí to chybu. Děkuju za odpověď.[/QUOTE]Připsal jsem několik komentářů. Pro příkazy ve funkci (COMMAND) používejte podtržítko - bude to fungovat i v neanglických AutoCadech. To platí o pro povely v rámci příkazu:(COMMAND "_-LAYER" "_M" "DOOR" "_C" "YELLOW" "" "")Jaký používáte editor? Ve funkci máte několik fatálních chyb, které by se Vám asi při použití vestavěného [CMD]VLIDE[/CMD] (_VLIDE) editoru nestaly a nebo by jejich odhalení bylo otázkou minuty.Ještě dodám - funkce mi nefunguje (MAP 2011). Pouhé doplnění podtržítek tedy nestačí a jsou tam nějaké další chyby. Podrobnějšímu zkoumání funkce se nemohu věnovat. Mimochodem, určitě tam nemáte kontrolu proti zadání nezmyslných hodnot...
alfred2012-06-12 06:57:04

PepaR
13.06.2012, 23:42


[QUOTE=gadael]neznáte nějakou funkční rutinu, která vloží na zadané místo na zdi symbol dveří (klasický z půdorysů). Několik jsem jich na internetu našel, ale žádnou se mi nepodařilo zprovoznit na mém AutoCADu 2010.[/QUOTE]Jednu takovou rutinu obsahovala stařičká ale stále funkční nadstavba ARmenu.
PepaR2012-06-13 23:47:08