Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Vergleich von Parameter

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:  Vergleich von Parameter (1184 mal gelesen)
Sabine Feminin
Mitglied
Konstrukteur


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

Beiträge: 10
Registriert: 30.07.2006

erstellt am: 30. Jul. 2006 19: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

Hallo,

bin noch nicht so fin in der Progrmmierung und benötige daher mal ein wenig hilfe. Mit dem unten stehenden Code soll verglichen werden, ob der Parameter schon vorhanden ist. Leider bekomme ich immer das gleiche Ergebnis egal ob er einen Parameter findet oder nicht. Kann mir jemand helfen?

Dim Laenge, Abstand As Integer
    Dim Params As Parameters
    Dim r As Integer
    Dim i As Integer
   
        Namen = "Laenge:Abstand"
        Sp = Split(Namen, ":")

        For i = 0 To 0
            If Params.Count < 0
                Then
              found = 0

              For v = 1 To Params.Count
                  If Sp(i) = Params.Item(r).Name Then
                    found = 1
              Next

            End If

                If found = 0 Then
                    MsgBox ("Parameter nicht vorhanden.")
                End If
               
                If found = 1 Then
                    MsgBox ("Parameter bereits vorhanden.")
                End If
        Next

Gruß, Sabine

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 30. Jul. 2006 23: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 Sabine Feminin 10 Unities + Antwort hilfreich

Hallo Sabine,

so ohne CATIA (also ohne Testmöglichkeit) sehe ich 4 Fehler. Einmal sollte die Schleife über alle Elemente von "Sp" gehen, weiter ist das "End If" an der falschen Stelle bzw. es fehlt ein "Else", dann  sollte das "v" nach "For" sicher ein "r" sein und es fehlt ein "End If"! Somit müßte Dein Code so lauten:

Code:
Dim Laenge, Abstand As Integer
Dim Params As Parameters
Dim r As Integer
Dim i As Integer
 
Namen = "Laenge:Abstand"
Sp = Split(Namen, ":")

For i = 0 To UBound(Split(Namen, ":"))
    If Params.Count = 0 Then
        found = 0
    Else
        For r = 1 To Params.Count
            If Sp(i) = Params.Item(r).Name Then
                found = 1
            End If
        Next
    End If

    If found = 0 Then
        MsgBox ("Parameter nicht vorhanden.")
    End If
             
    If found = 1 Then
        MsgBox ("Parameter bereits vorhanden.")
    End If
Next



mfg,
Lusilnie

------------------

Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

Sabine Feminin
Mitglied
Konstrukteur


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

Beiträge: 10
Registriert: 30.07.2006

erstellt am: 31. Jul. 2006 08: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

Hallo Lusilnie,

vielen Dank für die Antwort. Die Fehler die Du angesprochen hast konnte ich nachvollziehen. Leider gibt es immer noch ein Problem. Bei folgender Zeile bleibt er stehen:

If Params.Count = 0 Then

Gruss,
Sabine

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

Sabine Feminin
Mitglied
Konstrukteur


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

Beiträge: 10
Registriert: 30.07.2006

erstellt am: 31. Jul. 2006 09: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

Hallo Lusilnie,

Entwarnung! Funktioniert alles super!


Danke nochmal und Schöne Woche
Sabine

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

Sabine Feminin
Mitglied
Konstrukteur


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

Beiträge: 10
Registriert: 30.07.2006

erstellt am: 31. Jul. 2006 13: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

Ich bins nochmal,

mit MsgBoxen funktioniert es, aber wenn ich statt der MsgBox("Parameter schon vorhanden.") ein Parameter erstellen lasse mit dem Namen "Laenge" bekomme ich immer wieder found=0 ?????

Gurss,
Sabine

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

Lusilnie
Mitglied



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

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 01. Aug. 2006 03:34    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 Sabine Feminin 10 Unities + Antwort hilfreich

Hallo Sabine Feminin,

das Problem liegt sicher in der Parameter-Erzeugung. Bei mir funktioniert das z.B. so:

Code:
Sub CATMain()
   
    Dim Laenge As Double, Abstand As Double
    Dim Params As parameters
    Dim r As Integer
    Dim i As Integer
   
    Set Params = CATIA.ActiveDocument.Part.parameters
    Namen = "Laenge:Abstand"
    sp = Split(Namen, ":")
   
    For i = 0 To UBound(Split(Namen, ":"))
        If Params.Count = 0 Then
            found = 0
        Else
            For r = 1 To Params.Count
                If sp(i) = Params.Item(r).Name Then
                    found = 1
                End If
            Next
        End If
       
        If found = 0 Then
            MsgBox "Parameter nicht vorhanden"
            Dim length As Dimension
            Set length = Params.CreateDimension("Laenge", "LENGTH", 100)
            length.Rename "Laenge"
            Dim distance As Dimension
            Set distance = Params.CreateDimension("Abstand", "LENGTH", 50)
            distance.Rename "Abstand"

        ElseIf found = 1 Then
            MsgBox "Parameter bereits vorhanden"
        End If
    Next
   
End Sub
Wenn Dein Fall anders liegt, beschreibe ihn doch noch genauer!


mfg,
Lusilnie

------------------

Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

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

Sabine Feminin
Mitglied
Konstrukteur


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

Beiträge: 10
Registriert: 30.07.2006

erstellt am: 01. Aug. 2006 14:19    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 Lusilnie,

nochmals Danke für Deine Mühe.
Der Code funktioniert soweit ganz gut, bis auf das die Parameter zweimal erstellt werden. Nach dem Austausch von

For i = 0 To UBound(Split(Namen, ":"))

durch

For i = 0 To 0

werden die Parameter nur einmal erzeugt. Trotzdem verstehe ich nicht warum die Parameter bei der Verwendung von "0 To UBound" zweimal erstellt werden. Kannst Du mir das erklären?

Gruss,
Sabine
(Bin bis Sonntag im Urlaub)

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 01. Aug. 2006 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 Nur für Sabine Feminin 10 Unities + Antwort hilfreich

Vermutlich, weil in dem String Namen zwei Namen aufgeführt sind.
Die Schleife wird also zweimal durchlaufen.

Bei beiden Durchläufen werden vermutlich beide Namen nicht gefunden (ich nehme an, dass das daran liegt, dass Params nur einmal vor dem Schleifenlauf initialisiert wird und während des Schleifenlaufs auch trotz der CreateDimension-Aufrufe nicht aktualisiert wird...)

Daher wird der Bereich if found = 0 then ...
zweimal durchlaufen...

Ersetze den Code

Code:

            MsgBox "Parameter nicht vorhanden"
            Dim length As Dimension
            Set length = Params.CreateDimension("Laenge", "LENGTH", 100)
            length.Rename "Laenge"
            Dim distance As Dimension
            Set distance = Params.CreateDimension("Abstand", "LENGTH", 50)
            distance.Rename "Abstand"

doch testweise mal durch

Code:

           MsgBox "Parameter nicht vorhanden"
            Dim myParam As Dimension
            Set myParam = Params.CreateDimension(sp(i), "LENGTH", 100)
            myParam.Rename sp(i)

Dann sollte in jedem Schleifendurchlauf nur der tatsächlich fehlende Parameter erzeugt werden...

------------------
--
Danny Reinhold
Reinhold Software Services

[Diese Nachricht wurde von dr am 01. Aug. 2006 editiert.]

[Diese Nachricht wurde von dr am 01. Aug. 2006 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