Hola
Tengo una coleccion de dibujos con un bloque que tiene uno de sus atributos como un campo.
El campo es una expresion diesel tal como : $(substr,$(getvar,"dwgname"),16,$(-,$(strlen,$(getvar,"dwgname")),19))
Básicamante una seleccion de caracteres del nombre del fichero.
El caso és que necesito modificar esa expresion por otra similar $(substr,$(getvar,"dwgname"),16,$(-,$(strlen,$(getvar,"dwgname")),24)).
Con vba no doy con la manera de acceder al valor de la expresión, solo puedo acceder al resultado de la expresión y por tanto no puedo cambiarla.
La solución evidente es asignar al campo el texo correspondiente a evaluar la expresión, pero entonces pierde la capacidad de actualizarse sin ejecutar ninguna rutina.
Algguien puede darme alguna pista de como acceder a la expresion del campo?
Gracias
@Anonymous para una mayor claridad @joaquim.moral ha editado el título original: Usar vba para cambiar el campo asignado a un atributo
Recuerda consultar cómo escoger el mejor título para tu post. ¡Gracias por participar!
¡Resuelto! Ir a solución.
Hola
Tengo una coleccion de dibujos con un bloque que tiene uno de sus atributos como un campo.
El campo es una expresion diesel tal como : $(substr,$(getvar,"dwgname"),16,$(-,$(strlen,$(getvar,"dwgname")),19))
Básicamante una seleccion de caracteres del nombre del fichero.
El caso és que necesito modificar esa expresion por otra similar $(substr,$(getvar,"dwgname"),16,$(-,$(strlen,$(getvar,"dwgname")),24)).
Con vba no doy con la manera de acceder al valor de la expresión, solo puedo acceder al resultado de la expresión y por tanto no puedo cambiarla.
La solución evidente es asignar al campo el texo correspondiente a evaluar la expresión, pero entonces pierde la capacidad de actualizarse sin ejecutar ninguna rutina.
Algguien puede darme alguna pista de como acceder a la expresion del campo?
Gracias
@Anonymous para una mayor claridad @joaquim.moral ha editado el título original: Usar vba para cambiar el campo asignado a un atributo
Recuerda consultar cómo escoger el mejor título para tu post. ¡Gracias por participar!
¡Resuelto! Ir a solución.
Resuelto por emacrovba. Ir a solución.
Estimado @Anonymous
Hice algunas pruebas y no pude acceder a la edición de la expresión Diesel; pero te puedo sugerir una alternativa que quizás te funcione.
1) Ingresa al editor de bloques
2) Inserta un nuevo atributo con la nueva expresión Diesel
3) Edita el primer atributo (Battman), para que no se visualice (Invisible)->OK.
5) Salir del editor de bloques
Con ello tendrás el mismo bloque con un segundo atributo con la Expresión Diesel editada
Luego solo tendrás que modificar Tu código vba, para que reconozca el segundo atributo en caso lo requieras aplicar.
Saludos.
Carlos Calderon G
>Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
Estimado @Anonymous
Hice algunas pruebas y no pude acceder a la edición de la expresión Diesel; pero te puedo sugerir una alternativa que quizás te funcione.
1) Ingresa al editor de bloques
2) Inserta un nuevo atributo con la nueva expresión Diesel
3) Edita el primer atributo (Battman), para que no se visualice (Invisible)->OK.
5) Salir del editor de bloques
Con ello tendrás el mismo bloque con un segundo atributo con la Expresión Diesel editada
Luego solo tendrás que modificar Tu código vba, para que reconozca el segundo atributo en caso lo requieras aplicar.
Saludos.
Carlos Calderon G
>Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
Gracias carlos por tu sujerecia, pero la solución que me propones no me sirve. Debo modificar ese campo en una colección de alrededor de 300 dibujos, por eso necesito modificar el valor con VBA.
Gracias carlos por tu sujerecia, pero la solución que me propones no me sirve. Debo modificar ese campo en una colección de alrededor de 300 dibujos, por eso necesito modificar el valor con VBA.
Saludos estimado @Anonymous
Entiendo que desees hacer lo que requieres con VBA, pero tengo poca experiencia ahí y no te puedo dar sugerencias al respecto. Pero talvez no requieras usar necesariamente una rutina en VBA, con Archivos de guion (SCRIPT) o Lisp es posible que se pueda hacer muchas cosas y tienes mucho mas información en la Red.
Te comento un flujo de trabajo que talvez te pueda ayudar
1) Para el tema de la edición del bloque, puedes crearte otro bloque con el atributo que necesites y con BLOCKREPLACE reemplazarlo en los bloques existentes de tu dibujo actual. Lo he probado con el atributo que alcanzas y si funciona bien.
2) Para el tema de la automatización en el reemplazo en los 300 dibujos, creo que haciendo un buen SCRIPT, o una rutina Autolisp es posible lograrlo.
3) Como alternativa, para el caso de la automatización por lotes usando SCRIPT, ACAD tiene unas herramientas de personalización, dentro de las cuales se encuentra SCRIPTPRO, que puede ayudar en tu caso. Te comento que tambien LEE MACK, tambien tiene una rutina similar ScriptWriter, http://www.lee-mac.com/scriptwriter.html
Aqui te adjunto el link.
Carlos Calderon G
>Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
Saludos estimado @Anonymous
Entiendo que desees hacer lo que requieres con VBA, pero tengo poca experiencia ahí y no te puedo dar sugerencias al respecto. Pero talvez no requieras usar necesariamente una rutina en VBA, con Archivos de guion (SCRIPT) o Lisp es posible que se pueda hacer muchas cosas y tienes mucho mas información en la Red.
Te comento un flujo de trabajo que talvez te pueda ayudar
1) Para el tema de la edición del bloque, puedes crearte otro bloque con el atributo que necesites y con BLOCKREPLACE reemplazarlo en los bloques existentes de tu dibujo actual. Lo he probado con el atributo que alcanzas y si funciona bien.
2) Para el tema de la automatización en el reemplazo en los 300 dibujos, creo que haciendo un buen SCRIPT, o una rutina Autolisp es posible lograrlo.
3) Como alternativa, para el caso de la automatización por lotes usando SCRIPT, ACAD tiene unas herramientas de personalización, dentro de las cuales se encuentra SCRIPTPRO, que puede ayudar en tu caso. Te comento que tambien LEE MACK, tambien tiene una rutina similar ScriptWriter, http://www.lee-mac.com/scriptwriter.html
Aqui te adjunto el link.
Carlos Calderon G
>Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
En teoria te debe servir la propiedad textstring del attrributo. El codigo quedaria algo similar como esto
Dim label As String
Dim acAttribute As AcadAttributeReference
label = "%<\AcVar Filename \f ""%tc4%fn7"">%"
acAttribute.TextString = "Name file: " & label
Te dejo un tutorial para leer atributos de los bloques
Saludos
En teoria te debe servir la propiedad textstring del attrributo. El codigo quedaria algo similar como esto
Dim label As String
Dim acAttribute As AcadAttributeReference
label = "%<\AcVar Filename \f ""%tc4%fn7"">%"
acAttribute.TextString = "Name file: " & label
Te dejo un tutorial para leer atributos de los bloques
Saludos
Hola @Anonymous ,
¡Gracias por participar en la Comunidad Autodesk!
¿Te han ayudado las respuestas de @emacrovba y @calderg1000 a solucionar tu duda?
Si es así, puedes hacer clic en el botón "Aceptar como solución". De esta manera ayudas a que otras personas usuarias puedan acceder y encontrar más fácilmente la información.
De lo contrario, coméntanos en este mismo hilo para que la comunidad pueda seguir ayudándote.
Gracias y esperamos tu respuesta,
¿Te ha parecido útil este post? ¡Deja un like!
¿Tu pregunta ha sido solucionada? Selecciona 'Marcar como solución' y ayuda a las demás a encontrar fácilmente la información.
You found a post helpful? Then feel free to give likes to these posts!
Your question got successfully answered? Then just click on the 'Mark as solution'
Joaquim Moral
Community Manager
Spanish Community
Hola @Anonymous ,
¡Gracias por participar en la Comunidad Autodesk!
¿Te han ayudado las respuestas de @emacrovba y @calderg1000 a solucionar tu duda?
Si es así, puedes hacer clic en el botón "Aceptar como solución". De esta manera ayudas a que otras personas usuarias puedan acceder y encontrar más fácilmente la información.
De lo contrario, coméntanos en este mismo hilo para que la comunidad pueda seguir ayudándote.
Gracias y esperamos tu respuesta,
¿Te ha parecido útil este post? ¡Deja un like!
¿Tu pregunta ha sido solucionada? Selecciona 'Marcar como solución' y ayuda a las demás a encontrar fácilmente la información.
You found a post helpful? Then feel free to give likes to these posts!
Your question got successfully answered? Then just click on the 'Mark as solution'
Joaquim Moral
Community Manager
Spanish Community
Hola emacrovba
El valor de la variable label es justo lo que yo andava buscando. A partir de ahí ya me apaño para hacer lo que yo queria.
Muchas gracias por tu ayuda.
Hola emacrovba
El valor de la variable label es justo lo que yo andava buscando. A partir de ahí ya me apaño para hacer lo que yo queria.
Muchas gracias por tu ayuda.
¿No encontraste lo que buscabas? Pregúntale a la comunidad o comparte tus conocimientos.