Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Unterschied zwischen CATScript und VBA

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:  Unterschied zwischen CATScript und VBA (1366 mal gelesen)
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: 03. Nov. 2015 13:40    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 Zusammen,

dieses Makro funktioniert unter VBA7 problemlos. Ich möchte aber als CATScript auch laufen lassen. Es läuft ab und zu auf Fehler. 

Code:

Dim sName(10) As String

Dim documents1 As Documents
Dim partDocument1 As PartDocument
Dim part1 As Part
Dim hybridBodies1 As HybridBodies
Dim hybridBodies2 As HybridBodies
Dim selection1
Dim hybridBody1 As HybridBody
Dim Pfad As String
Dim i As Integer


Sub CATMain()

Set documents1 = CATIA.Documents
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part


Set selection1 = partDocument1.Selection
Set hybridBodies1 = part1.HybridBodies


sName(0) = selection1.Item(1).Value.Name
Pfad = sName(0)

Set hybridBody1 = selection1.FindObject("CATIAHybridBody")
   
    i = 1
    Call ReadTree(hybridBody1)
   
    MsgBox Pfad
 
End Sub

Sub ReadTree(hybridBody1)
   
   
    sName(i) = hybridBody1.Name
   
    Pfad = Pfad & " / " & sName(i)
   
    Set hybridBodies2 = hybridBody1.Parent
   
    If hybridBodies2.Name <> "HybridBodies" Then    'unter CATScript gibt es manchmal keine Name mit "HybridBodies"
       
        i = i + 1
        Call ReadTree(hybridBodies2)
       
    End If
   
End Sub


Könnt Ihr mal bitte weiterhelfen?
Danke im Voraus

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: 03. Nov. 2015 13: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 imation1999 10 Unities + Antwort hilfreich

Servus

Kannst du nicht einfach in der IF-Bedingung den Typ des "hybridBodies2.Parent" auswerten?
(zB if TypeName(hybridBodies2.Parent) = "HybridBodies")

Gruß
Bernd

PS: ggf bekommst du den Pfad schnell über "GetNameToUseInRelation"

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

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: 03. Nov. 2015 14:17    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


CATSCRIPT_VBA.jpg

 
Hallo Bernd,

danke für die Antwort.

Mit "TypeName(hybridBodies2.Parent) = "HybridBodies"" wird nicht das komplett Baum ausgelesen.

Mit GetNameToUseInRelation funktioniert natürlich, aber ich will das ganzes Makro jetzt nicht umschreiben.

Bitte den "Punkt2" selektieren (siehe Bild), dann das Makro einmal als CATScript, dann als VBA laufen lassen. Ich möchte gerne wissen, warum kriege ich verschiedene Ergebnis?

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: 03. Nov. 2015 14: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 imation1999 10 Unities + Antwort hilfreich

Servus
Du kannst auch die Rekursion so lange ausführen, bis "TypeName(hybridBodies2.Parent)" das Part ist.

Gruß
Bernd

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

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: 03. Nov. 2015 15:14    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

mit TypeName(hybridBodies2) <> "Part" then

CATSript - Point2 selektiert:
Pfad = Point.2 / Geoset2 / Geoset1

CATSript - Point1 selektiert:
Pfad = Point.1 / Geoset1 / HybridBodies 

VBA - läuft auf Fehler

Ich verstehe es nicht.

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: 04. Nov. 2015 17:17    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 imation1999 10 Unities + Antwort hilfreich

Was denn für ein Fehler an welcher Stelle?

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

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: 04. Nov. 2015 18:37    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 Henry,


Code:

Sub ReadTree(hybridBody1)
   
   
    sName(i) = hybridBody1.Name
   
    Pfad = Pfad & " / " & sName(i)
   
    Set hybridBodies2 = hybridBody1.Parent
   
    If TypeName(hybridBodies2) <> "Part" Then    'unter VBA wird die TypeName nie "PART" sein, deswegen sName(10) wird voll sein.
       
        i = i + 1
        Call ReadTree(hybridBodies2)
       
    End If
   
End Sub

[Diese Nachricht wurde von imation1999 am 04. Nov. 2015 editiert.]

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: 04. Nov. 2015 18: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 imation1999 10 Unities + Antwort hilfreich

Servus
Klar dass da ein Fehler kommt, "hybridBodies2" ist ja auch "Hybridbodies" dimensioniert da können die Objekte nicht zusammenpassen.
Besser zB so aufbauen:
Code:
If TypeName(hybridBody1.Parent) <> "Part" Then
Set hybridBodies2 = hybridBody1.Parent
Gruß
Bernd

PS: So lange du schon rumporbierts, hättest du auch meine alternativen Lösungsvorschlag verwirklichen können.
------------------
Warum einfach, wenn es auch kompliziert geht.

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: 04. Nov. 2015 19: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

Danke Bernd,

ich habe schon am Vormittag das ganze Makro mit Hilfe von "GetNameToUseInRelation" eigentlich fertig gemacht.
Aber wie gesagt, mein erstes Post funktioniert ganz schön unter VBA. Ich wollte / will wissen, warum geht  als CATScript nicht.

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