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

Linetype Generation

2 participantes

Ir abajo

Linetype Generation Empty Linetype Generation

Mensaje por eliasp Vie Feb 10, 2023 6:35 pm

Buen día foro.

Con una pregunta, que me hizo "perder mucho, mucho" tiempo.

Resulta ser que estoy escribiendo una rutina... para un fin en particular, necesitaba seleccionar polilíneas cerradas para obtener su área y luego sumatoria. Pues bien, escribí esto:
Código:

  (setq conj1(ssget "_X" (list
   (cons 0 "*line")
   (cons 8 "Rampa_peatonal")
   (cons 70 1)
   )))
A primera vista está bien, pero no se leccionaba nada. Cuando comentaba el "(cons 8... si seleccionaba polilíneas cerradas, pero no las que quería.

Luego de mucho batallar, me di cuenta que la diferencia entre las poilis que seleccionaba y las que yo quería es que en la opción "Linetype Generation" era que unas decían "Disabled" (deshabilitada, o eso creo) y las que no seleccionaba estaba Habilitada, les cambié el estado y funciona. Entonces la pregunta es: Que hace esta opción, para que sirve y tal vez saber como se habilitó.

Saludos y gracias.

eliasp

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

Volver arriba Ir abajo

Linetype Generation Empty Re: Linetype Generation

Mensaje por Gerardo Calvo Vie Mar 17, 2023 5:09 am

Hola Elías

La "generación de tipo de línea" es una variable o banderita de cada polilínea que controla como se muestran los tipos de línea discontínuos en los vértices. Cuando esta opción está desactivada los trazos se calculan individualmente entre cada par de vértices y cuando se activa se calculan continuamente a lo largo de toda la polilínea sin importar si en un vértice te queda el hueco de la discontinuidad.
Lo más fácil para entenderlo: crea una polilínea común, aplícale un tipo de línea por ejemplo "hidden", activa y desactiva la generación de tipo de línea para esa poly (en la paleta de propiedades es la última opción en el apartado "Misc") y mira como se comporta en los vértices. También se puede cambiar con el comando "pedit", pero es más fácil en la paleta de propiedades.

Ahora bien, como adaptar el código para que funcione ignorando esa característica:
El código 70 de las polilíneas solo tiene 2 banderas, 1=cerrado y 128=ltype generation, entonces el valor para las cerradas es 1 o 129.

Aunque podrías anidar 1 y 129 en un "or", lo más correcto es ponerlo con un filtro de bits como este:

Código:
(ssget "X" '((0 . "LWPOLYLINE") (8 . "Rampa_peatonal") (-4 . "&") (70 . 1)))

Ese "&" actuará como la función logand entre el 1 y el valor que tenga la polilínea, devolviendo verdadero en cualquier caso que el bit 1 esté activo, y te salvará de eventualidades como que algún programa active otras banderas de ese código 70 o que a futuro autodesk decida meter otros valores ahí. O incluso si llegas a tener splines, ya que las splines tienen un set de valores distintos para el código 70, y también su valor 1 es cerrado.


Última edición por Gerardo Calvo el Vie Mar 17, 2023 8:18 pm, editado 1 vez

Gerardo Calvo

Mensajes : 46
Fecha de inscripción : 29/10/2019

A robierzo le gusta esta publicaciòn

Volver arriba Ir abajo

Linetype Generation Empty Re: Linetype Generation

Mensaje por eliasp Vie Mar 17, 2023 3:12 pm

Muchas gracias maestro Gerardo.

Como siempre, tus respuestas muy claras

Saludos

eliasp

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

A Gerardo Calvo le gusta esta publicaciòn

Volver arriba Ir abajo

Linetype Generation Empty Re: Linetype Generation

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


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