acad hispano
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Crear bloque cada vez que se inicia la rutina

2 participantes

Ir abajo

Crear bloque cada vez que se inicia la rutina Empty Crear bloque cada vez que se inicia la rutina

Mensaje por eliasp Miér Dic 08, 2021 6:35 pm

Buen día estimados.

Lamentablemente, el disco duro de mi máquina terminó de manera inesperada, obviamente nunca lo esperé y perdí gran cantidad de cosas, incluídas las rutinas que tenía, en fin.
Mi problema consiste en esto:
Deseo poder crear un bloque, que será una polilínea de 0.6 de ancho y longitud variable, con punto de inserción al centro, entonces creé este fragmento de código, pero a parte de mandar error, se me "cuelga" el Acad. Podrían orientarme cual es el error?

Saludos y gracias
Código:

(if(null(tblobjname "BLOCK" marca))
    (progn
      (setq long 2.4)
      (setvar "clayer" "M-9")
      (setvar "plinewid" 0.6)
      (setq pto1(list 0 0)
    pto2(polar pto1(* pi 0.5)long)
    pto3(polar pto1(* pi 0.5)(/ long 2))
    )
      (command "_pline" pto1 pto2 "")
      (setq xb (entlast))
      (command "_block" marca pto3 xb "")
      (setvar "plinewid" 0)
      (setvar "clayer" "0")
      )
    )
La intención es, obviamente, luego insertarlo en diferentes puntos perpendicularmente a un eje. La siguiente pregunta sería, es necesario crear el bloque como un archivo dwg o sólo insertarlo, hasta ahí no he llegado. O como lo inserto en distintos puntos, tengo una lista con los puntos de destino.

Saludos y gracias......

eliasp

Mensajes : 195
Fecha de inscripción : 17/03/2016

Volver arriba Ir abajo

Crear bloque cada vez que se inicia la rutina Empty Re: Crear bloque cada vez que se inicia la rutina

Mensaje por Dominguez Mar Dic 21, 2021 11:58 am

Amigo Elias:
Solo tienes que poner el nombre del bloque entre comillas,
Código:
(if (null (tblobjname "BLOCK" "marca"))
  (progn (setq long 2.4)
         (setvar "clayer" "M-9")
         (setvar "plinewid" 0.6)
         (setq pto1 (list 0 0))
         (setq pto2 (polar pto1 (* pi 0.5) long))
         (setq pto3 (polar pto1 (* pi 0.5) (/ long 2)))
         (command "_pline" pto1 pto2 "")
         (setq xb (entlast))
         (command "_block" "marca" pto3 xb "")
         (setvar "plinewid" 0)
         (setvar "clayer" "0")
  )
)
Asi de sencillo
Pero se puede hacer creando el bloque de una forma mas tecnica.
Por ejemplo asi:
Código:
(if (not (tblobjname "block" "marca"))
  (progn (setq pt0 '(0.0 0.0 0.0))
        (setq pt1 (polar pt0 (* pi 1.5) 1.2))
        (setq pt2 (polar pt0 (* pi 0.5) 1.2))
        (foreach p (list (list '(0 . "block") '(2 . "marca") '(70 . 0) (cons 10 pt0))
                          (list '(0 . "polyline") '(8 . "M-9") '(70 . 0) '(40 . 0.6) '(41 . 0.6))
                          (list '(0 . "vertex") (cons 10 pt1))
                          (list '(0 . "vertex") (cons 10 pt2))
                          (list '(0 . "seqend"))
                          (list '(0 . "endblk"))
                    )
          (entmake p)
        )
  )
)
Un saludo
Dominguez
Dominguez

Mensajes : 151
Fecha de inscripción : 20/03/2016
Edad : 74
Localización : Zaragoza (España)

Volver arriba Ir abajo

Crear bloque cada vez que se inicia la rutina Empty Re: Crear bloque cada vez que se inicia la rutina

Mensaje por eliasp Miér Dic 22, 2021 5:30 pm

Muchas gracias maestro.... "craso error"

eliasp

Mensajes : 195
Fecha de inscripción : 17/03/2016

Volver arriba Ir abajo

Crear bloque cada vez que se inicia la rutina Empty Re: Crear bloque cada vez que se inicia la rutina

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.