Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  User defined properties in allen Parts/Unterproducts schreiben

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:  User defined properties in allen Parts/Unterproducts schreiben (837 / mal gelesen)
wsapala
Mitglied


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

Beiträge: 5
Registriert: 07.03.2017

erstellt am: 07. Mrz. 2017 17: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

Hallo hier!

Ich habe mir gerade die Finger Wund gesucht aber meine Programmierkenntnisse sind dermaßen eingerostet, dass ich quasi wieder am Anfang stehe.

Ich möchte bestimmte User-Defined Properties bei allen Parts/Products eines geöffneten Hauptproducts schreiben.

Bisher habe ich mir einen Code definiert, der das bei einem geöffneten Part soweit ganz gut macht. Würde das jetzt gerne per Stapelverarbeitung bei allen durchlaufen lassen mit einer For-Schleife, aber da hänge ich auch schon.


Hier der Code:
ub CATMain()
'Dokument geöffnet?
If CATIA.Documents.Count = 0 Then
    Box = MsgBox("Es wurde kein aktives Dokument identifiziert" + Chr(10) + "Bitte oeffnen Sie zuerst ein Dokument und starten Sie dann das Makro erneut", vbInformation, "Hinweis")
    Exit Sub
End If
Dim oDocument As Document
Set oDocument = CATIA.ActiveDocument
'Part geöffnet?
'Start
Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument
Dim product1 As Product
Set product1 = oDocument.Product
on error resume next
Dim parameters1 As Parameters
Set parameters1 = product1.UserRefProperties


Set strParameter = parameters1.Item("THICKNESS/DIAMETER")
    if err.number <> 0 then
      Set strParameter = parameters1.CreateString("THICKNESS/DIAMETER", "")
      err.clear
    end if

Set strParameter = parameters1.Item("LENGHT")
    if err.number <> 0 then
      Set strParameter = parameters1.CreateString("LENGHT", "")
      err.clear
    end if

Set strParameter = parameters1.Item("WIDTH")
    if err.number <> 0 then
      Set strParameter = parameters1.CreateString("WIDTH", "")
      err.clear
    end if

Set strParameter = parameters1.Item("MASS")
    if err.number <> 0 then
      Set strParameter = parameters1.CreateString("MASS", "")
      err.clear
    end if

Set strParameter = parameters1.Item("PROGRAMM")
    if err.number <> 0 then
      Set strParameter = parameters1.CreateString("PROGRAMM", "")
      err.clear
    end if

Set strParameter = parameters1.Item("PROJEKT")
    if err.number <> 0 then
      Set strParameter = parameters1.CreateString("PROJEKT", "")
      err.clear
    end if

Set strParameter = parameters1.Item("KONSTRUKTEUR")
    if err.number <> 0 then
      Set strParameter = parameters1.CreateString("KONSTRUKTEUR", "")
      err.clear
    end if


Box = MsgBox("Makro erfolgreich", vbInformation, "Hinweis")
on error goto 0
End Sub

Könnt ihr mir einen Tipp gehen, wie ich weiter arbeiten muss oder beim Code helfen? Danke!

Viele Grüße

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 07. Mrz. 2017 18: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 wsapala 10 Unities + Antwort hilfreich

Hi wsapala,

- Schleife über alle geladenen Docs
- bearbeitet werden zZt ausschliesslich Products

Code:

Sub CATMain()
   Dim oDoc As Document
   Dim partDocument1 As Document
   Dim product1 As Product
   Dim parameters1 As Parameters

   'Dokument geöffnet?
   If CATIA.Documents.Count = 0 Then
      MsgBox "Es wurde kein aktives Dokument identifiziert" & vbCrLf & _
             "Bitte oeffnen Sie zuerst ein Dokument und starten Sie dann das Makro erneut", _
             vbInformation, "Hinweis"
      Exit Sub
   End If

   For Each oDoc In CATIA.Documents
      Select Case TypeName(oDoc)
         Case "ProductDocument"
            Set product1 = oDoc.Product
            On Error Resume Next
            Set parameters1 = product1.UserRefProperties

            Set strParameter = parameters1.Item("THICKNESS/DIAMETER")
            If Err.Number <> 0 Then
               Set strParameter = parameters1.CreateString("THICKNESS/DIAMETER", "")
               Err.Clear
            End If

            Set strParameter = parameters1.Item("LENGHT")
            If Err.Number <> 0 Then
               Set strParameter = parameters1.CreateString("LENGHT", "")
               Err.Clear
            End If

            Set strParameter = parameters1.Item("WIDTH")
            If Err.Number <> 0 Then
               Set strParameter = parameters1.CreateString("WIDTH", "")
               Err.Clear
            End If

            Set strParameter = parameters1.Item("MASS")
            If Err.Number <> 0 Then
               Set strParameter = parameters1.CreateString("MASS", "")
               Err.Clear
            End If

            Set strParameter = parameters1.Item("PROGRAMM")
            If Err.Number <> 0 Then
               Set strParameter = parameters1.CreateString("PROGRAMM", "")
               Err.Clear
            End If

            Set strParameter = parameters1.Item("PROJEKT")
            If Err.Number <> 0 Then
               Set strParameter = parameters1.CreateString("PROJEKT", "")
               Err.Clear
            End If

            Set strParameter = parameters1.Item("KONSTRUKTEUR")
            If Err.Number <> 0 Then
               Set strParameter = parameters1.CreateString("KONSTRUKTEUR", "")
               Err.Clear
            End If

         Case "PartDocument"
            'do nothing
         Case "DrawingDocument"
            'do nothing
      End Select
   Next

   MsgBox "Makro beendet", vbInformation, "Hinweis"
   'On Error GoTo 0                       'unnötig, da makro zuende
End Sub



An Catparts darfst Dich selbst versuchen. :-)

Tschau,
Joe

PS: Unter 'Stapelverarbeitung' verstehe ich was anderes(Batch; '.bat')

------------------
Inoffizielle Catia Hilfeseite

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

wsapala
Mitglied


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

Beiträge: 5
Registriert: 07.03.2017

erstellt am: 08. Mrz. 2017 11:31    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, vielen lieben Dank schonmal es funktioniert bei BG wunderpar. Mit den Parts hänge ich noch. Habe im Dezember überhaupt erst mit CATIA angefangen und vor 8 Jahren mal Matlab gemacht daher muss ich mich da jetzt noch reinfinden, habe aber eben auch direkt Projektdruck.

Sub CATMain()
  Dim oDoc As Document
  Dim product1 As Product
  Dim parameters1 As Parameters

  'Dokument geöffnet?
  If CATIA.Documents.Count = 0 Then
      MsgBox "Es wurde kein aktives Dokument identifiziert" & vbCrLf & _
            "Bitte oeffnen Sie zuerst ein Dokument und starten Sie dann das Makro erneut", _
            vbInformation, "Hinweis"
      Exit Sub
  End If
  For Each oDoc In CATIA.Documents
      Select Case TypeName(oDoc)
        Case "ProductDocument"
            Set product1 = oDoc.Product
            On Error Resume Next
            Set parameters1 = product1.UserRefProperties
Set product1 = oDoc.Product
            On Error Resume Next
            Set parameters1 = product1.UserRefProperties
            Set strParameter = parameters1.Item("THICKNESS/DIAMETER")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("THICKNESS/DIAMETER", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("LENGHT")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("LENGHT", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("WIDTH")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("WIDTH", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("MASS")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("MASS", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("PROGRAMM")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("PROGRAMM", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("PROJEKT")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("PROJEKT", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("KONSTRUKTEUR")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("KONSTRUKTEUR", "")
              Err.Clear
            End If
       
Select Case TypeName(oDoc)
Case "PartDocument"
        Dim partDocument1 As Document
  Set partDocument1 = oDoc.Product
            On Error Resume Next
            Set parameters1 = product1.UserRefProperties
Set product1 = oDoc.Part
            On Error Resume Next
            Set parameters1 = product1.UserRefProperties
            Set strParameter = parameters1.Item("THICKNESS/DIAMETER")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("THICKNESS/DIAMETER", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("LENGHT")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("LENGHT", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("WIDTH")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("WIDTH", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("MASS")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("MASS", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("PROGRAMM")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("PROGRAMM", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("PROJEKT")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("PROJEKT", "")
              Err.Clear
            End If
            Set strParameter = parameters1.Item("KONSTRUKTEUR")
            If Err.Number <> 0 Then
              Set strParameter = parameters1.CreateString("KONSTRUKTEUR", "")
              Err.Clear
            End If
        Case "DrawingDocument"
            'do nothing
      End Select
  'Next
  MsgBox "Makro beendet", vbInformation, "Hinweis"
End Sub

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

wsapala
Mitglied


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

Beiträge: 5
Registriert: 07.03.2017

erstellt am: 08. Mrz. 2017 11:32    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

Würde sich dieses Skript auch durch alle Teile eines Dokumentes samt Unterbaugruppen/Parts arbeiten, wenn es auch mit Parts funktioniert?

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: 08. Mrz. 2017 11: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 wsapala 10 Unities + Antwort hilfreich

Servus
Dass das Makro nur bei CATProducts funktioniert liegt wohl daran, dass bei CATParts beim Namen der Parameter auch die PartNumber mit drinnen ist (zB "Part6/MeinParameter).
Hier findest du ein Lösung wie du das angehen könntest.
Wenn du über eine Schleife der Documents-Collection arbeitest werden alle geöffneten Dokumente (auch parallel geöffnete CATProducts/CATParts) abgearbeitet. (ggf nicht gewünscht)

Gruß
Bernd

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

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

wsapala
Mitglied


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

Beiträge: 5
Registriert: 07.03.2017

erstellt am: 08. Mrz. 2017 12: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

Danke, ich schaue mich durch. Gibt es die Möglichkeit die Dokumente nacheinander aktiv zu setzen und anschließend die Eigenschaften des aktiven Dokuments abzufragen?

Ich muss mal nach der Collection suchen. Das wäre auch kein Problem, kann man ja steuern was offen ist 

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: 08. Mrz. 2017 13: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 wsapala 10 Unities + Antwort hilfreich

Servus
In deinem Code werden schon alle geöffneten Dokumente (auch die in deiner Baugruppe vorhanden sind) abgearbeitet.
Dokumente aktiv zu setzen ist in den wenigsten fällen notwendig (eher langsam).

Gruß
Bernd

PS: Bitte mal Systeminfo ausfüllen und in Zukunft den Code in den entsprechenden Tags posten.

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

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

joehz
Moderator
Freiberuflicher Konstrukteur


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

Beiträge: 1057
Registriert: 25.11.2006

Win7 Pro 64 + Ubuntu + Irix6.5.20
Dell Precision M6600 i7-2960XM 2.7GHz 16GB
NVidia Quadro M5010
Catia V5R19
VB6Pro.SP6/VBA 6.5.1053

erstellt am: 08. Mrz. 2017 14: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 Nur für wsapala 10 Unities + Antwort hilfreich

Hi,

gefordert war, dass Du Dich mit der Syntax von SeelctCase-Entscheidungsstrukturen befasst.

War:

Code:

For Each oDoc In CATIA.Documents
      Select Case TypeName(oDoc)
         Case "ProductDocument"
         .
         .
         .
         Case "PartDocument"
            'do nothing
         Case "DrawingDocument"
            'do nothing
      End Select
   Next


Soll:
Code:

For Each oDoc In CATIA.Documents
      Select Case TypeName(oDoc)
         Case "ProductDocument","PartDocument"
         .
         .
         .
         Case "DrawingDocument"
            'do nothing
         Case Else
            'do nothing
      End Select
   Next


oder die Zeilen
Code:

      Select Case TypeName(oDoc)
         Case "ProductDocument"


und
Code:

         Case "PartDocument"
            'do nothing
         Case "DrawingDocument"
            'do nothing
      End Select


einfach rauswerfen/auskommentieren.

Das Ergebnis ist in beiden Fällen gleich.
Products und Parts werden bearbeitet, Drawings nicht.

Eingerostet oder Nicht vorhanden?

Tschau,
Joe

---edit---
Eines hab ich noch vergessen:
Die Teile müssen in Representations/Design Mode gesetzt sein.


------------------
Inoffizielle Catia Hilfeseite

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

wsapala
Mitglied


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

Beiträge: 5
Registriert: 07.03.2017

erstellt am: 13. Mrz. 2017 12:50    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, super es klappt einwandfrei jetzt. Dachte erst dass ich mehr übertragen kann von Matlab aber habe dann doch ziemlich ratlos dagewesenen als die Fehler kamen. Werde mal mach Lektüre schauen. Danke!

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