Autor
|
Thema: Catia Script aus Excel starten (6450 mal gelesen)
|
x.race Mitglied
Beiträge: 4 Registriert: 02.02.2010
|
erstellt am: 02. Feb. 2010 09:54 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, ich habe ein Problem, mit dem ich mich jetzt seit ca. 2Tagen herumärgere. Ich bin ziemlicher vba und absoluter catia script Neuling. Mein Problem ist: Ich habe ein Makro in Catia erzeugt (*.catscript), dass ich gerne über excel vba starten möchte. Catia ist hierbei bereits geöffnet, es soll nur das Catia Makro gestartet werden. Kann mir da jemand helfen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 02. Feb. 2010 11:01 <-- editieren / zitieren --> Unities abgeben: Nur für x.race
|
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: 02. Feb. 2010 14:16 <-- editieren / zitieren --> Unities abgeben: Nur für x.race
ExecuteProcessus() oder ExecuteScript() könnten die System-Funktionen sein, die du suchst. In der OnlineDoc steht z.B.: Dim params() CATIA.SystemService.ExecuteScript"Part1.CATPart", catScriptLibraryTypeDocument, "Macro1.catvbs", "CATMain", params ich halte es aber auch für besser, das Ganze aus Excel zu machen. ------------------ 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 |
x.race Mitglied
Beiträge: 4 Registriert: 02.02.2010
|
erstellt am: 03. Feb. 2010 09:52 <-- editieren / zitieren --> Unities abgeben:
Erst mal vielen Dank für die schnellen Antworten. Das Makro soll im Prinzip nur zwei bestimmte Parts in einem Product öffnen und den Namen des einen Parts liest das Makro aus Excel aus.In CatScript sieht das Makro folgendermaßen aus: Dim xl As Object Dim Wert As String Sub CATMain() set xl = getobject("C:\Test.xls") Wert = xl.Worksheets("Sheet1").Range("G2").Value Name = xl.Worksheets("Kodaten").Range("G3").Value Set documents1 = CATIA.Documents Set productDocument1 = documents1.Add("Product") Set specsAndGeomWindow1 = CATIA.ActiveWindow Set viewer3D1 = specsAndGeomWindow1.ActiveViewer Set viewpoint3D1 = viewer3D1.Viewpoint3D Set product1 = productDocument1.Product Set products1 = product1.Products Dim arrayOfVariantOfBSTR1(0) arrayOfVariantOfBSTR1(0) = "C:\"&wert&".model" products1.AddComponentsFromFiles arrayOfVariantOfBSTR1, "All" Dim arrayOfVariantOfBSTR2(0) arrayOfVariantOfBSTR2(0) = "C:\Bla.CATPart" products1.AddComponentsFromFiles arrayOfVariantOfBSTR2, "All" set xl = nothing End sub Aber wenn das direkt mit Excel VBA "befohlen" werden könnte, wäre das natürlich noch praktischer. Das Problem ist, dass ich mit den Hilfen, die ich im Internet gefunden habe, nicht großartig weiterkam. CATIA.SystemService.ExecuteScript... gebe ich den Befehl nicht in einem CatiaVBA Makro ein?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
x.race Mitglied
Beiträge: 4 Registriert: 02.02.2010
|
erstellt am: 03. Feb. 2010 14:47 <-- editieren / zitieren --> Unities abgeben:
Okay, dass man im Prinzip den Code übernehmen kann, bis auf kleine Änderungen, war mir nicht klar. Ich habe zwar noch das Problem, dass wenn ich jetzt den Befehl Set productDocument1 = documents1.Add("Product") und dann Set specsAndGeomWindow1 = CATIA.ActiveWindow eingebe, was funktioniert, wenn ich es in Catia laufen lasse, Excel Problemmeldungen anzeigt. Kommt daher, dass Catia vorher noch einen PartNamen für das Product erfragt, ich allerdings über record die passende Funktion nicht angezeigt bekomme. Naja, umgangen habe ich das Ganze jetzt, indem ich einfach ein leeres Product ablege, dass immer geöffnet wird und dann unter anderem Namen abgespeichert wird. Oder kennt vll doch jemand die passende Funktion um einfach ein neues Product mithilfe eines Vba codes aus Excel heraus zu öffnen? Der Code sieht mittlerweile so aus: Code:
Sub CATMain() Dim xl As Object Dim Wert As String Set catia = GetObject(, "CATIA.Application") Wert = Sheets("Sheet2").Range("G2").Value Name = Sheets("Sheet2").Range("G3").Value sDatei = "H:\Test\Product1.Catproduct" F = ShellExecute(hwnd, "open", sDatei, vbNullString, vbNullString, 1) Set productDocument1 = catia.ActiveDocument Set product1 = productDocument1.Product Set products1 = product1.Products Dim bstr(0) bstr(0) = ThisWorkbook.Path & "\" & Wert & ".model" products1.AddComponentsFromFiles bstr, "All" Dim bstr2(0) bstr2(0) = "H:\Test\Part1.CATPart" products1.AddComponentsFromFiles bstr2, "All" Set xl = Nothing product1.PartNumber = Name catia.StartCommand ("Fit all in") catia.StartCommand ("Update All") product1.Update productDocument1.SaveAs "H:\Test\" & Name & ".CATProduct" End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 03. Feb. 2010 17:52 <-- editieren / zitieren --> Unities abgeben: Nur für x.race
|
x.race Mitglied
Beiträge: 4 Registriert: 02.02.2010
|
erstellt am: 04. Feb. 2010 09:43 <-- editieren / zitieren --> Unities abgeben:
Ja, der Befehl war mir schon bekannt, allerdings hat er mir ständig eine Fehlermeldung gebracht. Kam daher, dass er eigentlich danach immer noch eine manuelle Partnummereingabe verlangt hat und das Makro aber schon weiterlief. Ich habe das ganze jetzt einfach umgangen, indem ich in den Options unter Product Structure die Option Part Number -> Manual input deaktiviert habe. Also, vielen Dank nochmal für die Hilfen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schurik01 Mitglied Student
Beiträge: 12 Registriert: 09.12.2008
|
erstellt am: 13. Mrz. 2012 12:49 <-- editieren / zitieren --> Unities abgeben: Nur für x.race
Grüß Gott, ich habe ein ähnliches Problem. Der folgende Makro ruft ein Makro in CATIA auf: Sub CATMain() Dim SysServ Dim myScript Dim Params() Set SysServ = CATIA.SystemService myScript = SysServ.ExecuteScript("H:\CATIAMAKRO\VBA-Projekt1.catvba", catScriptLibraryTypeVBAProject, "Viereck", "CATMain", Params) End Sub Ich möchte aber, dass der Aufruf des CATVBA aus EXCEL geschieht. Dazu habe ich folgendes ohne Erfolg hinzugefügt (Obwohl ich mir sicher bin, dass es eigentlich funktionieren müsste): Sub Main() Dim params() Dim SysServ Dim myScript Dim CATIA As Object LibPath = "H:\CATIAMAKRO\VBA-Projekt1.catvba" ScriptName = "Viereck" FunctionName = "CATMain" Set CATIA = GetObject(, "Catia.Application") Set SysServ = CATIA.SystemService myScript = SysServ.ExecuteScript(LibPath, catScriptLibraryTypeVBAProject, ScriptName, FunctionName, params) End Sub Für jede Hilfe bin ich euch dankbar
[Diese Nachricht wurde von schurik01 am 13. Mrz. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 13. Mrz. 2012 15:45 <-- editieren / zitieren --> Unities abgeben: Nur für x.race
ich mache fogendes: 1.Butten in Excel erstellen 2.Modul zuweisen 3.in modul diesen Code:
Code: Shell "Explorer.exe \\Server\CatiaV5\S4Manage\macros\Excel\_1_Auftrag Speichern-mit-Excel.CATScript", vbNormalFocus
Pfad natürlich anpassen4.fertig
------------------ Sei Schlau bleib Dumm !!?!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schurik01 Mitglied Student
Beiträge: 12 Registriert: 09.12.2008
|
erstellt am: 13. Mrz. 2012 16:06 <-- editieren / zitieren --> Unities abgeben: Nur für x.race
Danke für deine Antwort. Bei mir handelt es sich aber um catvba-Format. Ich hatte auch auf catvbs verändert gehabt. Excel hat es nicht geschluckt. Meine Button-Eingabe: Private Sub CommandButton2_Click() Shell "H:\CATIAMAKRO\Makro2.catvbs", vbNormalFocus End Sub Hat es vielleicht was damit zu tun, wie ich mein Pfad angebe?? Du hast zum Beispiel gar kein ":" sondern // [Diese Nachricht wurde von schurik01 am 13. Mrz. 2012 editiert.] [Diese Nachricht wurde von schurik01 am 13. Mrz. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 13. Mrz. 2012 16:51 <-- editieren / zitieren --> Unities abgeben: Nur für x.race
Hallo, das hat nur was damit zu tun das der Pfad von einen Server stammt. füge mal noch Explorer.exe dan weiter H:\CATIAMAKRO........ ein. das ist als würdest du Doppelklick auf die datei machen.
------------------ Sei Schlau bleib Dumm !!?!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schurik01 Mitglied Student
Beiträge: 12 Registriert: 09.12.2008
|
erstellt am: 13. Mrz. 2012 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für x.race
|
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 13. Mrz. 2012 17:28 <-- editieren / zitieren --> Unities abgeben: Nur für x.race
Ohhhhh je Ich will dir jetzt nicht denn Abend verderben. Leider ist es so das bei CATScript eine Nacharbeit erforderlich ist Wenn du jetzt ja sagt markiert er dir eine Zeile vor dieser muss dann die Anwendung geschrieben werden. Siehe Fehlermeldung (Anweisung: Dim documents1 As Dokuments) Aber warum legst du dir das Makro nicht auf einen Butten in Catia oder legst dir eine Makrobibliothek Bei Tools > Makros...... Drücke in Catia einfach "ALT+F8" Lege eine neue Makrobibliothek an > Vorhandene Bibliothek hinzufügen > Pfad wählen > ok Dann noch den Pfad im ersten Fenster als du "Alt+F8" gedrückt hattest oben auswählen Makro markieren >rechts auf ausführen Jetzt kannst du es zumindest Testen
------------------ Sei Schlau bleib Dumm !!?!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Landschaftsplaner/in - Umweltplaner/in Landschaftsarchitekt/in - Landschaftsökologe/in (m/w/d) | Wir sind ein etabliertes Planungsbüro mit Tätigkeitsschwerpunkt am Unteren Niederrhein, das seit vier Jahrzehnten für regionale und internationale Unternehmen, Behörden und private Auftraggeber umweltfachliche Planungsbeiträge zu verschiedensten Vorhaben erstellt. Im Bereich der Wasserwirtschaft und der Rohstoffgewinnung werden zudem Zulassungs- und Genehmigungsplanungen erarbeitet sowie die Verfahrensbegleitung und die Projektsteuerung übernommen.... | Anzeige ansehen | Geowissenschaften |
|
schurik01 Mitglied Student
Beiträge: 12 Registriert: 09.12.2008
|
erstellt am: 15. Mrz. 2012 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für x.race
|