Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makroerstellung: Weiterverwendung von sektiertem Element für Rotate-Befehl

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:  Makroerstellung: Weiterverwendung von sektiertem Element für Rotate-Befehl (1329 mal gelesen)
Hannes12
Mitglied
Konstrukteur


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

Beiträge: 31
Registriert: 09.02.2010

erstellt am: 09. Feb. 2010 15:18    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 bin noch ein Neuling im Bereich "Makroerstellung" und habe ein Problem. Ich habe nun schon den ganzen Tag in diesem Forum nach einer Lösung gesucht aber habe leider nichts gefunden, sodass ich hoffe, dass mir einer von euch helfen kann! 

Zu dem Makro:
Zweck des Makros ist, eine Fläche um 72 Grad um eine Achse mit dem Befehl "Rotate" zu drehen. Die Fläche und die Achse, welche für den Befehl "Rotate" benötigt werden, sollen dabei von dem Anwender während der Ausführung des Makros frei wählbar sein, was ich mit dem Code "SelectElement2" realisiert habe. Leider schaffe ich es nicht, die selektierte Fläche, bzw. die selektierte Achse, für den Befehl "Rotate" weiter zu verwenden.

Das Makro habe ich ersteinmal so weit vereinfacht, dass man vorerst nur die zu drehende Fläche frei auswählen soll (die Auswahl der Achse müsste ja prinzipiell genau so funktionieren). Die Achse ist also bei diesem Makro-Code nicht frei auswählbar.

Der Quelltext für das Marko, den ich bisher erstellt habe sieht so aus:

Code:
Sub CATMain()

'---------------------------------------- Tuerfaeche drehen -------------------------------------------------
Dim myDoc As Document
Set myDoc = CATIA.ActiveDocument


'--------- 3D Werkzeugkasten definieren ----------------------

Dim Hauptkoerper As Part
Set Hauptkoerper = CATIA.ActiveDocument.Part

Dim Wzk3D As HybridShapeFactory
Set Wzk3D = Hauptkoerper.HybridShapeFactory
'---------------------------------------------------------------------

'--------- Referenzen deklarieren ------------------------------

' Auswahl festlegen -------------------
Dim Was(0)
Was(0) = "Face"
'-------------------------------------------

' Selektion definieren und leeren ----
Dim UserSel As Object
Set UserSel = myDoc.Selection
UserSel.Clear
'------------------------------------------

' Selektion vornehmen lassen -------
Dim Auswahl

Box = MsgBox("Bitte wählen Sie die Fläche der Tür aus", vbInformation + vbOKCancel, "Fläche der Tür auswählen")
   
    If Box = vbCancel Then
        Box = MsgBox("Sie haben die Selektion abgebrochen" + Chr(10) + "Das Makro wird nun beendet!", vbCritical, "Abbruch durch Nutzer")
        Exit Sub
    End If

Auswahl = UserSel.SelectElement2(Was, "Fläche der Tür auswählen", False)
   
If Auswahl = "Normal" Then
    Set Tuerflaeche = UserSel.Item(1).Value
Else
    Box = MsgBox("Sie haben die Selektion abgebrochen" + Chr(19) + "Das Makro wird beendet!", vbCritical, "Abbruch durch Nutzer")
    Exit Sub
End If

UserSel.Clear
'-----------------------------------------

'---------------------------------------------------------------------

'--------- Rotation vordefinieren -------------------------------
Dim Rot As HybridShapeRotate                                      ' Objekt Rot deklarieren
Set Rot = Wzk3D.AddNewEmptyRotate()                              ' Zuweisung

Rot.ElemToRotate = Tuerflaeche    'FUNKTIONIERT NICHT!!!!!!!
Rot.VolumeResult = False
Rot.RotationType = 0

        Dim reference2 As Reference
        Set reference2 = Hauptkoerper.Parameters.Item("Result of Copy of Scharnierachse")

Rot.Axis = reference2
Rot.AngleValue = -78#

'--------------------------------------------------------------------

'------- Rotation  zuweisen -----------------------------------------

Dim Geo As HybridBodies
Set Geo = myDoc.Part.HybridBodies
Dim Flaechen As HybridBody
Set Flaechen = Geo.Item("Gedrehte Tuerflaeche")            'Set ist schon vorhanden

Flaechen.AppendHybridShape Rot
'--------------------------------------------------------------------

Hauptkoerper.Update

'------------------------------------------------------------------------------------------------------------------
End Sub


Ich hoffe mir kann jemand weiterhelfen! 
Grüße Hannes

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: 09. Feb. 2010 15:46    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 Hannes12 10 Unities + Antwort hilfreich

Servus

Das "ElemToRotate" muss eine Referenz sein.
Versuch es mal mit:
Set Tuerflaeche = CreatReferenceFromObject(UserSel.Item(1).Value)

Gruß
Bernd

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

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

Hannes12
Mitglied
Konstrukteur


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

Beiträge: 31
Registriert: 09.02.2010

erstellt am: 09. Feb. 2010 15:59    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 Bernd! Danke für die schnelle Antwort! Die Begründung macht für mich als Leihen momentan auf jeden Fall Sinn! Leider bringt mich dein Vorschlag nicht sonderlich weiter...

Mein Quelltext habe ich an der einen Stelle nun so geändert:

Code:
If Auswahl = "Normal" Then
    Set Tuerflaeche = CreateReferenceFromObject(UserSel.Item(1).Value)
       
Else

Ich bekomme dann aber als Fehlermeldung: "Compile error: Sub or Function not defined". Das fett-geschriebene markiert er mir dabei...

Mit

Code:
Set Tuerflaeche = Hauptkoerper.CreateReferenceFromObject(UserSel.Item(1).Value)
funktioniert es leider auch nicht.

Gruß Hannes


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. Feb. 2010 19:20    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 Hannes12 10 Unities + Antwort hilfreich

Hallo Hannes,

das erste kann nicht funktionieren das die Methode "CreateReferenceFromObject" eine Methode ist die unter der Part-Klasse zu finden ist.

Leider muss ich Bernd in diesem speziellen Fall wiedersprechen. Das Problem ist das die Fläche die du aus der Selektion bekommst an sich kein Objekt ist sondern wiederrum nur eine Selektionsreferenz.

Das heißt du musst dich ein bisschen mit den BRep Strings auseinandersetzen.

Zuerst selektierst du die Fläche und bekommst eine Referenz. Diesen "BREP Referenz String" musst du so zerlegen das du ihn mit der Funktion "CreateReferenceFromBRepName" in eine "normale" Referenz zerlegen kannst den nur eine solche wird auch von dem Rotationsobject angenommen 

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

Hannes12
Mitglied
Konstrukteur


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

Beiträge: 31
Registriert: 09.02.2010

erstellt am: 10. Feb. 2010 09:50    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 Daniel!
Erstmal danke für die Antwort. Habe mir auf jeden Fall die Seiten zu diesem Thema in dem Buch "Makroprogrammierung mit Visual Basic Script" durchgelesen. Leider finde ich, dass das Thema Boundary-Representation ziehmlich unübersicht dargestellt ist. Kann damit also leider nicht so viel anfangen?
Kannst du mir deinen Vorschlag vielleicht etwas genauer erklären? Vielleicht mit einem kleinen Beispiel? 
Danke!

Grüße Hannes

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

Hannes12
Mitglied
Konstrukteur


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

Beiträge: 31
Registriert: 09.02.2010

erstellt am: 10. Feb. 2010 11:00    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 nochmal!    

Hab nun die Lösung des Problems hier im Forum gefunden:  http://ww3.cad.de/foren/ubb/Forum137/HTML/002415.shtml#000000

Danke für eure Hilfe!    

[Diese Nachricht wurde von Hannes12 am 10. Feb. 2010 editiert.]

[Diese Nachricht wurde von Hannes12 am 10. Feb. 2010 editiert.]

[Diese Nachricht wurde von Hannes12 am 10. Feb. 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: 10. Feb. 2010 11:50    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 Hannes12 10 Unities + Antwort hilfreich

Hallo Hannes,

kannst du den Link bitte von der Datei auf den Beitrag setzen. Dann kommen die Leute direkt zum Beitrag und können sich den den Anhang anschauen. Danke 

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

Hannes12
Mitglied
Konstrukteur


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

Beiträge: 31
Registriert: 09.02.2010

erstellt am: 10. Feb. 2010 12: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

Hab ich soeben gemacht!  Gruß

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

sawah
Mitglied



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

Beiträge: 65
Registriert: 07.06.2011

XP, CATIA V5 R19

erstellt am: 29. Jun. 2011 10:06    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 Hannes12 10 Unities + Antwort hilfreich

Hallo zusammen,

ich habe das gleiche Problem, kriege es aber nicht hin. kann mir jemand weiter helfen?
ich habe so was probiert: 

Code:
Dim ref As Reference
ref = Hauptkoerper.CreateReferenceFromBRepName(????, Tuerflaeche)


Gruß

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: 29. Jun. 2011 10:33    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 Hannes12 10 Unities + Antwort hilfreich

Servus
Und von was willst du eine Referenz machen?
Wenn es schon in der Selection ist könnte es über zB
Set ref = oSelection.Item2(1).reference
gehen.

Gruß
Bernd

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

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



Projektingenieur Anlagenplanung (m/w/d)
<...
Anzeige ansehenProjektmanagement
sawah
Mitglied



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

Beiträge: 65
Registriert: 07.06.2011

XP, CATIA V5 R19

erstellt am: 29. Jun. 2011 11: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 Hannes12 10 Unities + Antwort hilfreich

Hallo bgrittmann,

ich will das Beispiel von Hannes ins laufen bringen, kriege ich leider nicht hin.
später werde ich das anpassen das ich ein Koordinatensystem XYZ drehen kann.

Gruß

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