Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  String Vergleichen (like) und Parameter mit bestimmten Typ generieren

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:  String Vergleichen (like) und Parameter mit bestimmten Typ generieren (690 mal gelesen)
cmb
Mitglied
Systembetreuer


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

Beiträge: 500
Registriert: 12.07.2002

CATIA V5-6R2016 64bit
Smarteam R22.6
Moldflow Adviser 2014
Lenovo Think Pad P90

erstellt am: 17. Mrz. 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

Hallo Forum,

bei uns läuft ein Script welches aus einer Auswahl von Texten Parameter generiert welche den gleichen Namen bekommen wie das Textfeld. Bisher haben wir immer nur strings geschrieben. Da ich auch Volumen und Laengen Werte habe würde ich diese auch gerne mit dem entsprechendem Parameter Typ generieren.
Mein Script:


Sub CATMain()

Set drawingDocument1 = CATIA.ActiveDocument
Set drawingSheets1 = drawingDocument1.Sheets
Set drawingSheet1 = drawingSheets1.ActiveSheet

Set drawingDocument2 = CATIA.ActiveDocument
Set drawingSheets2 = drawingDocument2.Sheets
Set drawingSheet2 = drawingSheets2.ActiveSheet
Set drawingViews02 = drawingSheet2.Views.Item(1)

Dim Params
Set Params = drawingDocument2.Parameters

'texte aus aktueller Auswahl suchen
Dim selection1
Set selection1 = drawingDocument2.Selection
selection1.Search "CATDrwSearch.DrwText,sel"

Dim DrawTexts
Set DrawTexts = selection1

'Parameter Werte generieren
Dim k
k=1
Dim DrawText

While(k-1<selection1.Count2)
Set DrawText = selection1.Item2(k).Value

Dim Param
'hier beginnt meine Modifikation
If DrawText.Name Like "*LAENGE" Then
Set Param = Params.CreateDimension(DrawText.Name,"")
MsgBox "    " & (DrawText.Name)

If DrawText.Name Like "*DURCHMESSER" Then
Set Param = Params.CreateDimension(DrawText.Name,"")
MsgBox "    " & (DrawText.Name)

If DrawText.Name = Volumen Then
Set Param = Params.CreateDimension(DrawText.Name,"")
MsgBox "    " & (DrawText.Name)

Else

'hier endet meine Modifikation
Set Param = Params.CreateString(DrawText.Name,"")
MsgBox "    " & (DrawText.Name)
End If

Param.ValuateFromString DrawText.Text

DrawText.InsertVariable 1,Len(DrawText.Text),Param

k=k+1

Wend

'aktiviert die Arbeitsansicht
  'drawingSheet1.Views.Item(1).Activate 

End Sub

Das Tool mängelt mir nun den "Wend" an. Kann es sein das ich meine fallunterscheidungen anders einbaue muss??

Vielen Dank schon vorab + Gruß

Norbert

------------------
V5R18
Catia + Smarteam

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

McByte
Mitglied
Entwicklungsingenieur


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

Beiträge: 60
Registriert: 05.12.2003

erstellt am: 17. Mrz. 2010 17: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 Nur für cmb 10 Unities + Antwort hilfreich

Hallo,

in Deiner Änderung gibt es ein Problem mit den If Schleifen, sie sind nicht geschlossen.
Ich vermute ein ElseIf wäre sowieso besser.

Wenn Du die While-Wend Schleife wie folgt abänderst, dann läuft das script:

Code:
While (k - 1 < selection1.Count2)
    Set DrawText = selection1.Item2(k).Value
   
    Dim Param
    'hier beginnt meine Modifikation
    If DrawText.Name Like "*LAENGE" Then
        Set Param = Params.CreateDimension(DrawText.Name, "")
        MsgBox "    " & (DrawText.Name)
       
    ElseIf DrawText.Name Like "*DURCHMESSER" Then
        Set Param = Params.CreateDimension(DrawText.Name, "")
        MsgBox "    " & (DrawText.Name)
       
    ElseIf DrawText.Name = Volumen Then
        Set Param = Params.CreateDimension(DrawText.Name, "")
        MsgBox "    " & (DrawText.Name)
   
    Else
   
        'hier endet meine Modifikation
        Set Param = Params.CreateString(DrawText.Name, "")
        MsgBox "    " & (DrawText.Name)
    End If
   
    Param.ValuateFromString DrawText.Text
   
    DrawText.InsertVariable 1, Len(DrawText.Text), Param
   
    k = k + 1

Wend


------------------
McByte

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

McByte
Mitglied
Entwicklungsingenieur


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

Beiträge: 60
Registriert: 05.12.2003

erstellt am: 17. Mrz. 2010 18:24    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 cmb 10 Unities + Antwort hilfreich

Noch eine Kleinigkeit:

Code:
Set Param = Params.CreateDimension(DrawText.Name, "")

wird nicht funktionieren.
Für Länge und Durchmesser muss es so aussehen:
Code:
Set Param = Params.CreateDimension(DrawText.Name, "LENGTH", 0#)

Für Volumen so:
Code:
Set Param = Params.CreateDimension(DrawText.Name, "VOLUME", 0#)

------------------
McByte

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

V5Playaz
Mitglied
Dipl.-Ing (BA)


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

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 18. Mrz. 2010 10: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 cmb 10 Unities + Antwort hilfreich

Was ich auch noch machen würde ist, die Schleife gegen eine For-Next-Schleife auszutauschen.

Denn Endlosschleifen sind fehleranfälliger als Schleifen mit einer definierten Anzahl an Durchläufen.

Grüsse Dominik

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

cmb
Mitglied
Systembetreuer


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

Beiträge: 500
Registriert: 12.07.2002

CATIA V5-6R2016 64bit
Smarteam R22.6
Moldflow Adviser 2014
Lenovo Think Pad P90

erstellt am: 18. Mrz. 2010 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

Hallo McByte,

vielen Dank für deine Infos. Mit der Zeile :

If DrawText.Name = CN_SSC_LAENGE Then
Set Param = Params.CreateDimension(CN_SSC_LAENGE, "LENGTH", 0.000000)


schreibt mir das Programm einen Parameter aber leider nur vom Typ String, habe es schon mit mm als Einheit versucht geht leider auch  nicht.
Warum hast du hinter dem Defaultwert 0 noch ein # stehen? Da finde ich in der Hilfe nichts drüber.

Gruß

Norbert

P.S. das Like im BSP. oben bringt mir nur Fehler

------------------
V5R18
Catia + Smarteam

[Diese Nachricht wurde von cmb am 18. Mrz. 2010 editiert.]

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

McByte
Mitglied
Entwicklungsingenieur


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

Beiträge: 60
Registriert: 05.12.2003

erstellt am: 18. Mrz. 2010 17: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 Nur für cmb 10 Unities + Antwort hilfreich

Hallo Norbert,

die # nach der 0 ist in diesem Fall nicht wichtig.
Generell konvertiert sie Zahlen in den Datentyp Double, genau wie CDbl().

Was den Parameter angeht, kannst Du nochmal den gesamten Code posten?
Eigentlich sollte es funktionieren...
Versuch mal dieses Skript in Deiner Zeichnung laufen zu lassen:

Code:
Sub CATMain()
    CATIA.ActiveDocument.Parameters.CreateDimension "testparam", "LENGTH", 0
End Sub

------------------
McByte

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

cmb
Mitglied
Systembetreuer


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

Beiträge: 500
Registriert: 12.07.2002

CATIA V5-6R2016 64bit
Smarteam R22.6
Moldflow Adviser 2014
Lenovo Think Pad P90

erstellt am: 19. Mrz. 2010 08:27    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 McByte,

dein Programmschnipsel funktioniert.
Anscheinend funktioniert das mit meiner Text selection nicht richtig.

Ich probiere weiter

G

Norbert

------------------
V5R18
Catia + Smarteam

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