CATIA V6 Customization – Nummerngenerator in EKL

Dieser Beitrag zeigt, wie ein einfacher Nummerngenerator in EKL (auch Client-seitige Business Rule genannt) für CATIA V6 aussehen kann:

let str_PLM_ExternalID (string) 
let cmpString          (String) 
let uniqueKey          (String) 
let zeroes             (String) 
let maxKeyLen          (Integer) 
let uniqueLen          (Integer)

cmpString              = "NR" 
zeroes                 = "0000000" 
maxKeyLen              = 7 
uniqueLen              = 0  
uniqueKey              = GetUniqueKeyFromString (cmpString) 
uniqueLen              = uniqueKey.Length () 
uniqueKey              = zeroes.Extract (0, maxKeyLen - uniqueLen) + uniqueKey 
str_PLM_ExternalID     = cmpString + uniqueKey 

ThisObject.PLM_ExternalID = str_PLM_ExternalID

Batchkonvertierung mit CATDMUUtility aus CATIA V5

CATDMUUtility aus CATIA V5Für Unternehmensprozesse z.B. im Rahmen des PLM-Prozesses werden oft Konstruktionsdaten nativ (z.B. in einem PDM-System) gespeichert. Im Falle der CATIA V5 Datenverwaltung werden beispielswise die Formate CATProduct, CATPart und CATDrawing abgelegt sein.

Um Folgeprozesse eines ERP-Systems zu unterstützen, können vereinfachte oder neutrale Formate wie STL, VRML, PDF, IGES, STEP oder DXF notwendig sein. Oft werden diese Formate direkt aus dem CAD-System (hier CATIA V5) extrahiert und in geeigneten Ablageorten gespeichert. CATIA selbst bietet für diesen Anwendungsfall diverse Möglichkeiten an. Dieser Artikel beschreibt den Einsatz des CATDMUUtility aus der CATIA V5 Toolsammlung CATUtil.

CATUtil wird aus der CATIA Oberfläche unter Menü/Extras/Utility insbesondere für den interaktiven Gebrauch angeboten. Es ist aber keine besonders große Hilfe, um Massendaten zu konvertieren.

„Batchkonvertierung mit CATDMUUtility aus CATIA V5“ weiterlesen

Was ist Product Lifecycle Management?

Nicht nur mein Beruf als PLM Solution Architect, sondern auch viele Beiträge dieser Website beschäftigen sich mit dem Thema PLM oder PLM-Software. Man kann darüber Dissertationen schreiben. Für den Laien bleibt es aber ein ziemlich abstraktes Thema. Und so möchte ich hier einen Versuch wagen, das Thema für den Laien verständlich und neutral zu erklären. Was ist also PLM? „Was ist Product Lifecycle Management?“ weiterlesen

Alternatives Viewing von 3DXML mit GLC-Player

Baugruppe im GLC-PlayerIn letzter Zeit habe ich mich bedingt durch die CATIA V6-Einführung bei einem Kunden etwas näher mit dem 3DXML-Format beschäftigt. Als Datenaustauschformat zwischen CATIA V6-Installationen gewinnt es meiner Meinung nach immer mehr an Bedeutung. Vielleicht ist es im Moment sogar die einfachste Methode. Alleine dadurch, dass sämtliche Abhängigkeiten in nur einer Datei vereint werden, erspart es einem eine Menge Arbeit. Aber wie verhält es sich mit der Interoparabilität zwischen anderen Viewern? Gibt es vielleicht schon eine Open Source Alternative?

Leider gibt es neben dem hauseigenen 3DXML-Player nicht viel – außer den GLC-Player. Und dieser ist wirklich gut.

Hier einige Features und Alleinstellungsmerkmale:

  • es ist Open Source
  • es liest neben 3DXML auch COLLADA, 3D Studio und einige andere Formate
  • es kann Schnitte legen
  • es ist Plattform-unabhängig für MAC, Linux und Windows verfügbar

„Alternatives Viewing von 3DXML mit GLC-Player“ weiterlesen

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")

3DXML-Player unterstützt jetzt auch CGR

Der 3DXML-Player von Dassault Systemes unterstützt seit kurzem neben dem hauseigenen 3D XML-Format auch das leichtgewichtige CGR-Format aus CATIA.

Das CGR-Format, welches eine leichtgewichtige Repräsentation von CATIA V5/V6 Baugruppen oder Einzelteilen darstellt, wird gern dazu verwendet, um größerer Baugruppen schneller zu viewen. Früher musste man noch zwingend CATIA verwenden, um diese Dateien zu sichten. Jetzt funktioniert es auch mit dem kostenlosen 3DXML-Player – ganz ohne CATIA V5 oder CATIA V6.

Man kann CATIA V5 so einrichten, dass beim Laden von Baugruppen oder Einzelteilen generell erst mal die CGR-Repräsentation geladen wird. Erst bei einer Veränderung des Modells wird dann automatisch in den Native-Modus umgeschaltet und die originale CATIA-Datei geladen. So kann man auch zügig mit sehr großen Baugruppen arbeiten.

CATDrawing zu PDF mit Python

Achtung: Dieses Script benötig die Python for Windows Extension Pywin32!

import win32com.client  
catapp = win32com.client.Dispatch('CATIA.application') 
v5doc = catapp.Documents.Open('C:\\dokumente\\Drawing1.CATDrawing')
v5doc.ExportData('c:\\out\\Drawing1.pdf', 'pdf')

Konvertierung von CGR zu CATIA V4 .model

Ob es ein Versehen oder Absicht von Dassault ist, kann ich nicht sagen. Aber wenn man automatisiert (im Beispiel mit Python), in CATIA V5 eine CGR-Datei einliest und diese als CATIA V4-Datei (.model) speichert, wird dieser Vorgang anstandslos durchgeführt. Netter Nebeneffekt ist auch, dass man CGR-Dateien damit in CATIA V5 laden kann.

Hier das Python Script dazu:

import win32com.client  
app=win32com.client.dynamic.Dispatch('Catia.Application')
doc=app.documents.open('c:\\test.cgr') 
app.ActiveDocument.ExportData('c:\\test.model', 'model')

Achtung: Dieses Script benötig die Python for Windows Extension Pywin32!

CATIA V5 and DMU Navigator Automation with Python (english)

If you want to automate CATIA V5 or DMU Navigator with Python you need Pywin32 and Python for Windows or Activestates ActivePython for Windows. Python is free software and you can develop professional applications with all advantages of Python for CATIA V5 or DMU Navigator.

For developing a small application which interacts to CATIA V5 you only have to download your prefered Python Distribution for Windows and can start developing applications for CATIA V5 or DMU Navigator (this should be running when testing the application).

Automating CATIA V5:

If you have done above you can start with this source code:

import win32com.client app = win32com.client.Dispatch('catia.application') doc = app.ActiveDocument for part in doc.Product.Products:     print part.Name

This small example prints out the part names of a loaded CATProduct and their CATParts.

Here is the same example when you prefer comtypes instead of Pywin32:

import comtypes.client app=comtypes.client.GetActiveObject('Catia.Application') doc = app.ActiveDocument for part in doc.Product.Products:     print part.Name

Automating DMU Navigator:

If you want to automate DMU Navigator, you can do this:

# Following doesn`t work with CATIA V5 R16 SP5 and later catia_app = win32com.client.Dispatch("DMU.Application")

Important notes:

If you want to use early binding for the CATIA V5 object libraries you can use the Makepy utility from Pythonwin. After that every object and its methods will be usable from the pulldown menu while typing and you can have a performance advantage. You should use makepy for every object library which you want to use e.g. „ProductStructure Object Library“ for working with CATProducts). But not for the „CATIA V5 Interfaces Objekt Library“!

If you do that every application which uses early binding for the „CATIA V5 Interfaces Objekt Library“ will not work ! A workaround is not to use makepy for the „CATIA V5 Interfaces Objekt Library“ or use explicit late binding „(import win32com.client.dynamic as the first line).

For starting developing applications with Python for CATIA V5 you should use the manual V5Automation.chm which you can find in the bin-directory of CATIA V5. You will see that you can develop Python applications in the same way like VB with the builtin VB editor.

If you have problems to access the COM Interface from CATIA V5 (eg. no object libraries from CATIA V5 in makepy) please check whether CATIA V5 was registrated as a COM server. If not you can do that with cnext.exe /regserver in the CATIA V5 bin-directory. Then everything should work well…

More on Microsofts Component Object Model (COM) and Python

More information for developing with Python for COM applications with Pywin32 you can find in this excellent book. A whole example Chapter about COM Programming with Python/Pywin32 can be found at O`Reilly.