Se puede en Cad capturar color de objeto en variable

jes2008 - 26/04/2008 04:00
Hola amigos. Me interesa mucho averiguar cómo capturar color de objeto en una variable, pero que esté en blayer, ya que lo busco con entget y no hay ninguna opción para capturarlo, excepto cuando a un objeto se le cambiado manualmente el color (no el layer), entonces me lanza la opción 62, donde me indica el número del color que es justo lo que me interesa saber.

Lo hago así.
[code](setque obj-color (ssget))[/code]

Resultado: .
[code](setque Ent-color (ssname obj-color 0)) [/code]

Resultado: .
[code](setque Ent-color (entget Ent-color))[/code]

Y la lista de la entidad es
[CODE]((-1. ) (0. Text) (330. ) (5. 1e312) (100. Acdbentity) (67. 0) (410. Model) (8. $0$1o8 prop$0$pluma_4) (100. Acdbtext) (10 74.5563 -9.48346 0.0) (40. 2.0) (1. Olga Marta navarro zuñiga,) (50. 0.0) (41. 1.0) (51. 0.261799) (7. $0$1o8 prop$0$romand) (71. 0) (72. 1) (11 98.9372 -9.48346 0.0) (210 0.0 0.0 1.0) (100. Acdbtext) (73. 0)).[/CODE]

Esto me resulta cuando el objeto está en blayer, pero cuando el objeto tiene el color cambiado manualmente, me aparece así.
((-1. ) (0. Text) (330. ) (5. 1e8f7) (100. Acdbentity) (67. 0) (410. Model) (8. Texto_derro) [size=15](62. 7) (100. Acdbtext) (10 178.636 194.731 0.0) (40. 2.0) (1. 17.87m) (50. 0.0) (41. 1.0) (51. 0.261799) (7. Simplex) (71. 0) (72. 2) (11 189.874 195.731 0.0) (210 0.0 0.0 1.0) (100. Acdbtext) (73. 2)).

Donde me aparece una opción 62, que es la que quiero, así que, si alguien me pudiera decir cuál es la forma de obtener el número del color en que está un objeto. Empiezo a sospechar que no es por entget.

El punto es, que quiero hacer una rutina donde evalúe todos los objetos existentes en el archivo, que de la opción de elegir un color y que me permita seleccionar solo objetos que están con ese color (no me refiero a capa), parecido a como lo hice una vez por nombre de capa.
[code](setque obj-capa (ssget (list (cons 8 pluma_4))))[/code]

Muchas gracias.
3dpoder - 05/04/2023 13:51
Para capturar el color de un objeto en un layer específico, puedes utilizar la función "entmod" en combinación con la función "vlax-ename->vla-object". Primero, debes obtener la entidad del objeto que deseas examinar utilizando la función "vlax-ename->vla-object". A continuación, puedes utilizar la función "entmod" para obtener el color de la entidad. Aquí te dejo un ejemplo de código para que puedas entender mejor cómo hacerlo:

[CODE]; Obtener la entidad del objeto
(setq obj (vlax-ename->vla-object (car (entsel))))

; Obtener la información de la entidad
(setq ent (entget (vlax-vla-object obj)))

; Obtener el color del objeto en el layer especificado
(setq color (cdr (assoc 62 (entget (car (entsel))))))

(princ color)
[/CODE]

Ten en cuenta que deberás seleccionar el objeto en la pantalla antes de ejecutar el código, ya que el código utiliza la función "entsel" para seleccionar la entidad. Además, tendrás que reemplazar el "(car (entsel))" con el nombre de la entidad que deseas examinar si no deseas seleccionarla manualmente.

Espero que esto te sea de ayuda.