Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parameter auslesen und ansprechen

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 auslesen und ansprechen (3457 mal gelesen)
Syphield
Mitglied
Konstrukteur


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

Beiträge: 46
Registriert: 02.10.2007

erstellt am: 20. Okt. 2010 08: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,

ich möchte innerhalb eines  Makros einen Parameter aus einem benannten Textfeld einer Zeichnung auslesen/suchen,
und dann weiterverwenden z.B. zur Benennung des Dateinamens.

Das suchen klappt ja schon, aber wie spreche ich den gefundenen Text dann wieder an,
um ihn weiter zu verwenden ???

So weit bin ich schon.
Das besagte Textfeld heißt hier "PRO.FILE@DOKID"

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

Set objSel = objDoc.Selection
objSel.Search "Drafting.Text.Name=PRO.FILE@DOKID*"

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


Mit "objSel" selbst klappt es leider nicht.

------------------
Never stop progress !

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

DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 20. Okt. 2010 10: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 Nur für Syphield 10 Unities + Antwort hilfreich

Hallo,

das Suchen alleine ist nur die halbe Lösung. Hier wird das Textfeld nur gesucht und selektiert (falls es auf der Zeichnung vorhanden ist). Alle gefundenen Objekte werden in die "Such-Collection" aufgenommen und müssen explizit angesprochen werden

Dim intTextFieldObj as Text

Set objSel = objDoc.Selection
objSel.Search "Drafting.Text.Name=PRO.FILE@DOKID*"

If objSel.Count = 1 then
Set intTextFieldObj = objSel.Item(1)
ElseIf objSel.Count = 0 then
MsgBox "Textfeld wurde nicht gefunden"
ElseIf objSel.Count > 1 then
MsgBox "Es wurden mehrer Textfelder mit diesem Namen gefunden!
End If

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 20. Okt. 2010 10:08    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 Syphield 10 Unities + Antwort hilfreich

Ansprechen dann über
Code:

selWork.Item(1).Value

Edit: Daniel, Du hast meißt mehr Ahnung, als ich, daher frage ich nur. Bisher dachte ich, es kann ein Textfeld mit einem Namen nur einmal geben.
ist mehrfach auch möglich?
------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

[Diese Nachricht wurde von HoBLila am 20. Okt. 2010 editiert.]

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

DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 20. Okt. 2010 10:57    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 Syphield 10 Unities + Antwort hilfreich

Hallo Henry,

also mit dem .Value hast du natürlich vollkommen recht  .

Textfelder auf Zeichnungen können aber mehrmals mit dem selben Namen belegt werden. Hier wird natürlich nur nach dem DisplayNamen gesucht (dieser kann gleich sein). Die Schreibgeschütze Eigenschaft "internalName" liefert unterschiedliche Namen (Erhöhung des Counter z.B. DrwText.1...DrwText.2..DrwText.n).

Das heißt es sollte zur Sicherung der Konsistenz auf jeden Fall diese Abfrage rein ;-)

Anbei mal ein Testmakro. Voraussetzung sind zwei Textfelder mit dem selben DisplayName

Code:

Sub CATMain()

    Dim objDoc As Document
    Dim objSel As Selection
    Dim i As Long
    Dim objModelElement As ModelElement
   
    Set objDoc = CATIA.ActiveDocument
    Set objSel = objDoc.Selection
    objSel.Clear
   
    '***EXPLIZITER NAME OHNE WILDCARDS
    CATIA.HSOSynchronized = False
    objSel.Search "Drafting.Text.Name=TEST_1"
    CATIA.HSOSynchronized = True
   
    MsgBox "Es wurden " & objSel.Count & " Textfelder selektiert!" + vbNewLine + _
            "Name der Textfelder: " + objSel.Item(1).Value.Name
   
    For i = 1 To objSel.Count
        Set objModelElement = objSel.Item(i).Value.GetItem("ModelElement")
        MsgBox "Interne Name für Textfeld " & CStr(i) + vbNewLine + objModelElement.InternalName
    Next
   
    objSel.Clear
       


End Sub


------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 20. Okt. 2010 17:10    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 Syphield 10 Unities + Antwort hilfreich

Hut ab, Daniel!

Noch eine Frage: Was ist aus dem guten alten ";all" beim Search geworden? ;-)

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

ThomasKi
Mitglied


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

Beiträge: 1
Registriert: 22.10.2010

erstellt am: 22. Okt. 2010 16: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 Nur für Syphield 10 Unities + Antwort hilfreich

Hallo zusammen,
ich habe über Power-Copy ein neues Geoset mit mehreren Konstruktionselementen, Parametern und einem Axensystem in mein Part eingefügt. Um mehrere eingefügte Geosets unterscheiden zu können, möchte ich die Elemente über ein Makro folgendermaßen umbenennen:
Bsp:
Alter Name: XXX-Line
Neuer Name: 001-Line

Bei allen Konstruktionselementen und Axen klappt das auch nach einiger Arbeit ganz gut, allerdings klappt die Umbenennung der Parameter nicht. Den alten und neuen Namensteil (sOld, sNew) gebe ich über eine Eingabemaske ein.

Kurz ein Auszug aus dem betreffenden Quelltext zur Umbenennung:

für Konstruktionselemente:
      If Sel1.Item(i).Value.Parent.Name = "HybridShapes" Then
            sOldname = Sel1.Item(i).Value.Name
            sNewname = Replace(sOldname, sOld, sNew)
            Sel1.Item(i).Value.Name = sNewname
      End If

für Parameter:
      If Sel1.Item(i).Value.Parent.Name = "Parameters" Then
          sOldname = Sel1.Item(i).Value.Name
          sNewname = Replace(sNewname, sOld, sNew)
          Sel1.Item(i).Rename sNewname
      End If

Genau in der Vorletzten Quelltextzeile scheint der Haken zu liegen.
Wenn ich statt der Variablen sNewname ein String, wie z.B. "Test" eingebe, klappt die Umbenennung. Nur eine Variable scheint er nicht als Eingabe anzunehmen.
Meine Frage ist nun, wie man es schafft die Rename-Funktion  mit einer Variablen laufen zu lassen?

Vielen Dank schonmal für eure Hilfe.

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

DanielFr.
Moderator
Manager


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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 26. Okt. 2010 13: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 Syphield 10 Unities + Antwort hilfreich

Hallo zusammen,

@Henry: Wenn man nach einem explizietem Namen sucht und das all im String weglässt, dann sucht CATIA automatisch überall ;-)

@Thomas: ich denke es liegt an der fehlerhaften impliziten Typumwandlung von VBA selbst. MAche das mal explizit und konvertiere vor dem Replace (bzw. im Replace Befehl) deine Variable nachmals in einen String

      If Sel1.Item(i).Value.Parent.Name = "Parameters" Then
          sOldname = Sel1.Item(i).Value.Name
          sNewname = Replace(CStr(sNewname), sOld, sNew)
          Sel1.Item(i).Rename sNewname
      End If

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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: 26. Okt. 2010 13: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 Nur für Syphield 10 Unities + Antwort hilfreich

Servus
Müsse es beim Parameter nicht:
sNewname = Replace(sOldname, sOld, sNew)
heißen, oder ist sNewname schon vorher definiert?

Gruß
Bernd

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

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