Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parts erzeugen und hochzählen

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:  Parts erzeugen und hochzählen (1759 mal gelesen)
Ivanl
Mitglied



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

Beiträge: 28
Registriert: 21.10.2011

i7 2,80 Ghz
8GB Ram
Win XP Pro SP2
CATIA V5 R19 SP9

erstellt am: 16. Nov. 2011 17:02    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 zusammen,

ich hätte eine Frage bei der Ihr mir mit Sichertheit weiterhelfen könnt. Im Forum habe ich leider nichts konkretes gefunden.

Ich habe ein Macro geschrieben, mit welchem ich Parts erzeuge die einen fortlaufendn Namen haben. Leider tretten zwei Fehler auf. Beim ersten Fehler verstehe ich nicht so recht wieso er Auftritt und beim zweiten weiß ich nicht wie man ihn behebt.

Fehler Nummer eins:
Wenn ich das Programm das erste mal ausführe erstellt er mir wie gewünscht mein erstes Part mit dem Namen "Variante_01". Beim zweiten durchlauf sollte eigentlich "Variante_02" erscheinen. Was aber passiert, ist das er mir soviele Varianten_XX bis _XY erstellt wie lang meine For Schleife geht. An was könnte das liegen?

Fehler Nummer zwei:
Ab dem zweiten mal wenn ich das Makro durchführe erscheint rein theoretisch immer ein Fehler beim erzeugen des Parts(durch Set product3 = products2.AddNewComponent("Part", Name) weil der Name identisch zum ersten ist), was aber durch "On Error Resume Next" unterbunden wird. Dabei ersteht ein neues Part welches ich nicht gebrauchen kann. Gibt es eine Möglichkeit die Erstellung dieses Parts welches während der nicht zu sehenden Fehlermeldung erstellt wird zu unterdrücken?

Schonmal danke im voraus für eure Hilfe

Grüße Ivanl


Anbei mein Programmcode


Sub CATMain()

Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument

Dim product1 As Product
Set product1 = productDocument1.Product

Dim products1 As Products
Set products1 = product1.Products

Dim product2 As Product
Set product2 = products1.Item("Product2.1")

Dim products2 As Products
Set products2 = product2.Products

Dim product3 As Product

Dim i As Integer
Dim Name As String

'Fehlerbehandlng auschalten
On Error Resume Next

For i = 1 to 10

Name = "Variante_" & Right(CStr(i + 100), 2)

Set product3 = products2.AddNewComponent("Part", Name)

If Err.Number <> 0 then

'durch If Abfrage durchlaufen ohne was zu tun

else
Exit For

End If

Next


Err.Clear
'Fehlerbehandlng einschalten
On Error GoTo 0

End SUb

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

gladly
Mitglied



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

Beiträge: 56
Registriert: 02.11.2007

Catia V5R19SP9HF40 64Bit
Windows XP Pro x64

erstellt am: 16. Nov. 2011 17: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 Ivanl 10 Unities + Antwort hilfreich

Guten Tag,

bei einem neuen Product lief Ihr Makro so bei mir durch und erzeugte Variante_01 - Variante_10.

Bei dem zweiten Fehler kann ich nur sagen, das bei Erneutem Ausführen ja auch erneut Elemente mit gleichem Namen erzeugt werden.
VORSICHT wenn Sie bei Tests Ihr Makro ausgeführt haben. Die Parts gelöscht haben und es erneut Probieren wollten. Die Part sind noch immer als Document in Catia Aktiv! Siehe Catia.Documents - diese dann erst schließen.


If Err.Number <> 0 then
'durch If Abfrage durchlaufen ohne was zu tun
else
Exit For
End If

Wieso nicht:
If Err.Number = 0 then Exit For

Noch nen Tipp am rande. Kann man sich ein Problem bei Catia einfach nicht erklären... Einfach mal Catia neustarten 

mfg

gladly

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

Ivanl
Mitglied



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

Beiträge: 28
Registriert: 21.10.2011

i7 2,80 Ghz
8GB Ram
Win XP Pro SP2
CATIA V5 R19 SP9

erstellt am: 16. Nov. 2011 17:55    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 gladly.

Sie meinem bei Ihnen läuft es durch und erzeugt variante_01 bis variante_10. Bei mir auch. Aber bei mir erzeugt es die 10 Varianten nach nur 2 maligen ausführen des Makros. Ich wollte das nach jedem ausführen eine Variante hinzukommt. Das quasi erst nach der 10ten Ausführung "Variante_10" angezeigt und erstellt wird.

Grüße Ivanl

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: 16. Nov. 2011 18:04    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 Ivanl 10 Unities + Antwort hilfreich

Servus
Durch die For-Schleife werden 10 Varianten auf einmal erzeugt, da ja kein Abbruch Kriterium vorhanden ist.
Schau mal hier findest d ein ähnliches Beispiel, allerdings im Part mit GeoSets.
Möglicher Ablauf für dein Problem (ungetestet):
- innerhalb einer Schleife versuchen über den Namen (zB products2.item("Variante_" & i)) auf das Product des Parts zugreifen, falls diese gelingt zum nächsten wechseln
- falls ein Fehler zurückgeliefert wird das Part (mit aktueller Laufvariable) der entsprechenden Variante erzeugen

Gruß
Bernd

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

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

gladly
Mitglied



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

Beiträge: 56
Registriert: 02.11.2007

Catia V5R19SP9HF40 64Bit
Windows XP Pro x64

erstellt am: 16. Nov. 2011 18: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 Nur für Ivanl 10 Unities + Antwort hilfreich

Entschuldigung, da hatte ich das Problem leider komplett missverstanden. Deshalb auch die Abbruchsregel...
Mein Vorredner hat ja etwas passendes dazu begesteuert. Prüfen ob es das schon gibt.

Oder (Nicht gerade zu empfehlen) wie momentan einfach anfangen parts zu erstellen und Fehler überspringen. Fals fehler auftaucht letztes Part wieder löschen. (.item(.count))

Oder wieder etwas schönen. Suche nach "Variante_*" -> nächstes Element = Variante_Count+1

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

Ivanl
Mitglied



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

Beiträge: 28
Registriert: 21.10.2011

i7 2,80 Ghz
8GB Ram
Win XP Pro SP2
CATIA V5 R19 SP9

erstellt am: 16. Nov. 2011 18:17    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 Bernd,

ich dachte ich hätte ein Abbruch Kriterium drinnen.


For i = 1 to 10
Name = "Variante_" & Right(CStr(i + 100), 2)
Set product3 = products2.AddNewComponent("Part", Name)
If Err.Number <> 0 then

  'Wenn Fehler aufgetretten
  'if Abfrage verlassen
  'und in For schleife springen
  'welche dann weiter zählt

else

  'Wenn kein Fehler auftritt
  'For Schleife verlassen und
  'Makro beenden

  Exit For

End If

Next

Ich dachte das führt mein Programm aus. Ich Versuche mal deinen Ansatz.

Grüße Ivanl

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

Ivanl
Mitglied



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

Beiträge: 28
Registriert: 21.10.2011

i7 2,80 Ghz
8GB Ram
Win XP Pro SP2
CATIA V5 R19 SP9

erstellt am: 16. Nov. 2011 19: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 zusammen,

danke nochmal für die Tipps. Jetzt funktioniert es richtig.

Grüße Ivanl

Hier der funktionierende Programmcode

-----------------------------------------------
Sub CATMain()

Set productDocument1 = CATIA.ActiveDocument

Set product1 = productDocument1.Product

Set products1 = product1.Products

Set product2 = products1.Item("Product2.1")

Set products2 = product2.Products

'Set product3 = products2.Item("Variante_01.1")

Dim i as Integer
Dim Name as String

For i = 1 to 10

On Error Resume Next

Set product3 = products2.Item("Variante_0" & i & ".1")

if Err.Number <> 0 then

Name = "Variante_" & Right(CStr(i + 100), 2)

Set product4 = products2.AddNewComponent("Part", Name)
exit For

end if
Next

Err.Clear
'Fehlerbehandlng einschalten
On Error GoTo 0


End Sub
--------------------------------------------

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