Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Numerierungsschleife

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:  Numerierungsschleife (1014 mal gelesen)
AndreeX00X
Mitglied
Ingenieur


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

Beiträge: 48
Registriert: 14.08.2007

CATIA V5 R16

erstellt am: 11. Sep. 2007 00: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

Hallo,

ich brauchte mal ein wenig Hilfe bei einer Schleife zur Nummerierung der Teile im CATProduct.

Code:

Sub CATMain()
Dim oRoot As Document
Set oRoot = Catia.ActiveDocument

Dim oProducts As Products
Set oProducts = oRoot.Product.Products

SUB_ProdScan oProducts

End Sub

'-------------------------------------------

Sub SUB_ProdScan(oProducts)

Dim Nummer As Integer
Nummer = 2

Dim zaehler1 As Integer
zaehler1 = 1

Dim zaehler2 As Integer
zaehler2 = 1

Dim strParam1 As Parameter
Set strParam1 = oProducts.Item(1).ReferenceProduct.UserRefProperties.Item("Position")
strParam1.Value = 1


For zaehler1 = 2 to oProducts.Count
  For zaehler2 = 1 to (zaehler1 - 1) Step 1

  If oProducts.Item(zaehler1).PartNumber = oProducts.Item(zaehler2).PartNumber Then

    Exit For

  End If

  If oProducts.Item(zaehler1).PartNumber <> oProducts.Item(zaehler2).PartNumber Then

    Dim strParam2 As Parameter
    Set strParam2 = oProducts.Item(zaehler1).ReferenceProduct.UserRefProperties.Item("Position")
    strParam2.Value = Nummer

    Nummer = Nummer + 1
    Exit For

  End If

  Next
Next
End Sub


Das Makro soll allen Teilen (Part und Product) eine Nummer geben, jedoch sollen die Teile, die schon nummeriert wurden, nicht noch einmal nummeriert werden. Also wenn zwei Mal das gleich Teil vorhanden ist, soll es nur das erste Mal nummeriert werden.

Bevor dieses Makro ausgeführt werden kann, werden in den Teilen jeweils ein Parameter "Position" in den Eigenschaften hinzugefügt. Diesem Parameter soll dann mit dem obigen Makro ein Wert zugeteilt werden.

Im Moment ist das Makro so aufgebaut, dass dem ersten Teil im Strukturbaum die Nummer 1 zugewiesen wird. Dann wird eine Zählschleife in Gang gesetzt, welche von dem 2. bis zum letzten Teil hochzählt. Es folgt eine 2. Zählschleife und eine If-Bedingung. Die If-Bedingung soll eigentlich überprüfen, ob ein Teil schon vorhanden ist oder nicht. Ist ein Teil noch nicht vorhanden, so bekommt es eine neue Nummer. Ist ein Teil schon vorhanden, so soll dem Teil keine neue Nummer zugewiesen werden. Die 2. Schleife zählt jediglich zum Vergleichen der PartNumber.

Jedoch funktioniert das alles nicht so wirklich wie es soll. Kann mir da mal jemand einen Tipp geben was ich falsch mache, oder mir vielleicht eine bessere Lösung vorschlagen?

MfG AndreeX00X

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

AndreeX00X
Mitglied
Ingenieur


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

Beiträge: 48
Registriert: 14.08.2007

CATIA V5 R16

erstellt am: 11. Sep. 2007 11: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

So, habe selbst nochmal Hand angelegt und eine Lösung für mein Problem gefunden.

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

V5-Maxe
Mitglied
CAD-Konstrukteur, CATIA V5


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

Beiträge: 37
Registriert: 16.06.2005

Windows7 Prof x64
CATIA V5R19
Dell Precision T5500
12GB
NVIDIA Quadro FX 580 512MB

erstellt am: 14. Sep. 2007 08: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 AndreeX00X 10 Unities + Antwort hilfreich

Schön für Dich!!
kannst du deine Lösung mal posten... Es gibt ja auch noch mehr Leute die ein ähnliches Problem lösen müssen/wollen.
Danke V5-Maxe

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

AndreeX00X
Mitglied
Ingenieur


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

Beiträge: 48
Registriert: 14.08.2007

CATIA V5 R16

erstellt am: 14. Sep. 2007 09: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

Na gut, ich bin ja mal nicht so. Vielleicht ist das ja auch eine Anregung für andere, die das Thema noch ein wenig erweitern und dann ihre Lösung auch hier ins Forum stellen.

Code:

'*************************************************************
' Makro:   Positionsnummern.CATScript
' Version: V5R16-1.0
' Code:    CATIA CATScript
' Zweck:   Erzeugung der Positionsnummern
'          in einem CATProduct.
' Autor:   xxx
' Datum:   07.09.2007
'*************************************************************

Sub CATMain()
  Dim oRoot As Document
  Set oRoot = Catia.ActiveDocument

  Dim oProducts As Products
  Set oProducts = oRoot.Product.Products

  ParaKontrolle oProducts

  PositionLeeren oProducts

  Nummerierung oProducts

End Sub

'-------------------------------------------
' Kontrolle ob Parameter vorhanden ist, ansonsten Parameter erzeugen
'-------------------------------------------

Sub ParaKontrolle(oProducts)

  For zaehler1 = 1 to oProducts.Count

    Dim strParam1 As StrParam
    On Error Resume Next
    Set strParam1 = oProducts.Item(zaehler1).ReferenceProduct.UserRefProperties.Item("Position")

    If Err = 0 Then

      On Error GoTo 0

    Else

      On Error GoTo 0
      Set strParam1 = oProducts.Item(zaehler1).ReferenceProduct.UserRefProperties.CreateString("Position", "")
      strParam1.ValuateFromString ""

    End If

  Next

End Sub

'-------------------------------------------
' Inhalt des Parameters leeren
'-------------------------------------------

Sub PositionLeeren(oProducts)

  For zaehler1 = 1 to oProducts.Count

    Dim strParam1 As Parameter
    Set strParam1 = oProducts.Item(zaehler1).ReferenceProduct.UserRefProperties.Item("Position")
    strParam1.Value = ""

  Next

End Sub

'-------------------------------------------
' Neue Nummmernvergabe des Parameters
'-------------------------------------------

Sub Nummerierung(oProducts)

  Dim Nummer As Integer
  Nummer = 1

  Dim zaehler1 As Integer

  For zaehler1 = 1 to oProducts.Count

If oProducts.Item(zaehler1).ReferenceProduct.UserRefProperties.Item("Position").Value = "" Then

      Dim strParam2 As Parameter
      Set strParam2 = oProducts.Item(zaehler1).ReferenceProduct.UserRefProperties.Item("Position")
      strParam2.Value = Nummer

      Nummer = Nummer + 1

    End If

  Next

End Sub


[Diese Nachricht wurde von AndreeX00X am 25. Nov. 2007 editiert.]

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