Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Problem mit SaveAs

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Problem mit SaveAs (3038 mal gelesen)
K.Siebert
Mitglied
Tech Zeichner


Sehen Sie sich das Profil von K.Siebert an!   Senden Sie eine Private Message an K.Siebert  Schreiben Sie einen Gästebucheintrag für K.Siebert

Beiträge: 415
Registriert: 19.05.2007

Win XP
Catia V5 R19
Catia V5 R24

erstellt am: 04. Jan. 2008 19:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo alle zusammen,
ich habe folgendes Problem ich würde gerne (ein) mehrere Selektierte(s) CATPart in einem CATProduct mit einem Skript/Makro neu abspeichern.
Ein Skript habe ich schon gebastelt

Das Problem an diesem Skript ist das ich immer nur das Aktive Dokument Speichern kann nicht das Selektierte !!!!!!!!!!!  

Zur Zeit steht dieses > CATIA.ActiveDocument.SaveAs Datei < zum Speichern in der letzten Zeile und ich weiß auch das dieses Falsch ist.
Gibt es einen Anderen Befehl zum Speichen ? ich hatte es schon mal mit > call UserSelektion.SaveAs Datei< probiert geht aber nicht.
Hat jemand eine Idee.
[CODE][/CODE]
Hier ist mein Code nicht ganz rein aber fein:

Sub CATMain()

'___Dim UserSelektion As Selection
'___Set UserSelektion = productDocument1.Selection

  Dim UserSelektion As Selection
  Set  UserSelektion = CATIA.ActiveDocument.Selection

  'If UserSelektion.Count > 0 Then

      For I = 1 to UserSelektion.Count
        'MsgBox(UserSelektion.Item(I).Value.Name)
  Name = (UserSelektion.Item(I).Value.Name)  'product1.PartNumber

  'End If

Dim Eingabe As String
  Strich    = ""
  Eingabe = "D:\pf\" '--- Angabe des Speicherorts
  Eingabe = InputBox ("Bitte geben Sie Speicher Ort  ein.", "Eingabe Speichern", Eingabe)

VAR_pfad = Eingabe
Set productDocument1 = CATIA.ActiveDocument
'Set Name = UserSelektion productDocument1.Product
Datei = VAR_pfad & Name

CATIA.ActiveDocument.SaveAs Datei  'call UserSelektion.SaveAs Datei

Dim Box, Speicher As Long

MsgBox "Das Dokument wird gespeichert:" & Chr (13) & Chr (10) & VAR_pfad & Strich & Name & "",64, "GESPEICHERT"

Next

End Sub

Ich bedanke mich schon mal im Vorauf für Antworten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAMiCADse
Mitglied



Sehen Sie sich das Profil von CAMiCADse an!   Senden Sie eine Private Message an CAMiCADse  Schreiben Sie einen Gästebucheintrag für CAMiCADse

Beiträge: 177
Registriert: 17.02.2006

V5,R19,SP9

erstellt am: 07. Jan. 2008 11:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für K.Siebert 10 Unities + Antwort hilfreich

Hallo K.Siebert,

da SaveAs eine Methode der Klasse Document ist, mußt du von der selektierten Instanz zum dazugehörigen Document gehen. -> ReferenceProduct -> Parent

Code:
Dim SelectedProduct As Product
Set SelectedProduct = CATIA.ActiveDocument.Selection.Item2(1).Value

Dim doc As Document
Set doc = SelectedProduct.ReferenceProduct.Parent

doc.SaveAs "DateiPfad"


Gruß
CAMiCADse

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

K.Siebert
Mitglied
Tech Zeichner


Sehen Sie sich das Profil von K.Siebert an!   Senden Sie eine Private Message an K.Siebert  Schreiben Sie einen Gästebucheintrag für K.Siebert

Beiträge: 415
Registriert: 19.05.2007

Win XP
Catia V5 R19
Catia V5 R24

erstellt am: 07. Jan. 2008 17:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank
CAMiCADse
Ich werde den Code mal ausprobieren. Und anpassen
Den endgültigen code stell ich dann hier her und aufgeräumt.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

K.Siebert
Mitglied
Tech Zeichner


Sehen Sie sich das Profil von K.Siebert an!   Senden Sie eine Private Message an K.Siebert  Schreiben Sie einen Gästebucheintrag für K.Siebert

Beiträge: 415
Registriert: 19.05.2007

Win XP
Catia V5 R19
Catia V5 R24

erstellt am: 11. Jan. 2008 16:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Habe es getestet es funktioniert leider ist es so dass das Script nicht erkennt ob es ein Produkt oder Part ist.
Und der Speichername ist der Exemplarname nicht die Teilenummer jetzt kommt meine Frage muss ich das Selektierte Element erst Aktiv setzen und dann Speichern denn das funktioniert wenn ich es das gewünschte Part oder Produkt in einem Separatem Fenster öffne leider bringt mir die Selektion nichts gehe ich da einen ganz falschen weg ???
Habe das Forum auch schon durchsucht aber nichts derartiges gefunden LEIDER
Kann mir da Jemend weiter Helfen ?

Na ja mal schauen hier ist das Script


Code:
Sub CATMain()

'_____________Eingabe des Speicherort_________________________________________________

Dim Eingabe As String
Strich    = ""
Eingabe = "D:\Pf\"
Eingabe = InputBox ("Bitte geben Sie Speicher Ort  ein.", "Eingabe Speichern", Eingabe)
'__________________________________________________________________________________

'_____________Abfrage Selektierte Elemente_____________________________________________

'Dim UserSelektion As Selection
' Set UserSelektion = productDocument1.Selection

Dim UserSelektion As Selection
Set  UserSelektion = CATIA.ActiveDocument.Selection

'If UserSelektion.Count > 0 Then

For I = 1 to UserSelektion.Count
'MsgBox(UserSelektion.Item(I).Value.Name)
Name = (UserSelektion.Item(I).Value.Name)  'product1.PartNumber
'__________________________________________________________________________________

'End If
'_____________Zuordnung____________________________________________________________

VAR_pfad = Eingabe
Set productDocument1 = CATIA.ActiveDocument
'Set Name = UserSelektion productDocument1.Product
Datei = VAR_pfad & Name
'__________________________________________________________________________________

'_____________Speicher Befehl Aktiver Fenster___________________________________________

'CATIA.ActiveDocument.SaveAs Datei
'__________________________________________________________________________________


'_____________Abfrage Selektierte Elemente zum Speichen_________________________________

Dim SelectedProduct As Product
Set SelectedProduct = CATIA.ActiveDocument.Selection.Item2(1).Value
Dim doc As Document
Set doc = SelectedProduct.ReferenceProduct.Parent
'__________________________________________________________________________________

'_____________Speicher Befehl Selektierte Elemente ______________________________________

doc.SaveAs Datei
'__________________________________________________________________________________

'_____________Informations Speicherbox______________________________________

Dim Box, Speicher As Long

MsgBox "Das Dokument wird gespeichert:" & Chr (13) & Chr (10) & VAR_pfad & Strich & Name & "",64, "GESPEICHERT"
'__________________________________________________________________________________
Next
End Sub


Bitte Bitte um antwort es geht um mein Hinterteil das ist schon ziemlich Heiß

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lusilnie
Mitglied



Sehen Sie sich das Profil von Lusilnie an!   Senden Sie eine Private Message an Lusilnie  Schreiben Sie einen Gästebucheintrag für Lusilnie

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 13. Jan. 2008 19:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für K.Siebert 10 Unities + Antwort hilfreich

Hallo K.Siebert,

ich hoffe mal, die Probleme klären zu können:

1.) Dateiname gleich Teilenummer - da muss die Zeile so lauten:

Code:
Name = (UserSelektion.Item(I).Value.ReferenceProduct.Name)  'product1.PartNumber

2.) nur Parts speichern - dann musst Du eben nur Parts speichern:
Code:
If TypeName(doc) = PartDocument then doc.SaveAs Datei

3.) Ich glaube, da ist noch ein Fehler, die folgende Zeile muss doch so lauten:
Code:
Set SelectedProduct = CATIA.ActiveDocument.Selection.Item2(I).Value

, sonst bekommst Du immer das gleiche gesichert, ODER???

Danach sollte Dein Ergebnis passen.


mfg,
Lusilnie

------------------

Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

K.Siebert
Mitglied
Tech Zeichner


Sehen Sie sich das Profil von K.Siebert an!   Senden Sie eine Private Message an K.Siebert  Schreiben Sie einen Gästebucheintrag für K.Siebert

Beiträge: 415
Registriert: 19.05.2007

Win XP
Catia V5 R19
Catia V5 R24

erstellt am: 14. Jan. 2008 10:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Lusilnie;

Es Funktioniert jetzt !!!!!!!!!!    

Der Code 1.
Ist der Code den ich brauchte damit dieses Skript funktioniert

Der Code 2.
Hatte die Auswirkung das er überhaupt nichts gespeichert hatte habe den alten Code verwendet

Der Code 3.
Funktioniert mit (1) und mit (I) warum keine Ahnung

Ich bin noch nicht so bewandert mit Skript’s Schreiben könntest du mir nochmals bei einem Anderem Skript helfen? Da habe ich Probleme mit dem Count der Zählt stur nach oben ohne zu erkenn das Teile das erste mal vorhanden sind ist das wie kann man das denn Lösen ich hänge mal das Skript als zweites an währe nett wenn du mit dabei hälfen könntest.

Hier ist entgültige Code: (Selektierte Elemente Speichern)

Code:
Sub CATMain()

'_____________Eingabe des Speicherord_________________________________________________

Dim Eingabe As String
Strich    = ""
Eingabe = "D:\Pf\"
Eingabe = InputBox ("Bitte geben Sie Speicher Ort  ein.", "Eingabe Speichern", Eingabe)
'__________________________________________________________________________________

'_____________Abfrage Selektierte Elemente_____________________________________________

'Dim UserSelektion As Selection
' Set UserSelektion = productDocument1.Selection

Dim UserSelektion As Selection
Set  UserSelektion = CATIA.ActiveDocument.Selection

'If UserSelektion.Count > 0 Then

For I = 1 to UserSelektion.Count
'MsgBox(UserSelektion.Item(I).Value.Name)
Name = (UserSelektion.Item(I).Value.ReferenceProduct.Name)    'Name = (UserSelektion.Item(I).Value.Name)  'product1.PartNumber
'__________________________________________________________________________________

'_____________Zuordnung____________________________________________________________

VAR_pfad = Eingabe
Set productDocument1 = CATIA.ActiveDocument
'Set Name = UserSelektion productDocument1.Product
Datei = VAR_pfad & Name
'__________________________________________________________________________________

'_____________Speicher Befehl Aktiver Fenster___________________________________________

'CATIA.ActiveDocument.SaveAs Datei
'__________________________________________________________________________________


'_____________Abfrage Selektierte Elemente zum Speichen_________________________________

Dim SelectedProduct As Product
Set SelectedProduct = CATIA.ActiveDocument.Selection.Item2(I).Value
Dim doc As Document
Set doc = SelectedProduct.ReferenceProduct.Parent
'__________________________________________________________________________________

'_____________Speicher Befehl Selektierte Elemente ______________________________________

'If TypeName(doc) = PartDocument then doc.SaveAs Datei
doc.SaveAs Datei
'__________________________________________________________________________________

'_____________Informations Speicherbox______________________________________

Dim Box, Speicher As Long

MsgBox "Das Dokument wird gespeichert:" & Chr (13) & Chr (10) & VAR_pfad & Strich & Name & "",64, "GESPEICHERT"
'__________________________________________________________________________________
Next
End Sub


Hier ist  Code: (Exemplarname anpassen)    

Code:
Language = "CATScript"
Sub CATMain()
    Set productDocument1 = CATIA.ActiveDocument   
    Set selection1 = productDocument1.Selection   
    selection1.Search "CATProductSearch.Part,all"   
    For i = 1 To selection1.Count       
        Set productDocument1 = CATIA.ActiveDocument       
        Set product1 = productDocument1.Product     
        Set products1 = product1.Products       
        Set product2 = products1.Item(selection1.Item(i).Value.Name)         
'product2.Name = selection1.Item(i).Value.Parent.Parent.Name & " / " & selection1.Item(i).Value.Name
        Partnumber = (selection1.Item(i).Value.ReferenceProduct.Name)


      product2.Name = Partnumber & "." & i   
Next
End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lusilnie
Mitglied



Sehen Sie sich das Profil von Lusilnie an!   Senden Sie eine Private Message an Lusilnie  Schreiben Sie einen Gästebucheintrag für Lusilnie

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 15. Jan. 2008 23:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für K.Siebert 10 Unities + Antwort hilfreich

Hallo K.Siebert,

das zweite Script sauber zu erstellen, erfordert schon etwas mehr Programmierung.
Der Ansatz wäre hier z.B., Arrays zu definieren, in denen Du die schon erfassten Parts/Products protokollierst und die dazu erfassten Instanzen mitzählst. Dann kannst du auch den Instanzen immer eine eindeutige Nummer vergeben.
Zumindest in der Theorie funktioniert das, in der Praxis musst Du noch den Fehler abfangen, eine Instanz mit einer Instanznummer zu versehen, die es im noch nicht abgearbeiteten Teil der Struktur schon gibt.

Leider kann ich Dir aus Wettbewerbs-/Arbeitsrechts-Gründen kein fertiges Script zur Verfügung stellen, sondern nur helfen bei der Fehlerbeseitigung.


mfg,
Lusilnie

------------------

Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ize
Mitglied
Student


Sehen Sie sich das Profil von ize an!   Senden Sie eine Private Message an ize  Schreiben Sie einen Gästebucheintrag für ize

Beiträge: 28
Registriert: 27.09.2007

erstellt am: 16. Jan. 2008 16:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für K.Siebert 10 Unities + Antwort hilfreich

mit nem hash bzw dictionary gehts einfacher als mit arrays 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

K.Siebert
Mitglied
Tech Zeichner


Sehen Sie sich das Profil von K.Siebert an!   Senden Sie eine Private Message an K.Siebert  Schreiben Sie einen Gästebucheintrag für K.Siebert

Beiträge: 415
Registriert: 19.05.2007

Win XP
Catia V5 R19
Catia V5 R24

erstellt am: 16. Jan. 2008 17:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Lusilnie , ize

Ja ich verstehe Lusilinie !!!??!!!
Aber Trotzdem habe ich dann schon mal einen Anfang.
Mann da Habe ich ja noch ein ganzes Stück Arbeit vor mir, denn momentan verstehe ich noch nicht wovon ihr da Schreibt.
Kann mir jemand eine gute Lektüre empfehlen, habe schon ein Buch von Hanser (Makroprogramierung mit VB) ist aber nicht so der Knüller.


Bin für jede Unterstützung Dankbar

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Schabloneur
Mitglied
Konstrukteur, Programmierer


Sehen Sie sich das Profil von Schabloneur an!   Senden Sie eine Private Message an Schabloneur  Schreiben Sie einen Gästebucheintrag für Schabloneur

Beiträge: 19
Registriert: 09.04.2014

Dell Precision T3610
Win7 Pro 64bit
CatiaV5 R19 SP9 H106

erstellt am: 28. Aug. 2014 10:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für K.Siebert 10 Unities + Antwort hilfreich

Moin...

Zitat:
Original erstellt von Lusilnie:
[...]

2.) nur Parts speichern - dann musst Du eben nur Parts speichern:

If TypeName(doc) = PartDocument then doc.SaveAs Datei

[...]

Danach sollte Dein Ergebnis passen.


mfg,
Lusilnie




Falls es noch interessiert (bzw. für die nachfolgenden Generationen):

Es muss natürlich heißen...

Code:
If TypeName(doc) = "PartDocument" Then...

(TypeName gibt einen String zurück)
Sonst passiert bei o.g. Abfrage nix. 

Grüße,
Tilo

------------------
Dem Schabloneur ist nichts zu schwör...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz