Como automatizar linea ocultas??

Dudas y consultas sobre CAD. AutoCAD, Microstation y resto de aplicaciones CAD

Moderador: Moderadores

Responder
elzuma
En prácticas
Mensajes: 15
Registrado: Vie Nov 07, 2008 8:02 pm
Contactar:

Como automatizar linea ocultas??

Mensaje por elzuma »

HOla a todos, os leo desde hace tiempo y he pensado en participar activa-mente en el foro, y me he propuesto para el 2009 aprender de una puñetera vez AUTOLISP.

Me preguntaba para ir abriendo boca como se puede hacer la siguiente rutina o automatización.

Necesito que marcando dos puntos de una linea cualesquiera, el segmento entre esos dos puntos los separe de la linea y los pase a otra capa por ejemplo una que se llame oculta.

Seria bastante util para dibujar una pieza del tiron sin preocuparse que va oculto y que no y una vez lo tengas dibujado, decir de aqui hasta aqui oculto esto visto...


No necesito que me lo deis resuelto del tiron, sino que me guieis un poco de por donde deben ir los tiros.
Saludos a todos.

Plannerly ™ La plataforma de gestión BIM ™ SmartLeanBIM® © 2021
Plantillas para crear el Plan de Ejecución BIM (BEP). Cumplimiento de la norma ISO-19650
Plan gratuito en el que puedes acceder a todas las plantillas y si al comprarlo introduces el código DELINEACION obtendrás un 10% de descuento
elzuma
En prácticas
Mensajes: 15
Registrado: Vie Nov 07, 2008 8:02 pm
Contactar:

Mensaje por elzuma »

Nadie se anima a darme una pista??
Afga
Jefe
Mensajes: 886
Registrado: Lun Sep 04, 2006 4:10 pm
Contactar:

Mensaje por Afga »

1º creas la capa OCULTA que mencionas con su nombre, color y tipo de línea que necesites.
2º mediante "getpoint" obtienes los extremos de la zona de la línea a ocultar.
3º con el comando _break parte la línea entre los dos puntos anteriormente seleccioandos
4º seleccionas la capa necesaria mediante la variable CLAYER (capa OCULTA).
5º mediante el comando línea dibujas la nueva linea en la capa OCULTA entre los dos puntos indicados en el paso 2º.

Recuerda los enlaces en donde se publicaron que había buenos manuales por internet. Saludos
elzuma
En prácticas
Mensajes: 15
Registrado: Vie Nov 07, 2008 8:02 pm
Contactar:

Mensaje por elzuma »

estoy atascado. no me funciona le comando getpoint.

Sigo investigando.
elzuma
En prácticas
Mensajes: 15
Registrado: Vie Nov 07, 2008 8:02 pm
Contactar:

Mensaje por elzuma »

Me acabo de dar cuenta que son variables y comandos de lisp, ok, voy a ver si me pongo con mi primer LISP.
elzuma
En prácticas
Mensajes: 15
Registrado: Vie Nov 07, 2008 8:02 pm
Contactar:

Mensaje por elzuma »

Voy bien encaminado con la rutina?¿

;;;RUTINA PARA CREAR LINEAS OCULTAS;;;
;;;SE SELECCIONAN DOS PUNTOS DE UNA;;;
;;;LINEA Y EL SEGMENTO ENTRE ESOSO ;;;
;;;DOS PUNTOS VA A PARAR A A UNA ;;;
;;;CAPA QUE SE LLAMA OCULTA;;;
(DEFUN C:LINEAOCULTA ()
--(SETQ P1 (GETPOINT "INTRODUCE EL PUNTO INICIAL: "))
--(SETQ P2 (GETPOINT "INTRODUCE EL PUNTO FINAL: "))
--(COMMAND "_BREAK" P1 P2)
--(COMMAND "CLAYER" OCULTA)
--(COMMAND "_LINE" P1 P2)
)

Como hago para ejecutarla??
Afga
Jefe
Mensajes: 886
Registrado: Lun Sep 04, 2006 4:10 pm
Contactar:

Mensaje por Afga »

Mejor algo tal que así, no?

;;;RUTINA PARA CREAR LINEAS OCULTAS;;; 
;;;SE SELECCIONAN DOS PUNTOS DE UNA;;; 
;;;LINEA Y EL SEGMENTO ENTRE ESOSO ;;; 
;;;DOS PUNTOS VA A PARAR A A UNA ;;; 
;;;CAPA QUE SE LLAMA OCULTA;;;

;; //////////////////////////////////////////////////////////////////////////
;; control de errores                                                        

(defun err_loc (msg
   
     (
if msg 
       (princ (strcat " Error - " msg)) 
     ) 
      (
setq *error* locerr locerr nil
      (
princ
      (
princ "\n\nTeclee \"LOCULTA\" o ENTER para ejecutar el comando"

)
 ;_end defun errcsup

;; ////////////////////////////////////////////////////////////////////////// 

(defun c:LOCULTA (/ locerr capa refenti p1 p2 ent)

  (
vl-load-com)
  (
setq locerr *error* *error* err_loc
  (
vl-cmdf "_undo" "_begin")
  (
setq capa (getvar "clayer"))  ;obtenemos el valor de la capa actual en una variable
  (setq refenti (getvar "osmode")) ;obtenemos el valor de la referncia a objetos actual en una variable

  (while            ;ciclo para poder ejecutar la orden en varias lineas ejecutándola solo una vez
  (setvar "osmode" 547)
  (
setq p1 (getpoint "\nIndique PRIMER punto: "))  ;obtenemos primero punto de corte
  (setq p2 (getpoint "\nIndique SEGUNDO punto: " p1)) ;obtenemos segundo punto de corte
  (setq ent (ssname (ssget "_c" p1 p2 '((0 . "line"))) 0))   ;obtenemos la entidad seleccionada mediante los puntos

  (setvar "osmode" 0)  ;ponemos el valor de la referncia a objetos a cero.
  (vl-cmdf "_break" ent "" p1 p2)

  ;comprobamos si la capa "OCULTA" a crear existe en el dibujo o no.
  (if (= (tblsearch "LAYER" "OCULTA") nil)
      (
vl-cmdf "_-layer" "_make" "OCULTA" "_color" "2" "" "_ltype" "Continuous" "" "")  ;crea y activa la capa oculta
      (setvar "CLAYER" "OCULTA") ;seleccionamos la capa deseada.
  )

  (
vl-cmdf "_line" p1 p2 "")
  )
 ;_end de while o de ciclo

  (setvar "clayer" capa)   ;restauramos la capa
  (setvar "osmode" refenti)  ;restauramos el valor de la referencia a objetos

  (vl-cmdf "_undo" "_end")
  (
princ)
  (
princ "\n\nTeclee \"LOCULTA\" o ENTER para ejecutar el comando")

)
 ;end defun LOCULTA

(princ)
(
alert "\nNueva función recorte de lineas cargada - Pulse \"LOCULTA\" para ejecutarla
    \tDesigned by JSR - noviembre de 2008"
)


Insisto en que te mires los post en donde se enumeron los numerosos manuales que hay por internet. Así empezamos todos.

Para saber como se ejecutan estas ordenes, en este enlace hay un tutorial de como hacerlo.
viewtopic.php?t=1914

Solo una mención a esta rutina. Solo funciona para lineas y no debe haber entidades superpuestas.

Saludos :wink:
elzuma
En prácticas
Mensajes: 15
Registrado: Vie Nov 07, 2008 8:02 pm
Contactar:

Mensaje por elzuma »

Edito: Acabo de probar la rutina y aunque hay partes de ella que no entiendo lo que hacen, ya me las estudiare este fin de semana, no funciona bien, he dibujado para probar un monto de lineas que se cruzan enre si y no funciona correctamente, yo creo que es por el comand o partir, quizas lo que tenga que hacer es recortar y redibujar porque hay veces que cortal a las perperndiculares a la linea.

¿quieres decir que no vale para polilineas, a que te refieres con entidades? ¿a bloques?.

Perdón por la ignorancia.
Afga
Jefe
Mensajes: 886
Registrado: Lun Sep 04, 2006 4:10 pm
Contactar:

Mensaje por Afga »

elzuma escribió:Edito: Acabo de probar la rutina y aunque hay partes de ella que no entiendo lo que hacen, ya me las estudiare este fin de semana, no funciona bien, he dibujado para probar un monto de lineas que se cruzan enre si y no funciona correctamente, yo creo que es por el comand o partir, quizas lo que tenga que hacer es recortar y redibujar porque hay veces que cortal a las perperndiculares a la linea.

¿quieres decir que no vale para polilineas, a que te refieres con entidades? ¿a bloques?.

Perdón por la ignorancia.
La rutina funciona bien, pero como ya dije solo está programada para funcionar con lineas y no se pueden superponer entidades (o lo que tu dices como un monton de líneas que se cruzan). Esto lo dije al final del post en donde expuse la aplicación.

Decir que yo la expuse como base para si quieres adaptarla a tus neesidades y mejorarla. También decirte que si quieres iniciarte en Lisp , creo deberias empezar por algo más básico, e ir poco a poco adquiriendo conocimientos nuevos. No se aprende Lisp en dos días, y menos a saber como entiende el lenguaje de programación AutoCAD y como deben estructurarse las aplicaciones.

Saludos :wink:
elzuma
En prácticas
Mensajes: 15
Registrado: Vie Nov 07, 2008 8:02 pm
Contactar:

Mensaje por elzuma »

Sigo dándole vueltas a esta rutina, me he empapado casi todo el material que me recomendasteis.

Se podría plantear el comando de la siguiente manera?

Se me ha ocurrido que se puede junto con las ordenes de poner primero poner delante... que cuando pongas algo por encima lo de debajo se ponga en discontinua, no se si es posible o ya me estoy pasando.

¿como lo enfocaríais? no quiero que me deis código, sino como se enfocaría.

Gracias.
elzuma
En prácticas
Mensajes: 15
Registrado: Vie Nov 07, 2008 8:02 pm
Contactar:

Mensaje por elzuma »

Agfa te he mandado un correo relativo a este asunto ¿lo has recibido?
elzuma
En prácticas
Mensajes: 15
Registrado: Vie Nov 07, 2008 8:02 pm
Contactar:

Mensaje por elzuma »

Agfa, posteo este mensaje para preguntarte si has recibido mi correo.

Saludos.
Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 36 invitados