CAD

CATIA V6 automatisieren mit Python unter Windows

CATIA V6 im Blue LayerDas neue CAD- und PLM-System CATIA V6 von Dassault Systemes kann mit Python unter Windows genauso einfach automatisiert werden, wie das gerade in Ablösung befindliche CATIA V5. Da das neue System aber nicht mehr auf das Dateisystem des Benutzers zurückgreift, sondern mit einer Datenbank gegen einen PLM-Server arbeitet, muss man hierbei den Zugriff auf die CAD-Daten natürlich komplett anders gestalten. Dieser Artikel zeigt, wie man automatisiert CAD-Daten identifiziert und diese für einen Vergleich in die Turntable View des Silver Layer lädt.

COM-Anwendungen lassen sich mit Python z.B. mit comtypes oder mit dem Pywin32 Modul, welches in der ActivePython Distribution enthalten ist automatisieren. Meine Beispiele hier verwenden Pywin32.

Wenn Sie die folgenden Beispiele laufen lassen, sorgen Sie bitte dafür, dass CATIA V6 bereits gestartet ist und eine PLM-Verbindung existiert.

Das erste Beispiel gibt einfach die Namen (PLMExternalID) der selektierten CAD-Daten aus einer Trefferliste (im Silver Layer) in die Konsole aus:

import win32com.client  
catiaObj=win32com.client.GetActiveObject('CATIA.Application') 
for i in range(catiaObj.ActiveEditor.Selection.Count):
     print 'Selected Item %s: %s'%(i, catiaObj.ActiveEditor.Selection.Item(i + 1).Value.Name)

Das nächste Beispiel setzt eine Recherche mit der Zeichenfolge „Weld0815*“ an die VPM-Datenank ab und lädt alle gefundenen Daten in die Turntable View im Silver Layer. Dies ist hilfreich, wenn man eben schnell eine bestimmte Menge an CAD-Daten miteinander vergleichen möchte:

import win32com.client  
# Search for every Product with name Weld0815*
catiaObj=win32com.client.GetActiveObject('CATIA.Application') 
oSearchService = catiaObj.GetSessionService("PLMSearch") 
oPLMSearches = oSearchService.Searches 
oPLMSearch = oPLMSearches.Add() 
oPLMSearch.Type = "PLMProductDS" 
oPLMSearch.AddAttributeCriteria("PLM_ExternalID",  "Weld0815*") 
oPLMSearch.search()  
# Iterate over all found objects and put them into the turntable view 
o3DShapeAsPLMEntities = oPLMSearch.EditedContent 
print 'Found %s entries.'%o3DShapeAsPLMEntities.Count 
for foundobj in o3DShapeAsPLMEntities:
     print 'Putting %s onto the table'%foundobj.Name
     oSelection = catiaObj.ActiveEditor.Selection
     oSelection.Add(foundobj)
     catiaObj.StartCommand("Turntable")

Eine Antwort schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.