Zobrazit plnou verzi příspěvku: @ v lispu?

Ferdinand
08.02.2005, 15:19
Vkládám tentýž blok MKS (=kab. lávka o výšce 60 a o min. šíři 100). Chci ho v X-ové ose Stretchnout o délku SP, který je odstupňován po 100. Jak se nadefinuje @ (zavináč), aby ho nebral jako proměnnou ale symbol (konstantu?)
Zkoušel jsem, aby @->ZAV:
 (SETQ ZAV (GETSTRING ( "@")))
ale bere @ furt jako proměnnou.
Mohu ho nadefinovat snad přímo na řádku
(DEFUN C:MKS (/ MM ZB SP B2 LL AA @) ? Ale co dál?
Celé znění LISPu:
;;;Vložení kabelové lávky typu MKS (výška=60)(DEFUN C:MKS (/ MM ZB SP B2 LL AA ZAV)
  (SETVAR "cmdecho" 0)  (SETVAR "attdia" 1)  (SETVAR "osmode" 0)
  (SETQ MM (GETINT "\nŠířka lávky bude[100-200-300-400-500-600]<100>:"))
 (PROMPT "\nZadejte bod :")  (COMMAND "_insert" "MKS" pause ^c^c)  (SETQ ZB (GETVAR "lastpoint"))
  (SETQ SP (- MM 100))  (SETQ B2 (LIST (+ (CAR ZB) 50) (+ (CADR ZB) 60)))  (SETQ ZAV (GETSTRING ( "@")))  (SETQ AA (GETstring ( ZAV SP)))  (SETQ LL (LIST ( AA 0)))
  (COMMAND "_-insert" "MKS" PAUSE 1 1 0)  (COMMAND "_explode" _L "")  (COMMAND "_stretch" _C ZB B2 "" ZB LL)
  (setvar "cmdecho" 1)  (SETVAR "osmode" 39)
  (PRINC))
 

Seiner
08.02.2005, 20:34
Přiznám se, že studovat kód jsem nějak neměl čas. Nechápu ale, co vlastně chcete dosáhnout příkazem
(SETQ ZAV (GETSTRING ( "@")))
Setq - to je přiřazení, jasně. Getstring je pauza pro vstup stringu z klávesnice a první volitelný parametr určuje, jestli se ukončuje Enter nebo i mezerník a druhý volitelný je výzva na příkazovém řádku. ( "@") podle mne musí vyvolat jen chybu - neznámá funkce.
 

Mrázek
09.02.2005, 08:19
To je zřejmý pokus o zadání relativních souřadnic.

Jan Liska
09.02.2005, 08:31
Dobrý den,
pokud potřebujete získat souřadnice posledního zadaného bodu, můžete použít funkci getvar "LASTPOINT". S takto získanými souřadnicemi můžete samozřejmě dále pracovat - je to seznam jako každý jiný.
S pozdravem

Ferdinand
15.03.2005, 11:41
OPAKUJI SVŮJ DOTAZ:  Jak se nadefinuje v lispu @ (zavináč), aby ho nebral jako proměnnou ale symbol (konstantu?)
Ví to někdo, prosím?
 

Vladimír Michl
15.03.2005, 11:51
Jdete na to ze špatného konce - jak vám již radili, chcete-li relativní souřadnice, je třeba je spočíst ze zadaného bodu, chcete-li poslední bod, dotažte se na LASTPOINT.Nic takového jako konstanta "@" neexistuje.