Criação, abertura e salvamento de arquivos

Bem-vindo de volta! Esta é a Parte 2 desta série de postagens do blog, e aqui explicarei como trabalhar com o conteúdo do banco de dados 3DEXPERIENCE (3DX).

Antes de tudo, a Dassault não gosta de usar a palavra “arquivo” quando falamos de 3DX. Como o senhor deve saber, todo o conteúdo do 3DX é armazenado no banco de dados, e cada item desse banco de dados agora é chamado de “Entidade PLM”. (Lembre-se de que, no final, há um arquivo para cada item no banco de dados, armazenado em algum lugar em um servidor). Ainda assim, daqui em diante, usaremos as palavras “entidade PLM” ou “objeto PLM” para cada item desse banco de dados.

Essa é provavelmente uma das maiores diferenças entre o V5 e o 3DX.

Baseado em documentos vs. Baseado em banco de dados

O V5 é baseado em documentos. Quando o senhor vê um modelo na sua tela no V5, ele é representado por duas coisas – o objeto Document e o objeto Window. Quando o senhor abre ou salva um modelo no V5, o CATIA na verdade lê ou salva um arquivo.

Figura 1

O que o senhor vê na tela do 3DX também é representado por duas coisas, mas agora é o objeto Editor e o objeto Window. O objeto Window executa a mesma função que no V5, que é exibir o modelo na tela. A função do objeto Editor, no entanto, é a de “controlador” do conteúdo do modelo. Ou seja, ele contém o aplicativo atual e mantém a lista de todos os comandos que podem ser iniciados a partir do aplicativo.

O Editor tem uma propriedade ActiveObject, que é o objeto que o senhor vê na tela. Para obter o objeto ativo, o senhor pode usar os seguintes comandos no VBA e, a partir daí, trabalhar com ele.

01: Dim oActiveObj As AnyObject

02: Set oActiveObj = CATIA.ActiveEditor.ActiveObject

O objeto de conteúdo corresponde a uma entidade PLM no banco de dados, que é representada por um cartão de metadados e um arquivo de armazenamento. Isso cria uma “camada extra” entre a sessão 3DX e os arquivos no banco de dados. Para obter o arquivo, o sistema primeiro lê os metadados, que informam onde exatamente o arquivo está localizado.

Figura 2

No 3DX, o senhor não pode simplesmente “abrir” ou “salvar” o modelo. É preciso pedir a um “serviço” 3DX que faça isso para o senhor.

Discutirei em detalhes os “serviços” do 3DX na parte 3 da série, portanto, por enquanto, vamos simplificar as coisas.

Pesquisando e abrindo a partir do banco de dados

Para trazer um modelo para a sessão 3DX, o senhor deve primeiro pesquisá-lo (SearchService) e depois abri-lo (PLMOpenService). O código VBA seria mais ou menos assim:

‘ Obter o objeto SearchService e criar a consulta de pesquisa

01: Dim oSearchService As SearchService

02: Set oSearchService = CATIA.GetSessionService(“Search”)

03: Dim oDBSearch As DatabaseSearch

04: Set oDBSearch = oSearchService.DatabaseSearch

05: oDBSearch.BaseType = “VPMReference” ‘ procura por um PhysicalProduct

06: oDBSearch.AddEasyCriteria “V_Name”, “<model_title>” ‘ pesquisa usando o título

‘ Iniciar a pesquisa

07: oSearchService.Search

‘ Recuperar a lista de entidades encontradas

08: Dim cPLMEntities As PLMEntities

09: Set cPLMEntities = oDBSearch.Results

‘ Obter o serviço PLMOpen & abrir a primeira entidade encontrada

10: Dim oPLMOpenService As PLMOpenService

11: Set oPLMOpenService = CATIA.GetSessionService(“PLMOpenService”)

12: Dim oEditor As Editor

13: oPLMOpenService.PLMOpen cPLMEntities.Item(1), oEditor

Salvando no banco de dados

Para salvar o modelo atual no banco de dados, o senhor teria de usar o comando PLMPropagateService. O código VBA seria mais ou menos assim:

‘ Obter o objeto PropagateService

01: Dim oSaveService As PLMPropagateService

02: Set oSaveService = CATIA.GetSessionService(“PLMPropagateService”)

‘ Salvar no banco de dados (salva apenas o conteúdo do Active Editor!)

03: oSaveService.PLMPropagate

Criação de novo conteúdo

Agora, para criar um novo conteúdo, o senhor teria que usar mais um serviço – o PLMNewService.

01: Dim oServ As PLMNewService

02: Set oServ = CATIA.GetSessionService(“PLMNewService”)

03: Dim oEditor As Editor

04: oServ.PLMCreate “<content_type>”, oEditor

O <content_type> pode ter os seguintes valores:

  • “Drawing” (Desenho): Cria um desenho
  • “3DShape”: Cria uma forma 3D
  • “3DPart”: Cria uma peça 3D
  • “VPMReference”: Cria um produto físico

Aqui estão as más notícias: a criação de uma nova peça 3D ou de um produto físico a partir de uma macro requer uma licença especial, VMX ou E70. Sem a licença, o senhor pode criar apenas um desenho ou uma forma 3D. Normalmente, a maioria das empresas não tem essa licença, o que significa que o senhor pode criar apenas um desenho ou uma forma 3D. não espere poder criar uma nova peça 3D ou um produto físico usando scripts!