Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  CATScript Funktionen in CATVBA nutzen

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:  CATScript Funktionen in CATVBA nutzen (5867 mal gelesen)
IIYTII
Mitglied



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

Beiträge: 85
Registriert: 30.05.2007

Catia V5 R19
Programmierung unter CATvba

erstellt am: 08. Sep. 2009 14:36    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 habe ein Problem und zwar möchte ich CATBSTR, SelectElement etc. in einem CATvba makro einsetzen. Gibt es Möglichkeiten die Befehle von CATScript zu includieren?

Benutze derzeit eine schicke Userform und möchte diese mit Benutzerselektionen verbinden.

Oder gibt es spezielle Befehle die ich dafür auch in CATvba nutzen kann?

Danke

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: 08. Sep. 2009 17:44    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 IIYTII 10 Unities + Antwort hilfreich

Hallo,

was ist das genau Problem? Du kannst eine SelectElement auch in CATvba nutzen. Hierzu darfst du jedoch die Selektion nicht als solche deklarieren sondern als Objekt. Das selbe ist mit dem CATBSTR. Diese wird einfach als Objekt deklariert.

Zur Erklärung:
Es gibt in Visual Basic Funktionen die nicht oder nur teilweise unterstützt werden. Das liegt in der Regel an der Deklaration des jeweiligen Objekts. Wenn du nun das Objekt auch als Objekt (die Mutter aller Objekte wie Selektion, Document, etc.) deklarierst dann hast du zwar kein IntelliSense (automatische Vervollständigung mehr) dafür funktioniert dein Makro sauber.

Dieses "Verfahren" nennt man late binding. Im Gegensatz zum early binding (hier werden die Objekte mit spezifischen Namen deklariert) ist das late binding z.B. versionsunabhängig (beim Erstellen eines Excel-Objekts, etc.).

Viele Programmierer programmieren erst mal mit dem early binding (das ist die Faulheit der Progger (da gibt es ja die Autovervollständigung)) und wenn Sie fertig sind und das Makro releasen stellen Sie auf late binding um.

------------------
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

IIYTII
Mitglied



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

Beiträge: 85
Registriert: 30.05.2007

Catia V5 R19
Programmierung unter CATvba

erstellt am: 09. Sep. 2009 08: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

Das genaue Problem ist, dass ich Vorlagen in CATSCript habe und eigentlich grundsätzlich Probleme mit dem Source bekomme.

schreibe ich:

Code:
Eingabe=UserSel.SelectElement2(Test, "Bitte auswählen",False)

Gibt es sofort wieder den nächsten Fehler.

UserSel.Clear gibt im Übrigen auch einen Fehler beim compilieren zurück


Gesamter Source:

Code:
Dim Stat
        Dim Selfilter(3)

        Selfilter(0) = "Face"
        Selfilter(1) = "Shape"
        Selfilter(2) = "Body"
        Selfilter(3) = "BiDim"
        Stat = "Normal"
        Set oselface = Nothing
        UserSel.Clear
               
               
        Stat = mysel.SelectElement2(Selfilter, "Für Farbe bitte Fläche/Körper/Shape(Block o.ä.) auswählen! Abbruch mit ESC!", False)

        If Stat = "Normal" Then Set oselface = mysel.Item(1).Value

        End If



Was tun?

[Diese Nachricht wurde von IIYTII am 09. Sep. 2009 editiert.]

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

Tstone
Mitglied
Werkzeugkonstrukteur


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

Beiträge: 163
Registriert: 04.06.2003

Dell Precision 470
Intel Xeon CPU 3,00GHz
2GB Ram
Microsoft Windows XP
Catia V5 R18 SP6
VB2005

erstellt am: 09. Sep. 2009 09:15    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 IIYTII 10 Unities + Antwort hilfreich

Hallo
Toll wäre es wenn du den Text der Fehlermeldung mit angibst.
Desweiteren habt ich noch eine Frage zu deinem Code:
Ich kann nicht erkennen das usersel und mysel gesetzt(an ein Objekt gebunden werden) wie z.B. Set usersel = CATIA.ActiveDocument.Selection

------------------
Grüße TStone
   "Respektiere die Macht der Worte, wähle sie mit Bedacht!"

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

IIYTII
Mitglied



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

Beiträge: 85
Registriert: 30.05.2007

Catia V5 R19
Programmierung unter CATvba

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

Code:
Sub main()


        Dim Was(1)
        Was(0) = "Pad"
        Was(1) = "Line"
       
        Dim Usersel As Object
        Set Usersel = CATIA.ActiveDocument.Selection
        Usersel.Clear
       
        Dim E As Object
        E = Usersel.SelectElement2(Was, "Pad oder Linie wählen!", False)
       
        If E = "Normal" Then
       
            MsgBox (Usersel.Item(1).Value.Name)
           
        Else
       
            MsgBox ("Abbruch")
           
        End If
       
        Usersel.Clear
       
       
End Sub



Das wäre jetzt der Code 1:1 aus dem Buch von R.Ziethen, mit modifikationen an

Dim Usersel as Object
und
Dim E as Object

Als fehlerhaft wird die Zeile

Code:
E = Usersel.SelectElement2(Was, "Pad oder Linie wählen!", False)

bezeichnet mit

Runtime Error 91
Object Variable or with block variable not set

Und im Grunde muss ich bei fast jedem Beispiel erstmal alles in CATvba übersetzen was mich derzeit leider ziemlich ausbremst.

Gruß und danke

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: 09. Sep. 2009 17:56    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 IIYTII 10 Unities + Antwort hilfreich

Hallo,

IMHO ist dein letztes Beispiel auch nicht "sauber" programmiert. Versuch mal folgendes:

Code:

Sub main()


        Dim Was(1)
        Was(0) = "Pad"
        Was(1) = "Line"
     
        Dim Usersel As Object
        Dim myDoc as Document
        Set myDoc = CATIA.ActiveDocument
        Set Usersel = myDoc.Selection
        Usersel.Clear
     
        Dim E As Object
        E = Usersel.SelectElement2(Was, "Pad oder Linie wählen!", False)
     
        If E = "Normal" Then
     
            MsgBox (Usersel.Item(1).Value.Name)
         
        Else
     
            MsgBox ("Abbruch")
         
        End If
     
        Usersel.Clear
     
     
End Sub


Hierbei wird erstmal das Objekt myDoc erzeugt und gefüllt. Anschließend wird von diesem Objekt das Selektionsobjekt abgeleitet. Das sollte 100% funktionieren. Zumindestens bei mir und ich habe das schon in so vielen Fällen eingesetzt. Obiges Makro habe ich gerade mir R18 erfolgreich getestet 

------------------
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

Tstone
Mitglied
Werkzeugkonstrukteur


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

Beiträge: 163
Registriert: 04.06.2003

Dell Precision 470
Intel Xeon CPU 3,00GHz
2GB Ram
Microsoft Windows XP
Catia V5 R18 SP6
VB2005

erstellt am: 10. Sep. 2009 08:56    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 IIYTII 10 Unities + Antwort hilfreich

Hallo
Das Problem liegt in den beiden folgenden Befehlen:

Dim E As Object
E = Usersel.SelectElement2(Was, "Pad oder Linie wählen!", False)

Du deklarierst E als Variable vom Typ "Object". Variablen diesen Typs sind Referenztypen, d.h. sie werden mit einem Verweis auf ein Objekt belegt, aus diesem Grund werden sie in VBA mit dem SET- Befehl gesetzt.
Dim E As Object
Set E = Usersel.SelectElement2(Was, "Pad oder Linie wählen!", False)

ABER SelectElement2 gibt als Rückgabewert ein CATBSTR zurück, das ist eine Variante des String. Somit sollte:

Dim E As String
E = Usersel.SelectElement2(Was, "Pad oder Linie wählen!", False)

funktionieren. Ansonsten:

Dim E As Variant
E = Usersel.SelectElement2(Was, "Pad oder Linie wählen!", False)

funktioniert auf jeden fall.

------------------
Grüße TStone
   "Respektiere die Macht der Worte, wähle sie mit Bedacht!"

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

IIYTII
Mitglied



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

Beiträge: 85
Registriert: 30.05.2007

Catia V5 R19
Programmierung unter CATvba

erstellt am: 10. Sep. 2009 10:05    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

Danke, funktioniert jetzt!!

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

buecherm83
Mitglied
Ingenieur IT Application Software


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

Beiträge: 78
Registriert: 20.09.2011

SIEMENS NX10
CATIA V5 R26
VB7.1
Tecnomatix Process Designer/Simulate<P>Win7 64bit
Office 2016

erstellt am: 19. Feb. 2014 10:31    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 IIYTII 10 Unities + Antwort hilfreich

Hallo

habe das gleiche Problem.

in CATScript funktioniert es einwandfrei in CATVBA nicht.

habe das CATScript wie beschrieben verändert jedoch bekomme ich immer noch eine Fehlermeldung.
Wichtig bei meinem Script ist, das ich "SelectElement3" benutzen kann.

Code:
Sub CATMain()

    Dim MyDoc
    Dim MySelection As Object
    Dim Was(1)
    Dim E As Object
   
    Set MyDoc = CATIA.ActiveDocument
    Set MySelection = MyDoc.Selection
   
    MySelection.Clear
   
    Was(0) = "AnyObject"
    Was(1) = "AnyObject"
   
    Set E = MySelection.SelectElement3(Was, "Bitte die Elemente selektieren", False, CATMultiSelTriggWhenUserValidatesSelection, False)
   
    If E = "Normal" Then
        MsgBox (UserSel.Item(1).Value.Name)
       
    Else
       
        MsgBox "Abbruch"
       
    End If

End Sub


Beim Durchlauf erscheint schon nicht das Auswahlset.

Die Fehlermeldung lautet: Object requiered

kann mir jemand weiterhelfen?

Grüße

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

imation1999
Mitglied
dipl.-ing. Maschinenbau


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

Beiträge: 276
Registriert: 02.08.2011

Dell Precision T3500
Intel® Xeon® Quad Core
NVIDIA Quadro® 5000
Win7 x64 Ultimate
CATIA V5 R20 SP2

erstellt am: 19. Feb. 2014 10:56    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 IIYTII 10 Unities + Antwort hilfreich

Hallo,

versuch mal so:

Code:

Sub CATMain()
    Dim MyDoc
    Dim MySelection As Object
    Dim Was(1)
    Dim E 'As Object
   
    Set MyDoc = CATIA.ActiveDocument
    Set MySelection = MyDoc.Selection
   
    MySelection.Clear
   
    Was(0) = "AnyObject"
    Was(1) = "AnyObject"
   
    E = MySelection.SelectElement3(Was, "Bitte die Elemente selektieren", False, CATMultiSelTriggWhenUserValidatesSelection, False)
   
    If E = "Normal" Then
        MsgBox (MySelection.Item(1).Value.Name)
       
    Else
       
        MsgBox "Abbruch"
       
    End If

End Sub


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

buecherm83
Mitglied
Ingenieur IT Application Software


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

Beiträge: 78
Registriert: 20.09.2011

SIEMENS NX10
CATIA V5 R26
VB7.1
Tecnomatix Process Designer/Simulate<P>Win7 64bit
Office 2016

erstellt am: 19. Feb. 2014 11:09    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 IIYTII 10 Unities + Antwort hilfreich

ok, damit wäre ich einen kleiner Schritt weiter.

die Fehlermeldung ist weg.

jedoch kann nur ein Element auswählen. Das Auswahlset über "CATMultiSelTriggWhenUserValidatesSelection" erscheint nicht.

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: 19. Feb. 2014 11: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 IIYTII 10 Unities + Antwort hilfreich

Servus
Der von imation1999 gepostete Code läuft bei mir.
Was gebt bei dir nicht? Wo weicht dein Code ab?

Gruß
Bernd

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

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

buecherm83
Mitglied
Ingenieur IT Application Software


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

Beiträge: 78
Registriert: 20.09.2011

SIEMENS NX10
CATIA V5 R26
VB7.1
Tecnomatix Process Designer/Simulate<P>Win7 64bit
Office 2016

erstellt am: 19. Feb. 2014 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 IIYTII 10 Unities + Antwort hilfreich

ich kann maximal 1 element selektieren.

Und in CATScript habe ich das Auswahlset angezeigt bekommen, so dass ich nochmal sehen was ausgewählt wurde.

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