AutoCad - Problema con seleccion de lineas

 
Vista:
sin imagen de perfil
Val: 18
Ha aumentado 1 puesto en AutoCad (en relación al último mes)
Gráfica de AutoCad

Problema con seleccion de lineas

Publicado por Sebastian (8 intervenciones) el 20/05/2020 14:05:21
buennos dias.

espero que la esten pasando bien en este tiempo de pandemia/cuarentena.
tengo el siguiente inconveniente, cada vez que selecciono una linea u objeto, me sale ese cartel y me resulta bastante molesto, alguien sabe como sacarlo? probe en la pestaña seleccion y nada, sigue estando ese cuadro.
desde ya, muchas gracias.

Captura
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.362
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Problema con seleccion de lineas

Publicado por Gerardo (783 intervenciones) el 20/05/2020 17:09:00
Hola
Esa herramienta se llama selectioncicling y muestra ese diálogo cuando tienes una línea exactamente sobre otra, (en tu imagen por ejemplo tienes dos líneas azules superpuestas) para que definas cual de las dos o más que hay es la que quieres seleccionar. Si donde seleccionas hay un único trazo no saldrá.

Al desactivarlo se seleccionará por defecto la línea que esté más al frente.

La forma de desactivarlo es dandole el valor de cero a la variable. Entonces solamente escribes "Selectioncicling" das intro, luego "0" intro, y listo, no saldrá más.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 18
Ha aumentado 1 puesto en AutoCad (en relación al último mes)
Gráfica de AutoCad

Problema con seleccion de lineas

Publicado por Sebastian (8 intervenciones) el 20/05/2020 20:29:16
Perfecto, problema solucionado.
Muchas gracias.

Saludos!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 18
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Problema con seleccion de lineas

Publicado por Christian (6 intervenciones) el 02/09/2020 15:53:43
Hola Programadores, tengo un problema que me desespera al usar SSGET con el modo de selección por punto me selecciona una entidad errada, ósea en mi dibujo tengo líneas, algunas muy cercanas a otras y cuando necesito seleccionar una de esas líneas que pasa por un punto predeterminado me selecciona la otra línea cercana a ella con lo que no cumplo mi cometido parece que tengo un error de precisión al usar SSGET, ya que el error desaparece si me acerco con ZOOM a ese sector pero como tengo varias líneas resulta tedioso estas acercándome a cada una cuando sea necesario ya desactive el OSNAP y aun tengo ese problema, agradecería mucho su ayuda.

(SETQ tuberia (SSGET punto))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.362
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Problema con seleccion de lineas

Publicado por Gerardo (783 intervenciones) el 02/09/2020 21:05:38
Hola Christian

La función ssget funciona sobre la interfaz gráfica, tal cual como si el usuario es quien estuviera seleccionando. Por eso se ve afectada por todas las variables como osnap.

En este caso, si dentro de la caja de selección por punto pasan varias líneas u objetos, autocad siempre seleccionará el que esté "más arriba" que posiblemente será el último que se creó.

Una posible solución sería reducir el tamaño de la caja de seleccion al minimo, aunque siempre existe la posibilidad de que casualmente el punto caiga en una casi interseccion de 2 lineas o que el zoom esté tan lejos que igual quedaron 2 lineas dentro de la caja, pero si que reducirías al minimo las posibilidades de que suceda.

Otra sería seleccionar todas las entidades que pasan muy cercanas al punto, y si hay mas de una, filtrar eligiendo la que pase más cercana al punto.

Lo primero es mucho más simple (En este ejemplo pongo el valor de pickbox en cero porque la variable lo permite, pero desconozco su comportamiento, si no va bien, sería probar en 1)
1
2
3
4
(setq respPB (getvar "Pickbox"))
(setvar "Pickbox" 0)
(setq tuberia (ssget punto))
(setvar "Pickbox" respPB)

Lo segundo conlleva generar el conjunto de seleccion con ssget y un pequeño crossing, y luego comprobar si hay mas de un elemento seleccionado, y en dicho caso utilizar algo como el siguiente codigo para comparar cual entidad está más cerca del punto
1
2
3
4
5
6
7
8
(distance
   punto
   (vlax-curve-getClosestPointToProjection
      (vlax-ename->vla-object
         (ssname seleccion indice)
      )
   )
)



P.D.
Otra cosa que te podría ayudar mucho es colocarle un filtro de propiedades al ssget. Por ejemplo si pasan varias líneas pero están en capas diferentes, pues filtra la capa que te conviene.

1
(setq tuberia (ssget punto '((0 . "LINE")(8 . "TUBERIA50")) ) )

Ese ejemplo tomaria solo lineas que pasen por el punto y que estén en capa TUBERIA50. Así si hay polilineas o arcos, o lineas en otras capas, aunque estén dentro de la caja del pickbox serán ignoradas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 18
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Problema con seleccion de lineas

Publicado por Christian (6 intervenciones) el 03/09/2020 01:03:02
Hola Gerardo, muy agradecido por tu respuesta, la primera opción no me resultó ya que la variable "Pickbox" en 0 no llega a seleccionar línea alguna, en 1, continúa seleccionando la línea contigua (la cual no necesito).

La segunda opción me parece muy adecuada para mi caso, pero no logro hacer que funcione el código de comparación que muestras, si pudieras ilustrarme un poco más.
Envió una imagen que explica lo que me sucede. Y el código especificado para ese punto.

(defun c:pik1 ()
(setq punto ( list 599807.5048 8480895.0194 0))
(SETQ seleccion (SSGET punto (LIST (CONS 0 "LINE"))))
(cdr (assoc '8 (entget (ssname seleccion 0))))
)
caso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 18
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Problema con seleccion de lineas

Publicado por Christian (6 intervenciones) el 03/09/2020 01:22:23
Si uso el código de comparación que me envías creo que solucionaría mi problema, pero parece que me falta algo más.

1
2
3
4
5
6
7
8
9
10
11
12
(defun c:pik2 ()
(setq punto ( list 599807.5048 8480895.0194 0))
(setq seleccion (SSGET))
(distance
   punto
   (vlax-curve-getClosestPointToProjection
      (vlax-ename->vla-object
         (ssname seleccion 0)
      )
   )
)
)


Por si sea posible revisarlo, adjunto el archivo Cad con las líneas en el cual intento usar el código para saber el nombre de la capa de manera automatica.
Cabe recalcar que tengo que usar el código teniendo en toda la pantalla el 100% de la red ósea en Zoom Extens.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.362
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Problema con seleccion de lineas

Publicado por Gerardo (783 intervenciones) el 03/09/2020 02:45:00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(defun c:pik2 ( / punto seleccion i entidad ptcerc tuberia)
	(setq punto '(599807.5048 8480895.0194 0.)
			seleccion (SSGET "C" punto punto)
			i 0
	)
	(repeat (sslength seleccion)
		(setq entidad (ssname seleccion i)
				i	(1+ i)
				ptcerc (vlax-curve-getClosestPointTo
							(vlax-ename->vla-object entidad)
							punto
						)
		)
		(if (equal (distance punto ptcerc) 0.0 0.001)
			(setq tuberia entidad)
		)
	)
)

La seleccion la hago con un "C" crossing, ya que el modo ":D" de ssget que selecciona todo lo que haya en la caja no acepta un punto en una variable y solo que el usuario lo indique.
En este ejemplo para el crossing he puesto dos veces el mismo punto y me ha funcionado bien con tu dibujo, pero puede ser que en algun momento por un tema de presicion falle, en ese caso tendrías que trazar el crossing un milimetro menos y uno mas de las coordenadas del punto. Sería algo como así
1
2
3
4
5
(ssget
   "C"
   (apply '- punto '(0.001 0.001))
   (apply '+ punto '(0.001 0.001))
)
Así la ventana de selección se trazaría de 2 x 2 mm

el resto es simple, una vez seleccionado recorremos el conjunto de seleccion entidad por entidad, buscando su punto más cercano al punto de seleccion y si resulta que ese punto está a menos de 1mm del punto de seleccion tomar esa entidad como nuestra linea. Si dos líneas pasaran a menos de un mm del punto, la segunda sobreescribirá la primera y esa será tomada como tubería, pero ahí ya no hablamos de presición del zoom, sino de presicion absoluta, entonces solucionamos tu problema, y si quieres más presiso de 1mm cambia el 0.001 del equal a un valor mas fino
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 18
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Problema con seleccion de lineas

Publicado por Christian (6 intervenciones) el 03/09/2020 13:43:12
Gerardo, funciona de maravilla, te lo agradezco, me solucionaste el problema y me diste nuevas luces para mejorar el código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.362
Oro
Ha mantenido su posición en AutoCad (en relación al último mes)
Gráfica de AutoCad

Problema con seleccion de lineas

Publicado por Gerardo (783 intervenciones) el 03/09/2020 20:28:52
me alegro. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar