Zobrazit plnou verzi příspěvku: Visual LISP 2005

skopal
03.01.2005, 09:38
Dobrý den
Mám ve Visual Lispu udělaný proram na kreslení příruby.
V AC2000 až AC2004 mě to fungovalo bez problémů ale v AC2005 to nefunguje
nevíte co se tu změnilo.
Posílám sintaxi programu:
(defun c:priruba ();#nulovani vstupnich hodnot(setq Cx "" Cy "" Cz "") ;#(setq id (load_dialog "priruba.dcl"))
(setq  what_next 5) ;#
    (while (< 2 what_next)        &n bsp;    ;# smyčka pro kontrolu v jaké fázi se dialog nachází (if (not (new_dialog "priruba" id))  (exit))
  (set_tile "Cx" Cx)  (set_tile "Cy" Cy)  (set_tile "Cz" Cz)
;#  nastaveni obr
(setq x (dimx_tile "obr")) ;rozměr obrazku v dialogu (setq y (dimy_tile "obr")) ;rozměr obrazku v dialogu (start_image "obr")(fill_image 0 0 x y -2)   ; vyplnění obr -2 pozadí obrazovky    ;   -15 pozadí dialog panelu    ; -16 barva popředí dialog panelu (text)    ;-18 barva obrysu dialog panelu
(slide_image 0 0 (- x 1) (- y 1) "priruba-I" ) ; (slide_image x1 y1 sirka vyska jmeno snimku      ; snimek (end_image)   (action_tile "Cx"          "(setq Cx $value)")   (action_tile "Cy"          "(setq Cy $value)")     (action_tile "Cz"          "(setq Cz $value)")  
  (action_tile "VnejPr"         "(setq P1 $value)") ;vnější průměr    (action_tile "VnitrPr"         "(setq P2 $value)") ;vnitřní průměr    (action_tile "RPr"         "(setq P3 $value)") ;roztečá kružnice    (action_tile "PrDi"         "(setq P4 $value)") ;průměr díry    (action_tile "PcD"         "(setq Pd $value)") ;počet děr
  (action_tile "stred" "(done_dialog 4)");tlačítko střed      (action_tile "accept" "(done_dialog 1)")                ;;; je-li zmáčknuto tlačítko "OK" zavolej                ;;; funkci done_dialog s hodnotou 1  (action_tile "cancel" "(done_dialog 0)")                ;;; je-li zmáčknuto tlačítko "CANCEL" zavolej                ;;; funkci done_dialog s hodnotou 0 
(setq what_next (start_dialog)) ;# start dialogu   (if (= what_next 4)(progn             (initget 1)             (setq bod_pt (getpoint "Zadej bod vložení: "))     (setq Cx (rtos (car bod_pt)))    ; car-x souradnice rtos je převedeni na řetězec    (setq Cy (rtos (cadr bod_pt)))    (setq Cz (rtos (caddr bod_pt)))    ; POKUD JSEM ODTUD CHTEL NASTAVIT ROVNOU DIALOG    ; TAK TO NESLO - ASI SPATNY MOD DIALOGU         ) )  (if (= what_next 2) (progn    (done_dialog)   (unload_dialog dcl_id)       ) )  );;konec nacteni stredu;načtení středu    (setq C (list (atof Cx) (atof Cy) (atof Cz)))  (setq VnejsiPr (atof P1))  (setq VnitrniPr (atof P2))  (setq RoztecPr (atof P3))  (setq PrDiry (atof P4))  (setq PcDer (atoi Pd))  (setq PcD (atof Pd)) 
 
   (unload_dialog  id) ;;; odstraní dialog id z paměti
 
 
                  ;;; funkce pro nastavení hodnot souřadnic středu         ;;; do globální proměnné C2 hodnoty(setq C2 (list (car C) (+ (cadr C) (/ RoztecPr 2.0)) (caddr c)))   ;body usečky osy odkud kam
  (setq U1 (list (car C) (+ (+ (cadr C) (/ RoztecPr 2.0)) (* PrDiry 0.7)) (caddr c)))(setq U2 (list (car C) (- (+ (cadr C) (/ RoztecPr 2.0)) (* PrDiry 0.7)) (caddr c)))  ;body pro výběr okna pro rotaci díry
  (setq W1 (list (- (car C) (* PrDiry 0.8)) (- (+ (cadr C) (/ RoztecPr 2.0)) (* PrDiry 0.8)) (caddr c)))  (setq W2 (list (+ (car C) (* PrDiry 0.8)) (+ (+ (cadr C) (/ RoztecPr 2.0)) (* PrDiry 0.8)) (caddr c)));;body pro centralni osy
  (setq W3 (list (- (car C) (* VnejsiPr 0.6)) (cadr C) (caddr c)))  (setq W4 (list (+ (car C) (* VnejsiPr 0.6)) (cadr C) (caddr c)))  (setq W5 (list (car C) (- (cadr C) (* VnejsiPr 0.6)) (caddr c)))  (setq W6 (list (car C) (+ (cadr C) (* VnejsiPr 0.6)) (caddr c)));;body pro centralni osy 
  (setq W10 (list (- (car C) (* VnejsiPr 0.7)) (- (cadr C) (* VnejsiPr 0.7)) (caddr c)))  (setq W11 (list (+ (car C) (* VnejsiPr 0.7)) (+ (cadr C) (* VnejsiPr 0.7)) (caddr c)))   (setq AH(getvar "clayer"))                 ; do promene AH si ulozi aktualni hladinu
;;vypnuti OSNAPu nastaveni bitu 16384(setvar  "OSMODE"  (logior    (getvar "OSMODE")    16384  ) ;logior) ;setvar
 
 
 
    ;;nepoužívat; na začátku si zapamatovat původní nastavení;;(setq old_osmode (getvar "OSMODE")); nastavit pož. hodnotu;;(setvar "OSMODE" 0)
    ;;kreslení  (command "_clayer" "silna" "")  (command "_circle" C (/ VnejsiPr 2.0))  (command "_circle" C (/ VnitrniPr 2.0))  (command "_circle" C2 (/ PrDiry 2.0))
  (command "_clayer" "osy" "")  (command "_circle" C (/ RoztecPr 2.0))  (command "_line" U1 U2 "")  (command "_array" "o" W1 W2 "" "k" C PcDer 360 "_y" )  (command "_rotate" "_w" W10 W11 "" C (/ 180 PcD))  (command "_line" W3 W4 "")  (command "_line" W5 W6 "")
;;zapnuti OSNAPu vypnutim bitu 16384(setvar  "OSMODE"  (logand    (getvar "OSMODE")    (~ 16384)  ) ;logior) ;setvar  (setvar "clayer" AH)                         ;; nastavi zpet puvodni hladinu 
 )

Vladimír Michl
03.01.2005, 11:10
nemyslím, že by tam byly nějaké změny - je opravdu dostupný ten DCL soubor?

skopal
05.01.2005, 10:09
Jo ten mi funguje
Omlouvám se opožděnou reakci ale mám to tu nějak divně nastaveno.
dialog se zobrazí lze ho doplnit bez problémů akorát  při zadání 2 děr  to nakreslí 180 děr které jsou 2x na sobě