Autor
|
Thema: Parameteränderung mit Python (2065 mal gelesen)
|
VivienJ Mitglied Student
Beiträge: 8 Registriert: 23.07.2012 Python 2.7.2 CATIA V5R21
|
erstellt am: 17. Aug. 2012 09:58 <-- editieren / zitieren --> Unities abgeben:
Hallo ihr lieben, für meine Abschlußarbeit soll ich ein Programm in Python schreiben, dass mir in CATIA Parameter meines Bauteile (der Einfachheit halber ein Balken) ändert, die Datei als .igs speicher und dann die .igs in Abaqus öffnet und berechnet. Mein Problem ist nun das Ändern der Parameter, mir fehlt hier der Befehl (command). Ich bekomme meine Original .CATPart geöffnet, ich bekomme die Parameter ausgelesen, ich kann die Datei als .igs speichern, mir fehlt einfach der Zwischenschritt des Parameteränderns. Vielen Dank für eure Hilfe Herzliche Grüße Vivien Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 17. Aug. 2012 10:02 <-- editieren / zitieren --> Unities abgeben: Nur für VivienJ
Bitte Systeminfo ausfüllen. Gib uns doch mal einen Code-Schnippsel, wei Du den parameter bisher bekommst, dann brauchen wir nur die Methode anhängen statt Dir ein fertiges Programm zu liefern und hier können nicht viele Python. Hast Du die Suchfunktion und die Hilfe bemüht? ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VivienJ Mitglied Student
Beiträge: 8 Registriert: 23.07.2012 Python 2.7.2 CATIA V5R21
|
erstellt am: 17. Aug. 2012 10:12 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke schon mal für die schnelle Antwort. An meiner Hochschule benutzen wir CATIA V5R21, Python ist die Version 2.7.2, OS Version des Rechners an dem ich Sitze ist Windows NT6.1 Service Pack1, Dual 2.40 GHz Intel Core2 6600@4096MB. #CATIA ueber COM laden try: from win32com.client import Dispatch CATIA = Dispatch('CATIA.Application') print "CATIA V5 wurde erkannt." except: print "CATIA V5 wurde nicht erkannt." print "Moegliche Ursachen:" print "-PythonWin ist nicht installiert." print "-CATIA V5 wurde nicht gestartet." #Document is opened try: partDocument1 = CATIA.Documents.open("C://Users//11067053//Desktop//Abaqus//Part1.CATPart") print "Datei wurde geoeffnet" except: print "Datei konnte nicht geoeffnet werden." #Programm is opened, just to see whats happening CATIA.Visible=True
#Document is choosen to be the active one try: partDocument1 = CATIA.ActiveDocument print "Datei wurde aktiviert" except: print "Datei konnte nicht aktiviert werden."
#Part1 is set to be the active one try: part1 = partDocument1.Part print "Part wurde zugewiesen " except: print "Part konnte nicht zugewiesen werden"
#Part1 is updated (here its not necessary, no changes yet) try: part1.Update print "Part wurde angepasst" except: print "Part konnte nicht angepasst werden"
#open file in list list = open( "C:\Users\\11067053\Desktop\CatiaUndAbaqus\DesignTable1.txt", "r" ) array = [] i=-1 #split lines from the list for line in list: array.append( line ) i=i+1 if i!=0: #if line length greater than one in case that we have parameters on that line if len(line)>1: print 'Simulation nr.', i print line #split line to take out the space and divide it to variables # example use of split before line = 50 40 and after parameter = 50],[40 parameter = line.split( ); #not necessary converting string to integer Breite = int(parameter[0]) Laenge = int(parameter[1]) print "Breite", Breite print "Laenge", Laenge print "" #Part will be updated after the change of parameters try: part1.Update print "Part wurde angepasst" except: print "Part konnte nicht angepasst werden" #Document is saved as igs try: partDocument1.ExportData("C:\Users\\11067053\Desktop\Abaqus\Part2.igs","igs") print "Datei wurde gesichert" except: print "Datei konnte nicht gesichert werden" Ich hoffe es ist soweit verständlich. Wie gesagt, mir fehlt das Command um die Parameter nun zu ändern. Falls du meine Files (Catia Part und Konstruktionstabelle brauchst, gib bescheid. Danke und viele Grüße Vivien Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Aug. 2012 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für VivienJ
Servus Meiner Ansicht nach (ich kenne mich aber nicht in Pyton aus) hast du noch keinen Zugriff auf die Parameter im Part hergestellt. Sind dies Parameter, oder nur Bedingungen in Skizzen, oder Abmessungen in einem Block-Feature? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VivienJ Mitglied Student
Beiträge: 8 Registriert: 23.07.2012 Python 2.7.2 CATIA V5R21
|
erstellt am: 17. Aug. 2012 10:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, in meinem Part habe ich Parameter eingestellt und die entsprechende Tabelle angelegt, leider kenne ich mich mit Programmieren im allgemeinen noch nicht so gut aus, aber du hast Recht, ich habe bisher einfach die Tabelle ausgelesen und noch keinen Zugriff auf die Parameter. Gruß Vivien Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VivienJ Mitglied Student
Beiträge: 8 Registriert: 23.07.2012 Python 2.7.2 CATIA V5R21
|
erstellt am: 17. Aug. 2012 10:26 <-- editieren / zitieren --> Unities abgeben:
Ich hatte bereits die Möglichkeit gefunden Über die CATIA StartCommands auf die Parameter zuzugreifen, aber dann muß man Klicks durchführen und das ist nicht erwünscht. Ich bräuchte einen Befehl in Form von exec Parameterändern, das VBA Makro, dass ich erstellt habe spuckt mir folgendes aus, nur da ich von "Extren" zugreifen will, funktioniert es so nicht in Python: Dim relations1 As Relations Set relations1 = part1.Relations Dim designTable1 As DesignTable Set designTable1 = relations1.Item("DesignTable.1") designTable1.Configuration = 6 part1.Update Set partDocument1 = CATIA.ActiveDocument partDocument1.Save designTable1.Configuration = 5 part1.Update Gruß Vivien Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Aug. 2012 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für VivienJ
Servus Jetz wird es etwas klarer. Du musst nur die Konfiguration der Designtabelle ändern. Zugriff solltest du sinngemäß über: partDocument1.part.releations.Item("DesignTable.1")auf die Tabelle erhalten (siehe dazu auch die Doku V5Aotmaton.chm im Catia-Installationsverzeichnis). Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VivienJ Mitglied Student
Beiträge: 8 Registriert: 23.07.2012 Python 2.7.2 CATIA V5R21
|
erstellt am: 17. Aug. 2012 10:35 <-- editieren / zitieren --> Unities abgeben:
Hier hab ich nochmal den Befehl mit Startcommand, CATIA muß hierfür auf deutsch eingestellt sein. mit deisem Befehl öffnet er mir in Catia ein Fenster, in dem ich die Parameter ändern und speichern kann. try: CATIA.StartCommand ("Konstruktionsinspektor") print "Konstruktionsparameter koennen geaendert werden" except: print "Konstruktionsparameter koennen nicht geaendert werden." Grüße Vivien
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VivienJ Mitglied Student
Beiträge: 8 Registriert: 23.07.2012 Python 2.7.2 CATIA V5R21
|
erstellt am: 17. Aug. 2012 10:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, ich hatte folgendes schon probiert: #Parameter definieren try: designTable1 = relations1.Item("DesignTable.1") print "Parameter wurden neu definiert" except: print "Parameter konnten nicht definiert werden" #Wert auswaehlen try: SheetRow = 5 print "neue Parameter wurden gewaehlt" except: print "neue Parameter konnten nicht gewaehlt werden" Mein Programm behauptet nun, dass er die Parameter gewählt hat, nur in CATIA passiert nichts, als ich dort erneut ein Makro erstellt habe hat es den Rest des Programmes angezeigt, nur dieser Teil war nicht berücksichtig (sorry, hätte ich anfänglich schon erwähnen sollen.). Grüße Vivien Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Aug. 2012 10:43 <-- editieren / zitieren --> Unities abgeben: Nur für VivienJ
Servus Also klappt die Zeile mit designTabel1 = ... ? Wie kommst du auf "SheetRow"? Wo ist Sheetrow defniert? Es müsste zB "designTable1.Configuration = 5" heißen. Hast du nach dem ändern der Konfiguration auch das Part aktualisiert? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VivienJ Mitglied Student
Beiträge: 8 Registriert: 23.07.2012 Python 2.7.2 CATIA V5R21
|
erstellt am: 17. Aug. 2012 10:53 <-- editieren / zitieren --> Unities abgeben:
Jungs, ich schäme mich zutiefst und entschuldige mich, dass ich eure kostbare Zeit in anspruch genommen habe. Anfänglich habe ich noch mit einer Excel-Tabelle und nicht ner .txt gearbeitet und das hat nicht funktioniert, somit habe ich "logisch" geschlußfolgert, dass es mit ner .txt für die Parameter auch nicht klappen würde, aber oh wunder, meine Parameter ändern sich! Ich wünsche euch ein schönes Wochenede und danke euch vielmals für die ZEit, die ihr euch genommen habt! Grüße Vivien Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 19. Aug. 2012 08:52 <-- editieren / zitieren --> Unities abgeben: Nur für VivienJ
Hallo zusammen, Das Thema hat sich ja geklärt ABER ich habe noch eine Anmerkung zur Sache: Gerade für alle Programmierer welche aus einer externen IDE auf Catia zugreifen möchten empfiehlt es sich den reinen Catia Code zunächst mittels VBA direkt in Catia zu entwickeln. Hierbei hat man den Vorteil des Watch-Fensters und der Hilfe (mittels F1) sowie die integrierte Autovervollständigung. Auch das Debuggen ist einfacher weil man sich zunächst nur auf den Kern des Programms konzentriert. Steht der VBA-Code kann man diesen in jede beliebigen Sprache "übersetzten". Gerade bei unerfahrenen Programmierern bringt dies einen deutlichen Zeitvorteil und eine Anhäufung von Wissen für zukünftige Projekte. In dem Sinne wünsche ich einen schönen Sonntag! ------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VivienJ Mitglied Student
Beiträge: 8 Registriert: 23.07.2012 Python 2.7.2 CATIA V5R21
|
erstellt am: 21. Aug. 2012 08:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, danke für den Hinweis, ich habe es mir eigentlich noch leichter gemacht, ich habe ein Makro erstellt, von den Vorgängen die ich haben wollte und dann habe ich dieses einfach übersetzt. Das Problem war einfach nur, dass ich anfänglich mit EXCEL gearbeitet habe und nicht mit .txt files. Danke und Grüße Vivien Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |