Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parameter überprüfen ob vorhanden

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:  Parameter überprüfen ob vorhanden (3355 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: 14. Aug. 2007 11: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

Hallo,

zuerst möchte ich mal sagen, dass ich hier ganz neu bin und nun hoffe, dass mir hier einer helfen kann.

Ich möchte ein Makro in Visual Basic erstellen (ich habe mich erst seit 2 Tagen mit der Programmiersprache auseinander gesetzt), welches ein Fenster im Part öffnet, in dem ich eigene Parameter eintragen kann. Diese Parameter sollen dann später in einem Draw in das Schriftfeld eingelesen werden.

Ich habe es nun schon soweit hinbekommen, diese Parameter im Strukturbaum zu erstellen und den Inhalt über ein Fenster zu bearbeiten.

Mein Problem ist nun, dass wenn ich dieses Makro ein weiteres Mal aufrufe, die Parameter nochmals erstellt werden und bei jedem weiteren Aufruf ein weiteres Mal. Meine Überlegung war nun, das Problem mit einer If-Then-Else-Verzweigung zu beheben, in der abgefragt wird, ob die Parameter schon vorhanden sind. Wenn nein, dann sollen die Parameter erstellt werden, wenn sie vorhanden sind, dann soll der Schritt mit der Parametererstellung übersprungen werden.

Ich habe mal meinen Quelltext dazugelegt:

Sub CATMain()
   
    ParameterEintragen

    userParameter.Show 0    ' Hier wird das Fenster aufgerufen, in dem die Parameter bearbeitet werden können.

End Sub

Sub ParameterEintragen()

If [Parameter_vorhanden = ja] Then    'Hier weiß ich nicht, was ich eingeben muss, damit die Abfrage korrekt ausgeführt wird.
   
    Exit Sub

Else
   
    Set partDocument1 = CATIA.ActiveDocument
    Set part1 = partDocument1.Part
    Set parameters1 = part1.Parameters

    Set strParam1 = parameters1.CreateString("Zeichenfolge.1", "")
    strParam1.Rename "Erstellt durch"
    strParam1.Value = "Student"
       
    part1.Update

    Set strParam2 = parameters1.CreateString("Zeichenfolge.2", "")
    strParam2.Rename "Ausgabedatum"
    strParam2.Value = "01.01.2007"

    Set strParam3 = parameters1.CreateString("Zeichenfolge.3", "")
    strParam3.Rename "Genehmigt von"
    strParam3.Value = "Ausbilder"

    Set strParam4 = parameters1.CreateString("Zeichenfolge.4", "")
    strParam4.Rename "Dokumentenart"
    strParam4.Value = "Zusammenbauzeichnung"

    Set strParam5 = parameters1.CreateString("Zeichenfolge.5", "")
    strParam5.Rename "Dokumentenstatus"
    strParam5.Value = "freigegeben"

    Set strParam6 = parameters1.CreateString("Zeichenfolge.6", "")
    strParam6.Rename "Sprache"
    strParam6.Value = "de"

End If

End Sub


Ich hoffe mir kann hier jemand bei der Lösung meines Problems behilflich sein.

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

krisztian.furedi
Mitglied
Konstrukteur / Maschinenbau


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

Beiträge: 73
Registriert: 21.10.2006

Catia V5R16 SP5 Hotfix 24

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

Hallo Andre,

probier mal was ähnliches:

'***** Deklarationen wenn notwendig
Dim part1 as Part
Dim parameters1 As Parameters
Set parameters1 = part1.parameters

'***** Routine
Parameter_vorhanden = false

For i = 1 to parametes1.count
  Z = InStr(parameters1.Item(i).Name, "Zeichenfolge.1")
  If Z <> 0 Then
      Parameter_vorhanden = True
  End If
Next
'***** hier wird das Makros weitergehen

Gruss,

K.

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: 14. Aug. 2007 23: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 Nur für AndreeX00X 10 Unities + Antwort hilfreich

Hallo AndreeX00X,

eine weitere Möglichkeit ist die Arbeit nach dem Fehlerprinzip, also einer Variable den Parameter mit dem gesuchten Namen zuweisen: Gibt es keinen Fehler, so existiert die Variable, gibt es einen Fehler, so muss diese noch erzeugt werden, z.B.:

Code:
On Error Resume Next
Set strParam1 = parameters1.Item("Erstellt durch")
If Err = 0 Then
    'Parameter existiert
    On Error Goto 0
    Exit Sub
Else
    On Error Goto 0
    Set strParam1 = parameters1.CreateString("Zeichenfolge.1", "")
    strParam1.Rename "Erstellt durch"
    strParam1.Value = "Student"
End If
Bei Abfrage von mehreren Parametern müsste das dann in einer Schleife abgearbeitet werden.


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

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: 15. Aug. 2007 17: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

Hallo,

vielen Dank für die schnelle Hilfe. Ich habe es nun so hinbekommen, wie ich es haben will.

Ich habe mal beides ausprobiert, jedoch bin ich mit der Lösung von Lusilnie besser gefahren. Mein Dank an dich.

Bei der Lösung von krisztian.furedi ist immer ein Fehler aufgetreten, den meine geringen Programmierkünste noch nicht so richtig deuten konnten. Wahrscheinlich ist das nur wieder so eine Kleinigkeit, die mir nicht aufgefallen ist. Aber auch danke für deine Lösung.

Gruß Andrée

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

YellowDevil
Mitglied
PI, Makroentwicklung, NC Automatisierung


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

Beiträge: 67
Registriert: 21.12.2006

erstellt am: 16. Aug. 2007 03: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 Nur für AndreeX00X 10 Unities + Antwort hilfreich

Der Fehler Liegt in der Zeile:

Z = InStr(parameters1.Item(i).Name, "Zeichenfolge.1")

Der Befehl InStr ist dazu da in einer Zeichenfolge eine bestimmte Zeichenfolge zu suchen und die Position zurück zugeben, an der sie steht.

Aufgebaut ist er so: InStr(Start,Zeichenfolge,Suchstring)

Somit fehlt in der Zeile nur die Startposition.

Z = InStr(1,parameters1.Item(i).Name, "Zeichenfolge.1")

Somit sollte nun auch diese Methode zum Ziel führen.

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: 17. Aug. 2007 11: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

Hallo YellowDevil,

ich habe deinen Tipp mal ausprobiert, jedoch gibt mir VB den Fehler schon in der Zeile mit der For-Schleife an:

Zitat:
Laufzeitfehler '424'
Objekt erforderlich

Ich habe auch noch mal nachgeschaut, ob ich nicht das Ende für die For-Schleife vergessen habe (z.B. End For), so etwas gibt es aber nicht. Also kann es daran schon mal nicht liegen.

Ich könnte mir jetzt nur noch vorstellen, dass ich es an die falsche Stelle gesetzt habe, jedoch wüsste ich nicht, wo ich es sonst hinsetzen sollte.

Code:
Sub ParameterErzeugen()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

'***** Deklarationen wenn notwendig
Dim part1 As Part
Set part1 = partDocument1.Part
Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

'***** Routine
Parameter_vorhanden = False

For i = 1 To parametes1.Count
  Z = InStr(1, parameters1.Item(i).Name, "Zeichenfolge.1")
  If Z <> 0 Then
      Parameter_vorhanden = True
  End If
Next
'***** hier wird das Makros weitergehen

Set strParam1 = parameters1.CreateString("Zeichenfolge.1", "")

strParam1.Rename "Erstellt_durch"
strParam1.Value = "Student"

Dim strParam2 As StrParam
Set strParam2 = parameters1.CreateString("Zeichenfolge.2", "")

strParam2.Rename "Ausgabedatum"

...


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

JPF
Mitglied
Programmierer


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

Beiträge: 128
Registriert: 17.08.2001

CATIA V5R19 SP9--HP420,Intel(R) Xeon(R) CPU E5-1620 3.60GHz,32 GB Ram,
NVIDIA Quadro 2000--Windows 7 Enterprise 64bit

erstellt am: 17. Aug. 2007 11:42    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

Hallo AndreeX00X,

in deiner FOR-Schleife ist ein Fehler. Es fehlt das "r" in
parameters1.Count

Gruss

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: 17. Aug. 2007 12: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

Ja, der Fehler ist weg, jedoch erreiche ich mit dieser Variante nicht mein Ziel, da bei jedem Macro-Aufruf wieder die gleichen Parameter dazu angelegt werden und gerade das wollte ich ja vermeiden.

Wenn das damit tatsächlich funktionieren soll, dann kann es ja nur noch daran liegen, dass ich das an die falsche Stelle gesetzt habe.

Gruss

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: 18. Aug. 2007 00:39    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

Hallo AndreeX00X,

der Code kann nicht das gewünschte Ergebnis haben, denn es bringt nichts, erst zu prüfen, ob ein bestimmter Paramter existiert und ihn dann, ungeachtet des Prüfergebnisses, neu anzulegen. Du solltest das Prüfergebnis schon verarbeiten, etwa so:

Code:
Sub ParameterErzeugen()

    Dim partDocument1 As Document
    Set partDocument1 = CATIA.ActiveDocument

    '***** Deklarationen wenn notwendig
    Dim part1 As Part
    Set part1 = partDocument1.Part
    Dim parameters1 As Parameters
    Set parameters1 = part1.Parameters

    '***** Routine
    Parameter_vorhanden = False

    For i = 1 To parametes1.Count
      Z = InStr(1, parameters1.Item(i).Name, "Zeichenfolge.1")
      If Z <> 0 Then
          Parameter_vorhanden = True
      End If
    Next
    '***** hier wird das Makros weitergehen
   
    Dim strParam1 As StrParam
    If Parameter_vorhanden then
        Set strParam1 = parameters1.Item("Erstellt durch")
    Else

        Set strParam1 = parameters1.CreateString("Zeichenfolge.1", "")
        strParam1.Rename "Erstellt_durch"
    End If
   
    strParam1.Value = "Student"

    Dim strParam2 As StrParam
    If Parameter_vorhanden then
        Set strParam2 = parameters1.Item("Ausgabedatum")
    Else

        Set strParam2 = parameters1.CreateString("Zeichenfolge.2", "")
        strParam2.Rename "Ausgabedatum"
    End If

    ...


Hier musst Du eventuell die For-Next-Schleife vor jeden Parameter einfügen ...

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

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: 28. Aug. 2007 15:41    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,

habe endlich mal die Zeit gefunden deinen Quellcode auszuprobieren und es funktioniert bis auf das fehlende "r" in parametes1.count -> parameters1.count alles prima. Vielleicht wäre das sogar die sichere Variante. Nochmals Danke.

MfG AndreeX00X

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