Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  CATIA V5 Parameter über Python auslesen

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:  CATIA V5 Parameter über Python auslesen (4099 mal gelesen)
D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 10. Jun. 2010 11:15    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

Liebe Community,

ich befasse mich aufgrund meiner Studienarbeit intensiv mit der CATIA Knowledgeware und wollte nun einen Schritt weiter gehen;
und zwar würde ich gerne mit Python eine kleine Oberfläche programmieren, in der ich einen Wert eingebe und dieser an CATIA übermittelt wird und am Ende ein anderer Paramter, der anhand von dem eingegeben Wert, Konstruktionstabellen, Regeln etc berechnet wird und auf meiner Python- Oberfläche wieder erscheint.

Speziell bei diesem Beispiel: Eingabe des Wertes = Kraft im CATIA Bauteil
Ausgabe: Bolzendurchmesser nach DIN Norm.

"Kraft" und "Bolzendurchmesser" sind beides Parameter in meiner CATIA Baugruppe.
Wie kann ich diese in Python ansprechen/verändern?

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: 10. Jun. 2010 12:38    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 D.S. 10 Unities + Antwort hilfreich

Hallo D.S.,

hier ein Link zum Thema CATIA und Python

Gruß
CAMiCADse

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 10. Jun. 2010 14:28    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

Danke für die Antwort, aber all diese Seiten habe ich schon durchforstet und leider nur einen Code gefunden, mit dem man sich die Parts einer Baugruppe anzeigen lassen kann.
Funktioniert auch wunderbar, aber wie ich über Python auf CATIA-Parameter zugreifen kann habe ich leider noch nicht gefunden...

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 10. Jun. 2010 14: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 Nur für D.S. 10 Unities + Antwort hilfreich

Servus
IMHOIn my humble oppinion (Meiner Meinung nach) sollte die VB-Befehle (siehe V5Automation.chm) in Python ähnlich verwendbar zu sein.
Warum Programmierst du in Python und nicht in VBA?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 15. Jun. 2010 16:44    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

Ich weiß selber nich wieso es Python sein soll - ist die Vorgabe meines Betreuers.
Ist der Zugriff auf Parameter über VBA einfacher?
Und kennst du vielleicht Internetseiten/Bücher/etc., in denen diese Thematik beschrieben wird?

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 15. Jun. 2010 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 Nur für D.S. 10 Unities + Antwort hilfreich

Servus
Bücher siehe: zb catia.cad.de
Handbuch: siehe V5Automation.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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 17. Jun. 2010 16:23    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 nochmal und bisher vielen Dank für die Antworten.

Bin nun zu VBA gewechselt und arbeite mich Stück für Stück in dem Buch "Effiziente Konstruktion mit Makros" von Ziethen durch, komme aber leider nicht allzu weit, vor Allem auch deswegen, weil die Programmierung der Makros nicht zu meinen Aufgaben gehört...

Dennoch brauche ich aber ein Makro, welches beim Ausführen alle Parameter einer geöffneten Baugruppe sucht und eine Liste als txt oder excel datei erzeugt.
Bisher habe ich es geschafft, ein Makro zu programmieren, welches dem User erlaubt, die neu erzeugte Textfile abzuspeichern.
Leider ohne Inhalt...
Wie kann ich alle Parameter automatisch suchen lassen und mit Name, Typ und Wert in dieser Datei ausdrucken?

Ich hoffe, dass meine Frage nicht zu komplex ist...

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 17. Jun. 2010 16:25    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

...bzw die Antwort auf meine Frage nicht den Rahmen sprengt...

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

Christian.O
Mitglied
Konstrukteur


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

Beiträge: 1212
Registriert: 17.07.2009

Celsius-Mobile H720
i7-3840QM
32 Gb Arbeitsspeicher
256 Gb SSD
Quadro K2000M
Windows 7 Professional (64 Bit)
Catia V5R19 (64 Bit)
SpacePilot Pro

erstellt am: 17. Jun. 2010 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 Nur für D.S. 10 Unities + Antwort hilfreich

Servus,

wenn du als Suchbegriff "Excel" eingibst, wirst du einiges finden, dass in deine Richtung geht.

------------------
Mit freundlichen Grüßen aus Tirol
Christian Obholzer

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

EngineeredByRobberts
Mitglied
Ingenieur


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

Beiträge: 109
Registriert: 27.04.2010

Dell Precision 690
Windows XP
V5R19SP3 V5R17SP0

erstellt am: 17. Jun. 2010 16:59    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 D.S. 10 Unities + Antwort hilfreich

Hier ein kleines Beispiel:

Option Explicit
Language="CATSCRIPT"

Sub CATMain()

Dim productDocument1 As Document
Dim selection1 As Selection
Dim I As Integer
Dim TextFile1 As File
Dim fileSys As FileSystem
Dim oStream As TextStream
Dim Outputtxt, Tmptxt As String
Dim param1 As Parameter

Set fileSys = CATIA.FileSystem
Set productDocument1 = CATIA.ActiveDocument


Outputtxt = productDocument1.Path & "\DeinTextFile.txt"
Set TextFile1 = fileSys.CreateFile(Outputtxt, True)
Set oStream = TextFile1.OpenAsTextStream("ForWriting")


Set selection1 = productDocument1.Selection

selection1.Search "CATKnowledgeSearch.InternalParameter,all"    '****Parameter suchen

For I= 1 To selection1.Count2

  Set param1 = selection1.Item(I).Value

  If param1.UserAccessMode = 2 Then                '*****nur UserParameter
 
      Outputtxt = param1.Name & " = " & param1.ValueAsString
      oStream.Write Outputtxt & Chr(13) & Chr(10)

  End If

Next

selection1.Clear

End Sub

------------------
- Robert

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 22. Jun. 2010 13: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

vielen Dank, funktioniert einwandfrei!

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 22. Jun. 2010 15:03    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

For I = 1 To selection1.Count2
  Set param1 = selection1.Item(I).Value
  If param1.UserAccessMode = 2 Then                                'nur UserParameter
      Outputtxt = param1.Name & " = " & param1.ValueAsString
      oStream.Write Outputtxt & Chr(13) & Chr(10)
  End If


In der For-Schleife habe ich ja die Bedingung, dass nur die Parameter berücksichtigt werden, auf die ich vollen Zugriff habe (UserAccessMode=2), was nichts anderes heißt, dass ich diese Parameter selbst erstellt habe.
Aber wie muss die Bedingung heißen, wenn ich bspw nur Winkel haben möchte? Oder nur Parameter des Typs Dichte? Also auch die Parameter, die ich NICHT selbst erstellt habe?!

[Diese Nachricht wurde von D.S. am 22. Jun. 2010 editiert.]

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 22. Jun. 2010 18:22    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 D.S. 10 Unities + Antwort hilfreich

Hallo D.S.,

mit TypeName(oParam) bekommst du den Datentyp. Die von dir erwähnte Parametertype wie Winkel und Dichte sind alle vom Typ Dimension.
Den spezifischen Typ kannst du mit
ElseIf strDatatype = "Dimension" Then
        Dim oDimParam As Dimension
        Set oDimParam = oParam
        strTemp = oDimParam.Unit.Magnitude & ";"
ausfinden.

Gruß,
Zoltan

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 23. Jun. 2010 16:05    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 Zoltan.

Danke für deine Antwort aber leider reichen meine Programmierkenntnisse nicht aus, um den Code vollkommen zu verstehen...
Könntest du mir bitte anstatt folgender Bedingung, die nur die UserParameter selektiert

If param1.UserAccessMode = 2 Then                               
...
End If

eine spezielle Bedingung zeigen, die beispielsweise aus allen Parametern nur die Längen-Paramter rauspickt?

Also komplett amateurhaft so etwas wie:

If param1.PARAMETERTYP = LÄNGE/WINKEL/etc. THEN
...
End If

oder kann man das nicht so direkt filtern?!

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

EngineeredByRobberts
Mitglied
Ingenieur


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

Beiträge: 109
Registriert: 27.04.2010

Dell Precision 690
Windows XP
V5R19SP3 V5R17SP0

erstellt am: 23. Jun. 2010 16:29    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 D.S. 10 Unities + Antwort hilfreich

Längen und Winkel sind einfach:

If TypeName(param1) = "Length"  Then

If TypeName(param1) = "Angle"  Then

------------------
- Robert

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 23. Jun. 2010 19:47    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 D.S. 10 Unities + Antwort hilfreich

Hallo,

so einfach ist die Sache leider nicht.
ich würde es in zwei ineinander verschachtelte ifs machen:

Code:
if TypeName(param1) = "Dimension" then 'Länge, Winkel und andere Parameter mit Einheit haben in VB(A) den Datentyp "Dimenion"
  Dim oDimParam As Dimension
  Set oDimParam = param1 'dieser Schritt würde aber Fehler bringen, wenn es kein "Dimension" wäre
  if lcase(oDimParam.Unit.Magnitude)="length" then
    'du hast ein Parameter der Typ Länge
    'LCase ist nur für die Vereinfachung drin
    'andere Typen kannst du ausfinden, indem du diese Information für Parameter mit bekannter Typ ausgeben lässt
  end if
end if


Gruß,
Zoltan

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 29. Jun. 2010 12:10    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 für eure Hilfe aber leider klappt gar nichts... Schreibe ich  einen Code um mir die Längen auslesen zu lassen kommen 4 zeilen mit parametern wie biegeschwellfestigkeit und zulässiger spannung. sind nicht ganz Parameter des Typs länge 

hier mein Code: habe ich irgendwo einen Fehler, den ich nicht sehe oder sehen kann?!

Code:
Sub CATMain()
Dim productDocument1 As Document
Dim selection1 As Selection                                       
Dim I As Integer                                                   
Dim TextFile1 As File
Dim fileSys As Object
Dim oStream As TextStream
Dim Outputtxt, Tmptxt As String                                   
Dim param1 As Parameter                                           

Set fileSys = CATIA.FileSystem
Set productDocument1 = CATIA.ActiveDocument

Outputtxt = productDocument1.Path & "\UserParameter_VBA.txt"
Set TextFile1 = fileSys.CreateFile(Outputtxt, True)
Set oStream = TextFile1.OpenAsTextStream("ForWriting")

Set selection1 = productDocument1.Selection

selection1.Search "CATKnowledgeSearch.InternalParameter,all"

For I = 1 To selection1.Count2

  Set param1 = selection1.Item(I).Value

  If TypeName(param1) = "Dimension" Then
    Dim oDimParam As Dimension
    Set oDimParam = param1
    If LCase(oDimParam.Unit.Magnitude) = "Length" Then
      Outputtxt = param1.Name & " = " & param1.ValueAsString       
      oStream.Write Outputtxt & Chr(13) & Chr(10)
    End If

  End If
Next
selection1.Clear
MsgBox "UserParameter.txt im Ordner  " & (productDocument1.Path) & "  gespeichert"
End Sub


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

EngineeredByRobberts
Mitglied
Ingenieur


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

Beiträge: 109
Registriert: 27.04.2010

Dell Precision 690
Windows XP
V5R19SP3 V5R17SP0

erstellt am: 29. Jun. 2010 12:40    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 D.S. 10 Unities + Antwort hilfreich

So wie unten funktioniert es bei mir einwandfrei, ist aber wie oben schon erwähnt nur bei Längen und Winkel so einfach.

Sub CATMain()
Dim productDocument1 As Document
Dim selection1 As Selection                                     
Dim I As Integer                                                 
Dim TextFile1 As File
Dim fileSys As Object
Dim oStream As TextStream
Dim Outputtxt, Tmptxt As String                                 
Dim param1 As Parameter                                         

Set fileSys = CATIA.FileSystem
Set productDocument1 = CATIA.ActiveDocument

Outputtxt = productDocument1.Path & "\UserParameter_VBA.txt"
Set TextFile1 = fileSys.CreateFile(Outputtxt, True)
Set oStream = TextFile1.OpenAsTextStream("ForWriting")

Set selection1 = productDocument1.Selection

selection1.Search "CATKnowledgeSearch.InternalParameter,all"

For I = 1 To selection1.Count2

  Set param1 = selection1.Item(I).Value

  If TypeName(param1) = "Length" Then
      Outputtxt = param1.Name & " = " & param1.ValueAsString     
      oStream.Write Outputtxt & Chr(13) & Chr(10)
  End If


Next
selection1.Clear
MsgBox "UserParameter.txt im Ordner  " & (productDocument1.Path) & "  gespeichert"
End Sub

------------------
- Robert

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

EngineeredByRobberts
Mitglied
Ingenieur


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

Beiträge: 109
Registriert: 27.04.2010

Dell Precision 690
Windows XP
V5R19SP3 V5R17SP0

erstellt am: 29. Jun. 2010 12:43    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 D.S. 10 Unities + Antwort hilfreich

ich denke 'Magnitude' ist sprachabhängig und sollte bei dir warscheinlich "länge" anstatt "Length" sein?

------------------
- Robert

[Diese Nachricht wurde von EngineeredByRobberts am 29. Jun. 2010 editiert.]

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 29. Jun. 2010 12: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

habe ich auch schon ausprobiert, leider ohne erfolg...

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

EngineeredByRobberts
Mitglied
Ingenieur


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

Beiträge: 109
Registriert: 27.04.2010

Dell Precision 690
Windows XP
V5R19SP3 V5R17SP0

erstellt am: 29. Jun. 2010 12:57    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 D.S. 10 Unities + Antwort hilfreich

Hab gerade noch mal rumprobiert, und Längen sind vom Typ 'Length' und NUR vom Typ 'Length' und NICHT vom Typ 'Dimension'
'If TypeName(param1) = "Length" Then' funktioniert einwandfrei, das mit Unit.Magnitude kannst du dich bei Längen sparen

------------------
- Robert

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 29. Jun. 2010 12:58    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 D.S. 10 Unities + Antwort hilfreich

Servus
Du müsstest doch "länge" oder "lenght" schreiben (Kleinschreibung), da du zuvor den String mit LCase konvertiert hast.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 29. Jun. 2010 13: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

was mich aber auch bei diesem Code verwundert:
Code:

Set param1 = selection1.Item(I).Value
If TypeName(param1) = "Length" Then
  Outputtxt = param1.Name & " = " & param1.ValueAsString   
  oStream.Write Outputtxt & Chr(13) & Chr(10)
End If

gehe ich über den formel/parametereditor auf den filtertyp länge bekomme ich etwa das 10-fache an parametern als über das makro. woran könnte das nun liegen?!

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 29. Jun. 2010 13:09    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

Zitat:
Original erstellt von bgrittmann:
Servus
Du müsstest doch "länge" oder "lenght" schreiben (Kleinschreibung), da du zuvor den String mit LCase konvertiert hast.

Gruß
Bernd


LCase konvertiert den String automatisch in kleinbuchstaben. was aber auch komisch ist, da es bei mir nur mit "Length" funktioniert 

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

EngineeredByRobberts
Mitglied
Ingenieur


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

Beiträge: 109
Registriert: 27.04.2010

Dell Precision 690
Windows XP
V5R19SP3 V5R17SP0

erstellt am: 29. Jun. 2010 13: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 D.S. 10 Unities + Antwort hilfreich

das liegt an der Suche selection1.Search "CATKnowledgeSearch.InternalParameter,all"

Längen aus Skizzen findest du zum Beispiel über:
selection1.Search "CATSketchSearch.MfLengthConstraint,all"

------------------
- Robert

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

D.S.
Mitglied
Student


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

Beiträge: 18
Registriert: 26.05.2010

erstellt am: 29. Jun. 2010 14:29    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

erneut herzlichen Dank für all die Antworten, ich habe nun fast alles was ich brauche um meine eigentliche Arbeit fortzuführen. Beim folgenden Code bekomme ich noch die Fehlermeldung "Typen unverträglich", die ich noch gerne weg haben würde, hoffe ihr könnt mir ein letztes mal helfen bitte!

Code:
Sub CATMain()
Dim productDocument1 As Document
Dim selection1 As Selection
Dim I As Integer
Dim TextFile1 As File
Dim fileSys As Object
Dim oStream As TextStream
Dim Outputtxt, Tmptxt As String
Dim param1 As Parameter

Set fileSys = CATIA.FileSystem
Set productDocument1 = CATIA.ActiveDocument

Outputtxt = productDocument1.Path & "\LengthParameter_VBA.txt"
Set TextFile1 = fileSys.CreateFile(Outputtxt, True)
Set oStream = TextFile1.OpenAsTextStream("ForWriting")

Set selection1 = productDocument1.Selection

selection1.Search "CATSketchSearch.MfLengthConstraint,all"    'dieses Makro soll sich auf Längen beschränken

For I = 1 To selection1.Count2

  Set param1 = selection1.Item(I).Value                      'in dieser zeile versteckt sich ein Fehler...'
  If TypeName(param1) = "Length" Then
      Outputtxt = param1.Name & " = " & param1.ValueAsString
      oStream.Write Outputtxt & Chr(13) & Chr(10)                                                         
  End If
Next
selection1.Clear
MsgBox "UserParameter.txt im Ordner  " & (productDocument1.Path) & "  gespeichert"
End Sub


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

EngineeredByRobberts
Mitglied
Ingenieur


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

Beiträge: 109
Registriert: 27.04.2010

Dell Precision 690
Windows XP
V5R19SP3 V5R17SP0

erstellt am: 29. Jun. 2010 15:05    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 D.S. 10 Unities + Antwort hilfreich

du suchst halt jetzt nach Constraints und nicht nach Parameter, deswegen muss der Typ jetzt auf Constraint umgestellt werden.
Der 'If Then' Schleife kannst du dich sparen da du schon nach Constraints vom Typ Length gesucht hast.

Sub CATMain()
Dim productDocument1 As Document
Dim selection1 As Selection                                     
Dim I As Integer                                                 
Dim TextFile1 As File
Dim fileSys As Object
Dim oStream As TextStream
Dim Outputtxt, Tmptxt As String                                 
Dim constraint1 As Constraint                                         

Set fileSys = CATIA.FileSystem
Set productDocument1 = CATIA.ActiveDocument

Outputtxt = productDocument1.Path & "\UserParameter_VBA.txt"
Set TextFile1 = fileSys.CreateFile(Outputtxt, True)
Set oStream = TextFile1.OpenAsTextStream("ForWriting")

Set selection1 = productDocument1.Selection

selection1.Search "CATSketchSearch.MfLengthConstraint,all"

For I = 1 To selection1.Count2

  Set constraint1 = selection1.Item(I).Value 
  Outputtxt = constraint1.Name & " = " & constraint1.Dimension.ValueAsString     
  oStream.Write Outputtxt & Chr(13) & Chr(10)
   
Next
selection1.Clear
MsgBox "UserParameter.txt im Ordner  " & (productDocument1.Path) & "  gespeichert"
End Su

------------------
- Robert

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