Comunidad
AutoCAD - Todos los productos - Español
Bienvenido/a al foro de los productos de la familia AutoCAD de Autodesk! Comparte tu conocimiento, haz preguntas y explora los temas populares de AutoCAD.
cancelar
Mostrando los resultados de 
Mostrar  solo  | Buscar en lugar de 
Quiere decir: 

Usar VBA para cambiar el campo asignado a un atributo en AutoCAD

6 RESPUESTAS 6
RESUELTAS
Responder
Mensaje 1 de 7
Anonymous
1138 Vistas, 6 Respuestas

Usar VBA para cambiar el campo asignado a un atributo en AutoCAD

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!

Etiquetas (2)
Etiquetas (1)
  • VBA
6 RESPUESTAS 6
Mensaje 2 de 7
calderg1000
en respuesta a: Anonymous

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.

 

 

calderg1000_0-1617290627386.png

 

 

 


Carlos Calderon G
EESignature
>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.

Mensaje 3 de 7
Anonymous
en respuesta a: Anonymous

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.

Mensaje 4 de 7
calderg1000
en respuesta a: Anonymous

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.

https://knowledge.autodesk.com/support/autocad/downloads/caas/downloads/content/autodesk-customization-conversion-tools.html?_ga=2.248040327.1265988298.1615376891-540713192.1560517541


Carlos Calderon G
EESignature
>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.

Mensaje 5 de 7
emacrovba
en respuesta a: Anonymous

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

Mensaje 6 de 7
joaquim.moral
en respuesta a: Anonymous

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

Mensaje 7 de 7
Anonymous
en respuesta a: emacrovba

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.

Publicar en los foros  

Autodesk Design & Make Report

New events in the Spanish Community