Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro unterbrechen

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:  Makro unterbrechen (2441 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: 29. Jul. 2010 09: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

Hallöchen 

wie kann ich ein Makro unterbrechen um ein neues Zeichnungsblatt einzufügen?
Sprich ich lasse das Makro durchlaufen, dann kommt eine Abfrage ("Möchten Sie die nächste Ansicht auf ein neues Blatt einfügen"). Wenn hier ja gedrückt wird, soll das Makro unterbrochen werden und erst dann weiterlaufen, wenn das neue Blatt eingefügt worden ist. Wenn dies so nicht möglich ist dann mit einer Msgbox oder Userform ("Klicken sie auf OK wenn Sie das neue Blatt eingefügt haben.")

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: 29. Jul. 2010 11: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

Servus
Du könntest doch einfach zB über eine If-Schleife im Makro selbst dass neue Blatt erstellen.

Gruß
Bernd

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

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: 29. Jul. 2010 11: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 Sk89 10 Unities + Antwort hilfreich

Hallo zusammen,

zunächst einmal muss ich etwas korrigieren, was nicht weiter schlimm ist, da wir uns ja verstehen, aber der vollständigkeit halber: If ist keine Schleife, sondern eine Abfrage. 

Dann halte ich es auch für besser dies im Makro anzulegen.
Theoretisch gibt es auch nur 2 Möglichkeiten, wie das Makro erkennt, ob' etwas neu eingefügt wurde. Entweder es wird ihm gesagt, durch den Dialog z.B. vom Benutzer, oder durch ständiges schauen ob sich etwas geändert hat (polling).

Ein Listener wäre das beste Mittel, das gibt's im VB aber leider nicht. Mit Polling (alle paar Sekunden nachschauen ob sich etwas geändert hat) habe ich in VB bisher nur schlechte Erfahrungen gesammelt zwecks Prozessorlast, wäre auf eine gangbare Lösung aber auch gespannt.

Damit wäre ich wieder bei Bernds Antwort, dies lieber im Tool selbst zu automatisieren.

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

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: 29. Jul. 2010 12: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

Das Problem liegt darin,dass ich über ein Makro nur ein leeres Sheet einfügen kann. Ich brauch aber ein Sheet, was den gleichen Rahmen hat, wie die Sheets zuvor. Und dies kommt vom Startmodell.


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

tberger
Mitglied
Application Manager CATIA V5 / V6


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

Beiträge: 1385
Registriert: 13.01.2007

WIN 7 64bit
V5R21SP3HF49
3DX/V6 R2016x

erstellt am: 29. Jul. 2010 14:04    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

Man kann doch Views (die einen Rahmen enthalten) per Makro kopieren in eine andere Zeichnung einfügen. Dafür gibts auch schon einige Makros, die herumgeistern.

------------------
Grüße aus dem Thurgau
Thomas

+++++++++++++++++++++++++++++++++

CATIA - eine Laune der Natur ...

"Phase 2 in CATIA V5"  - www.tobeplus.de

         tberger@tobeplus.de

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: 29. Jul. 2010 14: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

Ich will das Blatt aber nicht kopieren, sondern neu einfügen. Auf den Blättern davor sind schon Ansichten, deswegen kann ich sie nicht kopieren.
Und wenn es wirklich solch ein Makro geben sollte, finde ich es leider nicht. Ich finde nur Makros, wo man ein leeres Blatt einfügt.

Hab es auch schon durch Aufnehmen probiert, aber hier kann ich gar nicht auswählen, welcher Rahmen übernommen werden soll.

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

roccat
Mitglied
Konstrukteur


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

Beiträge: 172
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 29. Jul. 2010 16: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 Nur für Sk89 10 Unities + Antwort hilfreich

Hallo tberger,

ich würde mich den Vorrednern anschliessen und das Sheet per Makro kopieren. Kannst das ja mal so versuchen, evtl hilfts. Ist aber vba kein catscript sollte sich aber auch umschreiben lassen.

Option Explicit

Sub ViewCopy()

Dim MyDrawing  As DrawingDocument
Dim MySheets    As DrawingSheets
Dim MyOldSheet  As DrawingSheet
Dim MyNewSheet  As DrawingSheet
Dim MyViews    As DrawingViews
Dim MyView      As DrawingView
Dim MySelection As Selection

'Document holen
Set MyDrawing = CATIA.ActiveDocument

'Selection holen und sicherheitshalber löschen
Set MySelection = MyDrawing.Selection
MySelection.Clear

'alle Sheets holen
Set MySheets = MyDrawing.Sheets

'Sheet zum kopieren holen (evtl. über eine UserSelection holen)
Set MyOldSheet = MySheets.Item(1)
'oder
'Set MyOldSheet = MySheets.GetItem("Sheet.1")

'kopieren
MySelection.Add MyOldSheet
MySelection.Copy
MySelection.Clear
MySelection.Add MyDrawing.DrawingRoot
MySelection.Paste

'neues Sheet holen und selection löschen
Set MyNewSheet = MySelection.Item2(1).Value
MySelection.Clear

'Views löschen (ausser RahmenView)  !!!Gelockte Views erst unlocken!!!
Set MyViews = MyNewSheet.Views
For Each MyView In MyViews
    'Hier die Views ausschließen die nich mit gelöscht werden sollen
    If MyView.Name <> "Background View" And MyView.Name <> "Main View" Then
        MyView.LockStatus = False
        MySelection.Add MyView
    End If
Next
MySelection.Delete
MySelection.Clear

'Namen vergeben
MyNewSheet.Name = "Ich_eine_neue_View"

'Sheet oder Drawing updaten
MyNewSheet.Update
MyDrawing.Update

End Sub

mfG
Mario

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

roccat
Mitglied
Konstrukteur


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

Beiträge: 172
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 29. Jul. 2010 16: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

Sorry, meinte Sk89 nicht tberger 

mfG
Mario

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

roccat
Mitglied
Konstrukteur


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

Beiträge: 172
Registriert: 19.02.2010

WinXP/Win7
Office XP/2007
Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR
VB .Net 2010

erstellt am: 29. Jul. 2010 17:32    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

Ich noch mal...
eine andere Variante wäre (für Catvba mit einer Form mit einem oder zwei Button).

Du unterteilst es in zwei Sub´s und Dimensionierst Variablen die du weiterbenutzen willst Global. "Public"

Also:

1. Sub 1 wird gestartet und macht irgendetwas, dann kommt die Abfrage:
    Blatt einfügen? wenn ja dann Sub beenden wenn nein dann weiter mit Sub 2

2. Sollte ja gedrückt wurden sein, dann kann der Benutzer sein Blatt einfügen (dazu könntest du mal erklären wie der Benutzer das macht). Wenn er das gemacht hat drückt er auf einem Button "Weiter" auf einer Form und dieser startet Sub2. Solltest du noch das neue Sheet gebrauchen kannst du ja vor dem "Weiter" klicken dieses anselektieren oder eine UserSelection einbauen.

Ich habe das mal so bei Achsensystem generierung gemacht. Erst ein VorschauAchsensystem zum modifizieren erzeugt und dann alle anderen danach generiert.

So ersparst du dir eine ständige Abfrage mit dem Makro was wie schon erwähnt auf die Prozessorleistung geht.

Aber du könntest nochmal genauer erklären was vor dem Stopp, während des Stopps und danach gemacht wird evtl. ist der Stopp auch nicht nötig...

Hoffe es war einigermaßen Verständlich 

mfG
Mario

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: 30. Jul. 2010 07: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

Ich möchte eine Zeichnung automatisch erstellen.
Zum Starten des Makros muss eine Zeichnung geöffnet sein.
Dann muss man den Ordner angeben in der die Parts alle vorhanden sind.
Diese werden dann in einer bestimmten Reihenfolge geöffnet. Wenn Sie geöffnet sind gibt es eine Auswahl, welche Ansicht man als Hauptansicht haben möchte. Nach jedem Erstellen der 3 Ansichten eines Parts wird gefragt, ob die 3 Ansichten vom folgenden Part auf das nächste Blatt erstellt werden sollen.

Hier mein Code wo ich das neue Blatt einfügen möchte.

For r = i - l To doc_counter
           
            bnm = Mid(Doc_Name_Reorder(r, 0), 11, 1)
             
               
                        If bnm = 5 Then
                                                           
                            Makro2
                            opart.Close
                            BoxM = MsgBox("Möchten Sie die nächste View auf ein neues Blatt", 3)
                             
                              If BoxM = 6 Then
                                    'neues Blatt einfügen
'hier ist mein Problem, in der UserForm4 hab ich zurzeit ein Button auf dem Weiter steht. Dieser sollte der Benutzer anklicken wenn er die Zeichnung eingefügt hat. Aber da ich vbModeless hinter dem .show stehen habe, läuft das Makro im Hintergrund weiter.

                                    UserForm4.Show vbModeless
                                    Set oSheet = oDrawing.Sheets.ActiveSheet
                                ElseIf BoxM = 2 Then
                                    GoTo Sprungm
                                ElseIf BoxM = 7 Then
                              End If
                       
                        End If
            Next

Diese For Schleife kommt 5 mal hintereinander, da ich die Parts, mit den Zahlen 2-5 im Dateinamen, nicht in der Reihenfolge aufrufen darf. ich brauch erst die 4, dann die 2, dann die 3, dann die 5. Das ist bei bnm gemeint ;-)

Lg steffi

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: 30. Jul. 2010 08: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

So hab es mit eurer Hilfe endlich gepackt. Vielen Lieben Dank für die vielen Antworten.
Den Code von Mario hab ich jetzt ein bissel umgeschrieben und jetzt passt es.

Code:
Sub Blatteinfuegen()
Dim MySheets    As DrawingSheets
Dim MyNewSheet  As DrawingSheet
Dim MyViews    As DrawingViews
Dim MyView      As DrawingView
Dim MySelection As Selection

'Document holen
Set oDrawing = CATIA.ActiveDocument

'Selection holen und sicherheitshalber löschen
Set MySelection = oDrawing.Selection
MySelection.Clear

'alle Sheets holen
Set MySheets = oDrawing.Sheets

'Sheet zum kopieren holen (evtl. über eine UserSelection holen)
'Set oSheet = MySheets.Item(1)
'oder
'Set MyOldSheet = MySheets.GetItem("Sheet.1")

'kopieren
MySelection.Add oSheet
MySelection.Copy
MySelection.Clear
MySelection.Add oDrawing.DrawingRoot
MySelection.Paste

'neues Sheet holen und selection löschen
Set MyNewSheet = MySelection.Item2(1).Value
MySelection.Clear

'Views löschen (ausser RahmenView)  !!!Gelockte Views erst unlocken!!!
Set MyViews = MyNewSheet.Views
For Each MyView In MyViews
    'Hier die Views ausschließen die nich mit gelöscht werden sollen
    If MyView.Name <> "Background View" And MyView.Name <> "Main View" Then
        MyView.LockStatus = False
        MySelection.Add MyView
    End If
Next
MySelection.Delete
MySelection.Clear

'Namen vergeben
Set oSheet = MyNewSheet

'Sheet oder Drawing updaten
oSheet.Update
oDrawing.Update

End Sub


oSheet und oDrawing hab ich vorher schon dimensioniert gehabt.

Supi

Lg steffi

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