Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Properties im Part erzeugen

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:  Properties im Part erzeugen (2889 mal gelesen)
Sven2010
Mitglied



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

Beiträge: 56
Registriert: 20.04.2010

V5R19SP3
Hotfix 50

erstellt am: 29. Apr. 2010 14:36    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 Leute,

habe schon wieder ein kleines Problem und hoffe, ihr könnt mir schnell helfen 

Ich erzeuge im Part unter Properties eigene Parameter (also nicht im Baum sondern in den Properties).
Das funktioniert auch recht gut.
Mein Problem: Führe ich mein Makro mehrfach aus, erzeugt er die Properties ebenso oft :-(

Habe nun im Forum schon ein Script gefunden und folgendermaßen umgebaut:


Language="VBSCRIPT"

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim product1 As CATBaseDispatch
Set product1 = partDocument1.GetItem("")


product1.PartNumber = "XXXXXX-X"

'Sub ParameterErzeugen()


Dim parameters1 As Parameters
Set parameters1 = product1.UserRefProperties

'***** Routine
Parameter_vorhanden = False

For i = 1 To parameters1.Count
      Z = InStr(1, parameters1.Item(i).Name, "CLASSIFICATION_CODE")
      If Z <> 0 Then
          Parameter_vorhanden = True
      End If
Next


For i = 2 To parameters1.Count
      Z = InStr(1, parameters1.Item(i).Name, "COMMENT")
      If Z <> 0 Then
          Parameter_vorhanden = True
      End If
Next


Dim strParam1 As StrParam
If Parameter_vorhanden then
        Set strParam1 = parameters1.Item("CLASSIFICATION_CODE")
Else
        Set strParam1 = parameters1.CreateString("CLASSIFICATION_CODE", "")
        strParam1.Rename "CLASSIFICATION_CODE"
End If

strParam1.Value = ""


Dim strParam2 As StrParam
If Parameter_vorhanden then
        Set strParam2 = parameters1.Item("COMMENT")
Else
        Set strParam2 = parameters1.CreateString("COMMENT", "")
End If

strParam2.Value = ""


End Sub

Lasse ich das Macro 2 Mal drüber laufen ist alles ok, d.h. die Properties werden nicht noch einmal angelegt.
Ist jedoch ein property nicht vorhanden (z.B. CLASSIFICATION_CODE), legt er dieses an aber auch das Property COMMENT ein zweites Mal 

Lösche ich COMMENT sodass nur noch der CLASSIFICATION_CODE vorhanden ist, stockt das Macro...

Irgendwie stimmt meine Schleife oder mein Ablauf nicht!
Jedem eine Idee was flasch ist in meinem Script?

Ihr würdet mir sehr helfen; eigentlich sollte ich das Script heute fertigstellen...

Danke und Gruß
Sven

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. Apr. 2010 15: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 Nur für Sven2010 10 Unities + Antwort hilfreich

du benutzt zweimal 'Parameter_vorhanden = True'
benutze lieber in deine 1te und 2te Schleife unterschiedliche Variabelen

..
'Parameter_vorhanden1 = True'
..
..
'Parameter_vorhanden2 = True'

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

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

Sven2010
Mitglied



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

Beiträge: 56
Registriert: 20.04.2010

V5R19SP3
Hotfix 50

erstellt am: 29. Apr. 2010 15: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

Hi,

danke erst einaml für deine schnell Antwort.
Mein Script sieht jetzt so aus:

Sub CATMain()


Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim product1 As CATBaseDispatch
Set product1 = partDocument1.GetItem("")


product1.PartNumber = "XXXXXX-X"


'Sub ParameterErzeugen()


Dim parameters1 As Parameters
Set parameters1 = product1.UserRefProperties

'***** Routine
Parameter_vorhanden1 = False
Parameter_vorhanden2 = False
Parameter_vorhanden3 = False

For i = 1 To parameters1.Count
      Z = InStr(1, parameters1.Item(i).Name, "CLASSIFICATION_CODE")
      If Z <> 0 Then
          Parameter_vorhanden1 = True
      End If
Next

For i = 2 To parameters1.Count
      Z = InStr(1, parameters1.Item(i).Name, "COMMENT")
      If Z <> 0 Then
          Parameter_vorhanden2 = True
      End If
Next

For i = 3 To parameters1.Count
      Z = InStr(1, parameters1.Item(i).Name, "CAD_ENVIRONMENT")
      If Z <> 0 Then
          Parameter_vorhanden3 = True
      End If
Next


Dim strParam1 As StrParam
If Parameter_vorhanden1 then
        Set strParam1 = parameters1.Item("CLASSIFICATION_CODE")
Else
        Set strParam1 = parameters1.CreateString("CLASSIFICATION_CODE", "")
        strParam1.Rename "CLASSIFICATION_CODE"
End If

strParam1.Value = ""


Dim strParam2 As StrParam
If Parameter_vorhanden2 then
        Set strParam2 = parameters1.Item("COMMENT")
Else
        Set strParam2 = parameters1.CreateString("COMMENT", "")
End If

strParam2.Value = ""


Dim strParam3 As StrParam
If Parameter_vorhanden3 then
        Set strParam3 = parameters1.Item("CAD_ENVIRONMENT")
Else
        Set strParam3 = parameters1.CreateString("CAD_ENVIRONMENT", "")
End If

strParam3.Value = ""

End Sub

Erzeuge 3 Properties. Beim nächsten Ausführen alles i.O., kein property wird erneut erzeugt.
Lösche ich aber bspw. das property COMMENT, wird beim nächsten Ausführen leider nicht nur dieses hinzugefügt, sondern auch ein 2. mal das property CAD_ENVIRONMENT...

Weiss nicht weiter...

Gruß
Sven

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. Apr. 2010 16: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 Sven2010 10 Unities + Antwort hilfreich

du solltest in alle drei Schleifen bei I=1 anfangen

Wenn du 'CLASSIFICATION_CODE' gelöscht hast, wird 'COMMENT' automatisch Item(1)

------------------
- 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. Apr. 2010 16:14    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 Sven2010 10 Unities + Antwort hilfreich

du solltest in alle drei Schleifen bei I=1 anfangen

Wenn du 'CLASSIFICATION_CODE' gelöscht hast, wird 'COMMENT' automatisch Item(1)

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

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

Sven2010
Mitglied



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

Beiträge: 56
Registriert: 20.04.2010

V5R19SP3
Hotfix 50

erstellt am: 29. Apr. 2010 19: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

Hi,

vielen vielen Dank, jetzt läuft das Ganze :-)

Hab jedoch noch ein Problem:

Handelt es sich beim Property um eines mit multiple values, stockt das Script wenn ich das Property lösche an folgender Stelle:

        Set strParam19 = parameters1.Item("FINISH")

Abfrage ob vorhanden sieht so aus:

For i = 1 To parameters1.Count
      Z = InStr(1, parameters1.Item(i).Name, "FINISH")
      If Z <> 0 Then
          Parameter_vorhanden19 = True
      End If
Next

Erzeugung so:

Dim strParam19 As StrParam
If Parameter_vorhanden19 then
        Set strParam19 = parameters1.Item("FINISH")
Else
        Set strParam19 = parameters1.CreateString("FINISH", "")
End If

Dim arrayOfVariantOfBSTR19(11)
arrayOfVariantOfBSTR19(0) = ""
arrayOfVariantOfBSTR19(1) = "zinc plated / passivated colourless"
arrayOfVariantOfBSTR19(2) = "zinc plated / passivated colourless / sealed colourless"
arrayOfVariantOfBSTR19(3) = "mechanical zinc plated / passivated colourless"
arrayOfVariantOfBSTR19(4) = "metallic corrosion protection coated, colour silver"
arrayOfVariantOfBSTR19(5) = "metallic corrosion protection coated, colour silver, lubricated"
arrayOfVariantOfBSTR19(6) = "metallic corrosion protection coated, colour black"
arrayOfVariantOfBSTR19(7) = "metallic corrosion protection coated, colour black, lubricated"
arrayOfVariantOfBSTR19(8) = "phosphated"
arrayOfVariantOfBSTR19(9) = "phosphated / oiled"
arrayOfVariantOfBSTR19(10) = "washed"
arrayOfVariantOfBSTR19(11) = "oiled"
strParam19.SetEnumerateValues arrayOfVariantOfBSTR19

strParam19.Value = ""

Bei Properties ohne Multiple Values läuft es einwandfrei.
Eine Idee an was dies liegen könnte?

Danke und Gruß
Sven

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. Apr. 2010 20:21    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 Sven2010 10 Unities + Antwort hilfreich

mich wundert es das du es im Makro überhaupt schaffst ein Property mit multiple values zu erstellen, Im 'normalen' Catia geht das meines Wissens nicht.

edit: klar geht das, mein fehler

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

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

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

Sven2010
Mitglied



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

Beiträge: 56
Registriert: 20.04.2010

V5R19SP3
Hotfix 50

erstellt am: 29. Apr. 2010 20: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

Auch keine Idee warum das nicht geht?

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. Apr. 2010 21:14    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 Sven2010 10 Unities + Antwort hilfreich

hast du denn vorher Parameter_vorhanden19 = False gestellt?
wenn der Parameter gelöscht ist, dürfte deine If Then Bedingung für Set strParam19 = parameters1.Item("FINISH")gar nicht erfüllt werden, sondern er müsste 'else' durchlaufen

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

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

Sven2010
Mitglied



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

Beiträge: 56
Registriert: 20.04.2010

V5R19SP3
Hotfix 50

erstellt am: 29. Apr. 2010 21: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


attributes.zip

 
eigentlich schon!
hab mein script mal angehängt wäre super wenn mal drüber schauen könntest evtl. siehst du den Fehler!

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. Apr. 2010 21:30    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 Sven2010 10 Unities + Antwort hilfreich

ich denke es funktioniert deswegen nicht weil der string "FINISH" auch in "FINISH_LOCAL" und "FINISH_CODE" enthalten ist

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

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

Sven2010
Mitglied



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

Beiträge: 56
Registriert: 20.04.2010

V5R19SP3
Hotfix 50

erstellt am: 29. Apr. 2010 21:33    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

Hm was könnte ich denn da machen?
Die Benennung der Properties ist leider fix und kann nicht mehr geändert werden 

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. Apr. 2010 21:37    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 Sven2010 10 Unities + Antwort hilfreich

mach doch einfach:
If parameters1.Item(i).Name = "FINISH" Then
  Parameter_vorhanden19 = True
End If

Edit: Else entfernt

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

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

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

Sven2010
Mitglied



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

Beiträge: 56
Registriert: 20.04.2010

V5R19SP3
Hotfix 50

erstellt am: 29. Apr. 2010 21: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

Die Zeile

If parameters1.Item(i).Name = "FINISH" Then

mag er leider nicht!
Glaub fast ich muss aufgeben 

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

Sven2010
Mitglied



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

Beiträge: 56
Registriert: 20.04.2010

V5R19SP3
Hotfix 50

erstellt am: 29. Apr. 2010 21: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

Ich verstehe einfach nicht warum er überhaupt in den Befehl

        Set strParam19 = parameters1.Item("FINISH")

hineingeht da der strParam19 ja gar nicht vorhanden, sprich False ist. Eigentlich müsste es die Zeile überspringen.

Evtl. noch jemand anderes da der so etwas schon mal gemacht hat oder weiss warum das Ganze nicht läuft?

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. Apr. 2010 21:56    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 Sven2010 10 Unities + Antwort hilfreich

oder halt
If Right(parameters1.Item(i).Name,6) = "FINISH" Then

Ich habe schon eine halbe Flasche Wein auf, ich glaub ich muss langsam auch aufgeben

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

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

Sven2010
Mitglied



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

Beiträge: 56
Registriert: 20.04.2010

V5R19SP3
Hotfix 50

erstellt am: 29. Apr. 2010 22:01    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

Leider auch nicht 

Jetzt lass ich dich aber in Ruhe, danke dir für deine Mühe!

Vielleicht kann ja noch jemand anders helfen und herausfinden warum er überhaupt in die besagte Zeile springt.

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. Apr. 2010 22:26    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 Sven2010 10 Unities + Antwort hilfreich

Servus
Du könntest es ach über die Fehler Rückgabe ermitteln, ob der Parameter schon existiert ist vielleicht etwas übersichtlicher):
Code:
Sub 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?
If TypeName(oDocument) <> "PartDocument" Then
    Box = MsgBox("Dokument ist kein Part!" + Chr(10) + "Macro wurde abgebrochen", vbInformation, "Hinweis")
    Exit Sub
End If

'Start
Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim product1 As Product
Set product1 = oDocument.Product

product1.PartNumber = "XXXXXX-X"

on error resume next

Dim parameters1 As Parameters
Set parameters1 = product1.UserRefProperties

'Abfrage ob Parameter bereits vorhanden sind, wenn nicht erstellen

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

Box = MsgBox("Makro erfolgreich", vbInformation, "Hinweis")

on error goto 0

End Sub


Gruß
Bernd

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

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

Sven2010
Mitglied



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

Beiträge: 56
Registriert: 20.04.2010

V5R19SP3
Hotfix 50

erstellt am: 30. Apr. 2010 12:49    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

Genial, vielen vielen Dank!!!

Jetzt läuft das Macro einwandfrei und ist dazu noch sehr übersichtlich und einfach anzupassen.

Wenn mir jetzt noch jemand sagen könnte wie ich die erzeugten Properties danach in einem Fenster anzeigen könnte sodass der User darin die Werte festlegen könnte und diese dann entsprechend in die Properties geschrieben werden wäre ich absolut happy 

Gruß
Sven

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

christian.gessner92
Mitglied
Student

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

Beiträge: 4
Registriert: 05.07.2016

Catia V5-R24

erstellt am: 11. Jul. 2016 16:01    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 Sven2010 10 Unities + Antwort hilfreich

Hallo zusammen,

ich bin noch eine richtiger Programmierneuling.

Ich brauche ein Makro um einzelne Eigenschaften wie hier zu setzen. Wäre es Möglich hier eine "Inputbox" einzufügen? Also das die Eigenschaft mit einem Wert abgelegt werden kann? Bin schon am ausprobieren und komme nicht weiter....
 

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: 11. Jul. 2016 16: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 Nur für Sven2010 10 Unities + Antwort hilfreich

Servus
Schau mal hier.
Meine generelle Empfehlung:
- erst eine Grundlagenschulung/Tutorial zu VBA machen (zB für Excel)
- mit einem Buch in die API von Catia einarbeiten
- überlegen wie man Probleme erst manuell in Catia löst
- prüfen ob sich dies auch mit einem Makro so machen lässt der ob es generell einen einfacheren Weg gibt.

Gruß
Bernd

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

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

xyon126
Mitglied
Ingenieur


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

Beiträge: 74
Registriert: 07.11.2011

erstellt am: 25. Aug. 2016 19: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 Nur für Sven2010 10 Unities + Antwort hilfreich

Hallo christian.gessner92!

Sorry für mein Deutsch. Ich lege zwei Codes für meine beiden Makros gemacht, mit dem Sie das tun, was ich glaube, anwenden, die zunächst die Eigenschaften auf einem CATPart bearbeitet und die zweite füllt Sie mit vordefinierten Eigenschaften und anderen Wert, werden Sie etwas sagen.

Code:
Language="VBSCRIPT"

'-------------------------------------------------------------------------------
' ==============================================================================
' NOMBRE MACRO:  Editpropertis_AIRPES_CATPart.CATScript
'
' Versión:        V 1.0  Julio 2016
'
' PROPUESTA:      Editar propiedades especificadas.
'
' RETORNO:        Edita o añade las propiedades especificadas en todas las Parts
' habidas en un CATProduct.
'
' MODO DE EMPLEO: Ejecución directa con un click.
'
' Autor:          M. de los Heros, DH&D, s.l.©
' ==============================================================================
'-------------------------------------------------------------------------------

Sub CATMain()

' Obtener documento o CATPart activa.
    Dim docPart as PartDocument
    Set docPart = CATIA.ActiveDocument

    ' Tener acceso al documento o CATPart activa.
    Dim prdPart as Part
    Set prdPart = docPart.Product

    ' recuperar una lista de todas las propiedades definidas por el usuario
    Dim oUserDefinedProperties as Parameters
    Set oUserDefinedProperties = prdPart.ReferenceProduct.UserRefProperties

    '--------------------------------
    ' ELIMINAR TODAS LAS PROPIEDADES
    '--------------------------------
    Dim iNbProperties ' as Integer
    iNbProperties = oUserDefinedProperties.Count

    Dim iProperty ' as Integer
    For iProperties = 1 To iNbProperties
        oUserDefinedProperties.Remove 1
    Next

Set partDocument1 = CATIA.ActiveDocument
'partDocument1.Save

    Set partDocument1 = CATIA.ActiveDocument
    Set product1 = partDocument1.GetItem("Part1")
    Set parameters1 = product1.UserRefProperties
    Set strParam1 = parameters1.CreateString("Nº Pieza", "")

strParam1.ValuateFromString ""

    Set product1 = product1.ReferenceProduct
    Set parameters2 = product1.UserRefProperties
    Set strParam2 = parameters2.CreateString("DENOMINACION", "")

strParam2.ValuateFromString ""

    Set product1 = product1.ReferenceProduct
    Set parameters3 = product1.UserRefProperties
    Set strParam3 = parameters3.CreateString("MATERIAL", "")

strParam3.ValuateFromString ""

    Set product1 = product1.ReferenceProduct
    Set parameters4 = product1.UserRefProperties
    Set strParam4 = parameters4.CreateString("MEDIDAS", "")

strParam4.ValuateFromString ""

    Set product1 = product1.ReferenceProduct
    Set parameters5 = product1.UserRefProperties
    Set strParam5 = parameters5.CreateString("PESO", "")

strParam5.ValuateFromString ""

       
Set product1 = product1.ReferenceProduct

    strParam1.Value = ""
    strParam2.Value = ""
    strParam3.Value = ""
    strParam4.Value = ""
    strParam5.Value = ""
       

MsgBox  "PROPERTIS EDITADAS"   

End Sub


Code:
Language="VBSCRIPT"

'-------------------------------------------------------------------------------
' ==============================================================================
' NOMBRE MACRO:  Propertis TUBO RECTANGULAR.CATScript
'
' Versión:        V 1.0  Agosto 2016
'
' PROPUESTA:      Editar las propiedades del TUBO RECTANGULAR.
'
' RETORNO:        Edita o añade las propiedades especificadas del TUBO RECTANGULAR.
'
' MODO DE EMPLEO: Ejecución directa con un click.
'
' Autor:          M. de los Heros, DH&D, s.l.©
' ==============================================================================
'-------------------------------------------------------------------------------

Sub CATMain()

Set partDocument1 = CATIA.ActiveDocument

Set product1 = partDocument1.GetItem("File")

Set product1 = product1.ReferenceProduct

Set product1 = product1.ReferenceProduct

Set product1 = product1.ReferenceProduct

Set product1 = product1.ReferenceProduct

Set product1 = product1.ReferenceProduct

Set part1 = partDocument1.Part

Set parameters1 = part1.Parameters

Set strParam1 = parameters1.Item("Properties\DENOMINACION")

strParam1.Value = "TUBO ESTRUCTURAL"

Set parameters2 = part1.Parameters

Set strParam2 = parameters2.Item("Properties\MATERIAL")

strParam2.Value = "S355 JR"

Set parameters3 = part1.Parameters

Set strParam3 = parameters3.Item("Properties\MEDIDAS")

'ABRE VENTANA ENTRADA DATOS MEDIDAS
strgDim = InputBox ("INTRODUCIR DIMENSIONES:", "INTRODUCIR DIMENSIONES")

strParam3.Value = strgDim

Set parameters4 = part1.Parameters

Set strParam4 = parameters3.Item("Properties\PESO")

'ABRE VENTANA ENTRADA PESO
strgPeso = InputBox ("INTRODUCIR PESO:", "INTRODUCIR PESO")

strParam4.Value = strgPeso

Set parameters5 = part1.Parameters

Set strParam5 = parameters1.Item("`Properties\Nº Pieza`")

strParam5.Value = product1.Definition

Set product1 = product1.ReferenceProduct

Set product1 = product1.ReferenceProduct

Set product1 = product1.ReferenceProduct

Set product1 = product1.ReferenceProduct

Set product1 = product1.ReferenceProduct

Set product1 = product1.ReferenceProduct

End Sub


M.f.G.

Manuel

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