Atascado con rutina

Un buen lugar donde debatir temas relacionados con este Soft.


Tema anteriorTema siguiente
Avatar de Usuario

Autor del Tema
TONOWAR
Usuari@
Usuari@
Mensajes: 2
Registrado: Lun Oct 17, 2016 9:00 pm
Temas: 1
Programa CAD o CAM: AUTOCAD
Agradecido : 2 veces
Género:
Estado: Desconectado

Atascado con rutina

Mensaje por TONOWAR »

Buenos días.

Estoy creando una pequeña rutina pero ando un poco atascado, ya que soy muy novato.

Alguien puede ayudar a como hacer que numere consecutivamente?

Muchas gracias de antemano.

Código: Seleccionar todo

 (defun c:crealinea (/ p1 p3 pf ID)

 (WHILE
   (setq p1 (getpoint "\nIndica Inicio de la Linea: "))

   (setq pf (getpoint p1 "\nIndica Fin de la Linea: "))
  (setq p3 (polar pf (angle pf p1) 10)) 
(setq ID "1")
   (entmake (list '(0 . "LINE");;;
		 '(6 . "BYLAYER");;;TIPO LINEA (TIENE QUE ESTAR CARGADA EN EL DIBUJO)
		 '(8 . "nueva");;;NOMBRE CAPA
		 (cons 10 p1)
		 (cons 11 p3)
		 (cons 39 0.0)
		 (cons 62 256);;;COLOR
		 (cons 210 (list 0.0 0.0 1.0))
	   ))
  

;;;(defun creacirculo(/ c1) ;;;(setq c1 (getpoint "\nIndica el Centro del Circulo: "))
(entmake (list '(0 . "CIRCLE") ;*** '(6 . "BYLAYER") '(8 . "0") (cons 10 pf) ;*** (cons 39 0.0) (cons 40 10.0) ;*** (cons 62 256) (cons 210 (list 0.0 0.0 1.0)))) (entmake (list '(0 . "TEXT") ;*** (cons 1 ID) ;*** (cons 6 "BYLAYER") (cons 7 "STANDARD") ;*** (cons 8 "0") (cons 10 pf) ;*** (cons 11 pf) ;*** (cons 39 0.0) (cons 40 8.0) ;*** (cons 41 1.0) (cons 50 0.0) (cons 51 0.0) (cons 62 256) (cons 71 0) (cons 72 4) (cons 73 0) (cons 210 (list 0.0 0.0 1.0))))
)
(princ) )
Última edición por Mondeo14 el Mié Ene 04, 2017 6:38 pm, editado 1 vez en total.
Avatar de Usuario

Mondeo14
Webmaster
Webmaster
Mensajes: 10975
Registrado: Mar Nov 03, 2009 8:48 pm
Temas: 648
Programa CAD o CAM: SOLID WORKS
Ubicación: NAVARRA
Agradecido : 3516 veces
Agradecimiento recibido: 2493 veces
Género:
Zodíaco:
Edad: 63
Estado: Desconectado

Re: Atascado con rutina

Mensaje por Mondeo14 »

Con mi poca experiencia y tras muchos años sin tocar Autolisp, te falta un bucle For - Next para la variable ID. Tu rutina se ejecuta una vez y pone un número; para poner otro has de volverla a ejecutar, sin embargo si pones el bucle For - Next. cuando termines de poner el primer número, le pones una condición, de que si le das a una tecla determinada, vuelvas al For - Next, incrementando previamente en 1 la variable ID. Si le das a otra, pues terminas la rutina. Un ejemplo podría ser que te pregunte si quieres continuar, si le dices si, vuelves al inicio del Bucle y si le dices no, sales de la rutina.
¿Como se hace esto?, pues sencillo, pero debería de empaparme de nuevo Autolisp y tu rutina, la verdad, ahora no tengo mucho tiempo.

Inténtalo a ver que te sale, busca ayuda en Google, que seguro tendrás ejemplos de usar el bucle que te comento.

Un saludo

Nos leemos, Mondi


Procesador: CPU Intel i7 4820kDisco Duro: SSD 500 GB y 2 TBMemoria RAM: 24 GB-DDR3 667 MHzTarjeta Gráfica: NVIDIA Quadro K2000 2 GB GDDR5


Avatar de Usuario

Fgs
Oficial 1º
Oficial 1º
Mensajes: 2079
Registrado: Lun Nov 23, 2009 9:20 pm
Temas: 537
Programa CAD o CAM: AUTOCAD
Agradecimiento recibido: 205 veces
Género:
Estado: Desconectado

Re: Atascado con rutina

Mensaje por Fgs »

Tengo hecha una rutina que pone un texto como numero y se va aumentando cada vez que se clica en pantalla. La busco y la pongo en foro, si la encuentro.

La historia la escribes con tus actos.

Avatar de Usuario

Fgs
Oficial 1º
Oficial 1º
Mensajes: 2079
Registrado: Lun Nov 23, 2009 9:20 pm
Temas: 537
Programa CAD o CAM: AUTOCAD
Agradecimiento recibido: 205 veces
Género:
Estado: Desconectado

Re: Atascado con rutina

Mensaje por Fgs »

Esta es mi rutina. Estudíala porque funciona bien, al menos, en la R2014 (si no recuerdo mal la realese)

Código: Seleccionar todo

(defun c-n (/ mens) 
(if texto-i0 
() 
(setq texto-i0 1) 
) 
(setq mens (strcat "\nIndique número de inicio <" 
(itoa texto-i0) 
">: " 
) 
) 

(if (setq texto-i (getint mens)) 
() 
(setq texto-i texto-i0) 
) 
(terpri) 
(setq texto-i0 texto-i) 
(setq altura-txt (getREAL "\n Altura de texto:")) 
(while (setq p-ins (getpoint "\nIndique punto: ")) 

(setq radio-cir (* altura-txt 1.25)) 
(command "_circle" p-ins radio-cir) 
(command "_text" "_j" "_m" p-ins altura-txt 0 texto-i) 
(setq texto-i (1+ texto-i)) 
) 
) 

(defun c:nmas (/ *osmode* texto-i0 texto-i p-ins altura-txt radio-cir) 
(setvar "cmdecho" 0) 
(setq *osmode* (getvar "osmode")) 
(setvar "osmode" 0) 
(command "_undo" "_begin") 
(c-n) 
(command "_undo" "_end") 
(setvar "osmode" *osmode*) 
(setvar "cmdecho" 1) 
(prin1) 
) 

(prompt "\nNuevo comando NMAS definido...") 
(prin1)
Última edición por Mondeo14 el Mié Ene 04, 2017 11:07 pm, editado 1 vez en total.

La historia la escribes con tus actos.

Tema anteriorTema siguiente