Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Variable aus Userform in Modul einlesen

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:  Variable aus Userform in Modul einlesen (3454 mal gelesen)
Sk89
Mitglied
Studentin


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

Beiträge: 29
Registriert: 19.05.2010

Windows XP x64
CATIA V5 R19
VBA 6.5
VB

erstellt am: 07. Jun. 2010 07: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

Hallo

ich hab noch nie mit Userforms gearbeitet und stehe grade vor einem Problem. Es ist wahrscheinlich sehr einfach aber ich komme nicht drauf.

ich habe hier mein Modul

Sub Makro2()

Set oDrawing = CATIA.ActiveDocument
Dim oSheet As DrawingSheet
Set oSheet = oDrawing.Sheets.Item(4)
oSheet.Activate


Dim Eingabea As String
Eingabea = "...XX-XXX_XXXXXX\"
Boxb = InputBox("Geben Sie den Pfad ein, in der die Parts abgespeichert sind.", "Pfadeingabe", Eingabea)
If Boxb = "" Then
    Exit Sub
Else
  Dim ADoce As Document

    'oDatei =
    Set ADoce = CATIA.Documents.Open(Boxb & "31-38D_781287_________00_409_WINKEL.CATPart")
    Set oPart = CATIA.ActiveDocument

    oPart.Activate
   
    Set specsAndGeomWindow1 = CATIA.ActiveWindow

    Set viewer3D1 = specsAndGeomWindow1.ActiveViewer

    viewer3D1.Reframe

    Set Viewpoint3D1 = viewer3D1.Viewpoint3D


    CATIA.StartCommand ("Multi-View")

   
    EA.Show


Hier möchte ich dann eine Ebene abfragen yx zx oder yz. Dafür die Userform EA

     
  Public Sub yxEbene_Click()
   
    Set oPart = CATIA.Windows.Item(2)
    Set oDrawing = CATIA.Windows.Item(1)
  oDrawing.Activate
  Dim oSheet As DrawingSheet
  Set oSheet = CATIA.Windows.Item(1).Sheets.Item(4)
  oSheet.Activate
   
    Dim oFrontView As DrawingView
    Set oFrontView = oSheet.Views.Add("")


    ' Retrieve it generative behavior
   
    Dim oFrontViewGB As DrawingViewGenerativeBehavior
    Set oFrontViewGB = oFrontView.GenerativeBehavior
   
   
    ' Das Part das gezeichnet werden soll wird deklariert

    oFrontViewGB.Document = oPart

  oFrontViewGB.DefineFrontView 1, 0, 0, 0, 0, -1

    ' Die Ansicht wird nun in der Zeichnung positioniert
   
    oFrontView.X = 300
    oFrontView.Y = 150
   
   
    ' Die Anischt wird aktualisiert
   
    oFrontViewGB.Update
   
   
    'Die Ansicht wird aktiviert
   
    oFrontView.Activate
   
   
    'Eine zweite Anischt wird erzeugt
   
    Set drawingViewGenerativeBehavior1 = oFrontViewGB
   
   
    ' Die Ansicht heißt "Top View" und ist die Draufsicht
   
    Set DrawingView2 = oSheet.Views.Add("")
   
    Set drawingViewGenerativeBehavior2 = DrawingView2.GenerativeBehavior
   
    drawingViewGenerativeBehavior2.DefineProjectionView drawingViewGenerativeBehavior1, catTopView
   
    Set drawingViewGenerativeLinks1 = DrawingView2.GenerativeLinks
   
    Set drawingViewGenerativeLinks2 = oFrontView.GenerativeLinks
   
    drawingViewGenerativeLinks2.CopyLinksTo drawingViewGenerativeLinks1
   
   
    ' Die Draufsicht wird in der Zeichnung positioniert
   
    DrawingView2.X = 300
    DrawingView2.Y = -95
   
    Dim double1
    double1 = oFrontView.Scale
   
    Set drawingViewGenerativeBehavior2 = DrawingView2.GenerativeBehavior
   
   
    ' Die Draufsicht wird aktualisiert
   
    drawingViewGenerativeBehavior2.Update
   
    DrawingView2.ReferenceView = oFrontView
   
    DrawingView2.AlignedWithReferenceView
   
    CATIA.StartCommand ("Multi-View")
   
    'Hier soll die Userform beendet werden und das Makro soll nun zurück in Makro2 an die Stelle gehen, wo ich die userform EA     
    aufgerufen habe

    Call Makro2
   
End Sub

  Hier beginnt Makro 2
   
    oDrawing.Activate
    oSheet.Activate

End If
 
End Sub

Das ist glaub ich die komplizierte Variante

kann man vielleicht auch den Zahlencode der FETT ist als Variable aus der userform lesen und dann das ganze was in der userform steht in das makro2 schreiben weil das Programm brauch ich für 3 Ebenen.

Lg steffi

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: 07. Jun. 2010 07: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 Nur für Sk89 10 Unities + Antwort hilfreich

Servus
Was meinst du mit UserForm, programmierst du in VBA? Oder meinst du eine Inputbox?
Über eine InputBox könnte es so gehen:
- Eingabe von xy, yz oder xz
- dann:
Code:
if Input = "xy" then
oFrontViewGB.DefineFrontView 1, 0, 0, 0, 0, -1
elseif Input = "xz" then
oFrontViewGB.DefineFrontView ...

Oder willst die Ebene selektieren?

Gruß
Bernd

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

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

Sk89
Mitglied
Studentin


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

Beiträge: 29
Registriert: 19.05.2010

Windows XP x64
CATIA V5 R19
VBA 6.5
VB

erstellt am: 07. Jun. 2010 08:03    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

Ich arbeite in VBA.

Ich habe eine Userform erstellt sprich, es geht ein Fenster auf mit 3 Button und man muss einen auswählen.
Wenn ich ihn ausgewählt habe, möchte ich entweder, dass das Programm so durchläuft wie oben dargestellt oder dass ich sage, der Ebenen Code (das was Fett gedruckt ist) wird definiert und dann im Modul an der Stelle eingefügt wird, an der es gebraucht wird.
Ich weiß halt nicht, ob man das flexibel einstellen kann. sprich variable test =  kann bei button xy 123456 sein und bei button zx 654321 und ich brauch dann nur noch  oFrontViewGB.DefineFrontView test einzugeben.

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: 07. Jun. 2010 08:16    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 Sk89 10 Unities + Antwort hilfreich

Hallo,

so wie ich das verstehe machen doch die beiden Buttons exakt des selbe bis auf das ein andere Wert bei der Funktion DefineFrontView übergeben wird. D.h. ziehe die komplette Routine die dir die FrontView erstellen aus dem Click Ereignis raus (in eine eigene Funktion). Die Funktion rufst du in den Click Ereignis auf und übergibst halt die entsprechenden Werte. Hier mal ein kleines Beispiel:

Sub Button1_Click()
  Test "987654"
End Sub

Sub Button2_Click
  Test "123456"
End Sub

Private Function Test(ByVal uebValueStr as String)
    Msgbox "Übergabewert:" +vbTab + uebValueStr
End Function

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

Sk89
Mitglied
Studentin


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

Beiträge: 29
Registriert: 19.05.2010

Windows XP x64
CATIA V5 R19
VBA 6.5
VB

erstellt am: 07. Jun. 2010 08: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

Ja genau das soll das Makro können, kannn ich das dann nicht auch in dem makro 2 weiterlaufen lassen was du in die Funktion schreiben möchtest?

sprich so

Sub Makro2()

Set oDrawing = CATIA.ActiveDocument
Dim oSheet As DrawingSheet
Set oSheet = oDrawing.Sheets.Item(4)
oSheet.Activate


Dim Eingabea As String
Eingabea = "...XX-XXX_XXXXXX\"
Boxb = InputBox("Geben Sie den Pfad ein, in der die Parts abgespeichert sind.", "Pfadeingabe", Eingabea)
If Boxb = "" Then
    Exit Sub
Else
  Dim ADoce As Document

    'oDatei =
    Set ADoce = CATIA.Documents.Open(Boxb & "31-38D_781287_________00_409_WINKEL.CATPart")
    Set oPart = CATIA.ActiveDocument

   

    oPart.Activate
   
    Set specsAndGeomWindow1 = CATIA.ActiveWindow

    Set viewer3D1 = specsAndGeomWindow1.ActiveViewer

    viewer3D1.Reframe

    Set Viewpoint3D1 = viewer3D1.Viewpoint3D


    CATIA.StartCommand ("Multi-View")

    'Userform wird aufgerufen
   
    EA.Show
   
    oDrawing.Activate
    oSheet.Activate

    Dim oFrontView As DrawingView
    Set oFrontView = oSheet.Views.Add("")


    ' Retrieve it generative behavior

    Dim oFrontViewGB As DrawingViewGenerativeBehavior
    Set oFrontViewGB = oFrontView.GenerativeBehavior


    ' Das Part das gezeichnet werden soll wird deklariert

    oFrontViewGB.Document = oPart
 


    ' Diese Ansicht wird als Vorderansicht definiert, die Projektionsebene ist die xy Ebene
   
    oFrontViewGB.DefineFrontView test   
   
    ' Die Ansicht wird nun in der Zeichnung positioniert
   
    oFrontView.X = 300
    oFrontView.Y = 150
   
   
    ' Die Anischt wird aktualisiert
   
    oFrontViewGB.Update
   
   
    'Die Ansicht wird aktiviert
   
    oFrontView.Activate

End If


   
End Sub


und in EA steht dann


Public Sub yxEbene_Click()

test = "1,0,0,0,0,-1"

End Sub

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: 07. Jun. 2010 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 Nur für Sk89 10 Unities + Antwort hilfreich

Hallo  ,

ja sicher kannst du das. Du musst dir in der Routinendefinition nur einen Übergabewert einrichten:

Code:
Sub Makro2(ByVal uebTheStringStr as String)
  ....
End Sub

ANMERKUNG:
Die Funktion "DefineFrontView" will als übergabe fünf Doublewerte. Schickst du der Routine nun einen String musst du in mit Hilfe der Funktionen Split und CDbl wieder in 6 Doublewerte zerlegen. Oder du übergibst gleich die 6 Doublewerte. Hier wird aber der Prozedurkopf recht lang 

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

Sk89
Mitglied
Studentin


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

Beiträge: 29
Registriert: 19.05.2010

Windows XP x64
CATIA V5 R19
VBA 6.5
VB

erstellt am: 07. Jun. 2010 10:11    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

Wenn ich etwas in die Klammer schreibe kann ich das makro nicht mehr starten was mach ich da flasch hab jetzt eingegeben

Sub Makro2(ByVal test As String)

Ich kenn mich leider sehr wenig in VBA aus

Lg

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



Ingenieur für Entwicklung mechanischer Konstruktionen im R&D (w/m/d)
<...
Anzeige ansehenEntwicklung
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. Jun. 2010 14: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 Sk89 10 Unities + Antwort hilfreich

Hallo,

die Initialroutine heißt IMMER Sub CATMain(). Aus dieses raus kannst du dann dein Makro2 aufrufen. Dann funktioniert auch die Übergabe

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

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