PDA

View Full Version : LISP: problema come move despues de insert



dgomez.189897
2008-08-21, 12:23 AM
Hey,

Tengo este pedazo de codigo en mi rutina y lo que hace es insertar bloques y luego los mueve. Por alguna razon no los mueve el "displacement" que esta en el codigo sino otra cantidad.
La cosa es que pareciera que a veces los mueve esa cantidad, a veces los mueve la cantidad que esta en el codigo... y no se por que pasa.

Si alguno puede mirar el codigo y decirme si ven algo mal o si saben por que puede estar pasando esto, lo agradeceria infinitamente.

aqui va el pedazo de codigo

(command "_insert" pipe_dir_top_last pti "1" "1" "0")
(if (/= top_last_verif+1 nil) (command "move" "l" "" "d" "0,0,250"))
(if (/= top_last_verif+2 nil) (command "move" "l" "" "d" "0,0,500"))
(if (/= top_last_verif-1 nil) (command "move" "l" "" "d" "0,0,-250"))
(if (/= top_last_verif-2 nil) (command "move" "l" "" "d" "0,0,-500"))
(command "_insert" pipe_dir_top pti "1" "1" "0")
(if (/= top_verif+1 nil) (command "move" "l" "" "d" "0,0,250"))
(if (/= top_verif+2 nil) (command "move" "l" "" "d" "0,0,500"))
(if (/= top_verif-1 nil) (command "move" "l" "" "d" "0,0,-250"))
(if (/= top_verif-2 nil) (command "move" "l" "" "d" "0,0,-500"))

gracias!
dario

intergrupocr
2008-08-21, 08:48 PM
Me parece que para dar un mejor consejo nececitamos mas información, por ejemplo donde defines algunas variables, tienes que revisar cual de los "if's" se esta cumpliendo, el consejo que si te puedo dar es que utilices cond en vez de tantos if, seria algo como así:


(cond
((top_lasr_verif+1) (setq d "0,0,250"))
((top_last_verif+2) (setq d "0,0,500"))
.
.
.
)

Pero para poder ayudarte mejor si sería bueno ver más del código...

Saludos!!

dgomez.189897
2008-08-27, 02:41 PM
Gracias, al final lo pude resolver. y tenia que ver con osnap.

al momento que se inserta se tiene que cancelar el osnap con un "_non"

d

intergrupocr
2008-08-28, 04:52 PM
Gracias, al final lo pude resolver. y tenia que ver con osnap.

al momento que se inserta se tiene que cancelar el osnap con un "_non"

d

Que bueno que lo resolviste, a propósito del osnap, hay un truco muy util, es como sigue:


;;inicio del programa
(setvar "osmode" (+ (getvar "osmode") 16384)) ;;apaga el osnap
;
;
;
;al final pones la siguiente linea..
(setvar "osmode" (- (getvar "osmode") 16384)) ;;enciende el osnap con los valores originales

Si quiere saber más al respecto podemos seguir hablando de algunas técnicas de programación.
Saludos!!