Únase al foro de diseñadores!
Su experiencia es vital para la comunidad. Únase a nosotros y aporte sus conocimientos.
Únase ahora al ForoComparta, aprenda y crezca con los mejores profesionales del sector.
¡Bienvenido de nuevo! Esta es la segunda parte de esta serie de entradas de blog, y en ella explicaré cómo trabajar con el contenido de la base de datos de 3DEXPERIENCE (3DX).
En primer lugar, a Dassault no le gusta utilizar la palabra «archivo» cuando hablamos de 3DX. Como muy bien sabrá, todo el contenido 3DX se almacena en la BD, y todos y cada uno de los elementos de esa BD se denominan ahora «Entidad PLM». (Eso sí, al final hay un archivo para cada elemento de la BD, almacenado en algún lugar de un servidor). Aun así, a partir de ahora, utilizaremos las palabras «entidad PLM» u «objeto PLM» para cada elemento de esa BD.
Esta es probablemente una de las mayores diferencias entre V5 y 3DX.
Basado en documentos vs. Basado en BD
V5 está basado en documentos. Cuando ve un modelo en su pantalla en V5, está representado por dos cosas: el objeto Documento y el objeto Ventana. Cuando abre o guarda un modelo en V5, CATIA realmente lee o guarda un archivo.
Figura 1
Lo que ve en la pantalla de 3DX también está representado por dos cosas, pero ahora son el objeto Editor y el objeto Ventana. El objeto Ventana realiza la misma función que en V5, que es mostrar el modelo en la pantalla. La función del objeto Editor, sin embargo, es la de «controlador» del contenido del modelo. Es decir, contiene la aplicación actual y mantiene la lista de todos los comandos que pueden lanzarse desde la aplicación.
El Editor tiene una propiedad ActiveObject, que es el objeto que se ve en la pantalla. Para hacerse con el objeto activo, podría utilizar los siguientes comandos en VBA, y a partir de ahí trabajar con él.
01: Dim oActiveObj As AnyObject
02: Set oActiveObj = CATIA.ActiveEditor.ActiveObject
El objeto de contenido corresponde a una Entidad PLM en la BD, que está representada por una tarjeta de metadatos y un archivo de almacenamiento. Lo que crea una «capa extra» entre la sesión 3DX y los archivos en la BD. Para obtener el archivo, el sistema lee primero los metadatos, que indican dónde se encuentra exactamente el archivo.
Figura 2
En 3DX no puede simplemente «abrir» o «guardar» el modelo. Tiene que pedir a un «servicio» de 3DX que lo haga por usted.
Discutiré en detalle los «servicios» de 3DX en la parte 3 de la serie, así que por ahora lo mantendremos simple.
Buscar y abrir desde la BD
Para traer un modelo a la sesión 3DX, primero debe buscarlo (SearchService) y luego abrirlo (PLMOpenService). El código VBA sería algo parecido a esto
‘ Obtener el objeto SearchService y crear la consulta de búsqueda
01: Dim oSearchService Como SearchService
02: Set oSearchService = CATIA.GetSessionService(«Search»)
03: Dim oDBSearch Como DatabaseSearch
04: Set oDBSearch = oSearchService.DatabaseSearch
05: oDBSearch.BaseType = «VPMReference» ‘ busca un PhysicalProduct
06: oDBSearch.AddEasyCriteria «V_Name», «<model_title>» ‘ busca utilizando el Título
‘ Inicie la búsqueda
07: oSearchService.Search
‘ Recuperar la lista de entidades encontradas
08: Dim cPLMEntidades As PLMEntidades
09: Set cPLMEntidades = oDBSearch.Resultados
‘ Obtener el servicio PLMOpen & abrir la primera entidad encontrada
10: Dim oPLMOpenService As PLMOpenService
11: Set oPLMOpenService = CATIA.GetSessionService(«PLMOpenService»)
12: Dim oEditor Como Editor
13: oPLMOpenService.PLMOpen cPLMEntidades.Item(1), oEditor
Guardar en la base de datos
Para guardar el modelo actual en la BD, tendría que utilizar la función PLMPropagateService. El código VBA sería algo parecido a esto
‘ Obtener el objeto PropagateService
01: Dim oSaveService As PLMPropagateService
02: Set oSaveService = CATIA.GetSessionService(«PLMPropagateService»)
‘ Guardar en BD (¡sólo guarda el contenido del editor activo!)
03: oSaveService.PLMPropagate
Crear nuevo contenido
Ahora, para crear nuevos contenidos, tendría que utilizar aún otro Servicio – PLMNuevoServicio.
01: Dim oServ Como PLMNuevoServicio
02: Set oServ = CATIA.GetSessionService(«PLMNewService»)
03: Dim oEditor Como Editor
04: oServ.PLMCreate «<content_type>», oEditor
El <content_type> string puede tener los siguientes valores:
- «Dibujo»: Crea un dibujo
- «3DShape»: Crea una forma 3D
- «3DPart»: Crea una pieza 3D
- «VPMReference»: Crea un producto físico
Estas son las malas noticias: crear una nueva Pieza 3D o un Producto físico a partir de una macro requiere una licencia especial, ya sea VMX o E70. Sin la licencia, sólo podrá crear un Dibujo o una Forma 3D. Normalmente, la mayoría de las empresas no disponen de esta licencia, lo que significa que – ¡no espere poder crear una nueva Pieza 3D o un Producto Físico utilizando scripts!
Únase al foro de diseñadores!
Su experiencia es vital para la comunidad. Únase a nosotros y aporte sus conocimientos.
Únase ahora al ForoComparta, aprenda y crezca con los mejores profesionales del sector.