|  |  | 
|  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | 
|  |  | 
|  | KISTERS 3DViewStation: Neuer Strukturvergleich ab sofort verfügbar, eine Pressemitteilung 
 | 
| Autor | Thema:  CATDrawing click on the sheet to generate the view (1944 mal gelesen) | 
 | BARTY Mitglied
 CAD/CAM Anwendung
 
  
 
      Beiträge: 79Registriert: 26.03.2003
 XP 32 / Vista 64CV5R19SP9
 |    erstellt am: 11. Sep. 2012 12:14  <-- editieren / zitieren -->    Unities abgeben:            
  Hi Zusammen, ist es möglich im CATDrawing mit VB auf das Blatt zu klicken umeine Generierung abzusetzen ?
 
 ------------------BARTY
 -----------------------------------
 Der IDEE ist egal von wem sie kommt
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | RSchulz Ehrenmitglied V.I.P. h.c.
 Head of CAD, Content & Collaboration / IT-Manager
 
 
  
 
      Beiträge: 5541Registriert: 12.04.2007
 @WorkLenovo P510
 Xeon E5-1630v4
 64GB DDR4
 Quadro P2000
 256GB PCIe SSD
 512GB SSD
 SmarTeam V5-6 R2016 Sp04
 CATIA V5-6 R2016 Sp05
 E3.Series V2019
 Altium Designer/Concord 19
 Win 10 Pro x64
 |    erstellt am: 11. Sep. 2012 12:42  <-- editieren / zitieren -->    Unities abgeben:           Nur für BARTY   
  Hallo Barty, was genau möchtest du denn? Wenn du wirklich einen Mausklick ausführen möchtest, dann musst du mit der Windows-API arbeiten. Beispiel:
 Code:
     Public Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As LongPublic Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
     Public Const MOUSEEVENTF_LEFTDOWN = &H2Public Const MOUSEEVENTF_LEFTUP = &H4
     Public Sub Mausklick()Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
 Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
 end Sub
 
 Wenn du eine Ansicht direkt im CATIA erstellen willst, dann könnte dir folgendes helfen :)
 Code:
 Sub CreateView(ProductName As String)
     Dim drawingDocument1 As DrawingDocumentDim drawingSheets1 As DrawingSheets
 Dim drawingSheet1 As DrawingSheet
 Dim drawingViews1 As DrawingViews
 Dim drawingView1 As DrawingView
 Dim drawingViewGenerativeLinks1 As DrawingViewGenerativeLinks
 Dim drawingViewGenerativeBehavior1 As DrawingViewGenerativeBehavior
 Dim documents1 As Documents
 Dim productDocument1 As ProductDocument
 Dim product1 As Product
     Set drawingDocument1 = CATIA.ActiveDocumentSet drawingSheets1 = drawingDocument1.Sheets
 Set drawingSheet1 = drawingSheets1.Item("Blatt .1")
 Set drawingViews1 = drawingSheet1.Views
 Set drawingView1 = drawingViews1.Add("AutomaticNaming")
 Set drawingViewGenerativeLinks1 = drawingView1.GenerativeLinks
 Set drawingViewGenerativeBehavior1 = drawingView1.GenerativeBehavior
 drawingViewGenerativeBehavior1.SetGPSName "ISO.xml"
 Set documents1 = CATIA.Documents
 Set productDocument1 = documents1.Item(ProductName)
 Set product1 = productDocument1.Product
 drawingViewGenerativeBehavior1.Document = product1
 drawingViewGenerativeBehavior1.DefineFrontView -1#, -0#, -0#, -0#, 1#, 0#
 drawingView1.X = 0
 drawingView1.Y = 0
 drawingView1.[Scale] = 1#
 End Sub 
 ...ist jetzt nur mit dem Makrorekorder aufgenommen und dementsprechend kein schöner Schreibstil bzw. geht es definitiv deutlich besser. Allerdings dürfte dir damit glaube ich geholfen sein   ------------------MFG
 Rick Schulz
 Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | BARTY Mitglied
 CAD/CAM Anwendung
 
  
 
      Beiträge: 79Registriert: 26.03.2003
 XP 32 / Vista 64CV5R19SP9
 |    erstellt am: 11. Sep. 2012 12:49  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Herr Schulz Danke für die schnelle Antwort. Über die Windows API habe ich es schon versucht.Ich habe eine "View from 3D" abgeleitet und CATIA wartet jetzt auf der DRAWING auf den berühmten Klick in die View.
 drawingViewGenerativeBehavior1.DefineTPSSectionView klappt leider nicht. ------------------BARTY
 -----------------------------------
 Der IDEE ist egal von wem sie kommt
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | RSchulz Ehrenmitglied V.I.P. h.c.
 Head of CAD, Content & Collaboration / IT-Manager
 
 
  
 
      Beiträge: 5541Registriert: 12.04.2007
 @WorkLenovo P510
 Xeon E5-1630v4
 64GB DDR4
 Quadro P2000
 256GB PCIe SSD
 512GB SSD
 SmarTeam V5-6 R2016 Sp04
 CATIA V5-6 R2016 Sp05
 E3.Series V2019
 Altium Designer/Concord 19
 Win 10 Pro x64
 |    erstellt am: 11. Sep. 2012 13:10  <-- editieren / zitieren -->    Unities abgeben:           Nur für BARTY   
 Zitat:Original erstellt von BARTY:
 Über die Windows API habe ich es schon versucht.
 Ich habe eine "View from 3D" abgeleitet und CATIA wartet jetzt auf der DRAWING auf den berühmten Klick in die View.
 
 
 Also hast Du schon einen klick eingebaut? Wenn ja, dann wäre die Frage, ob der Klick auch die Zeichnung trifft. Ich habe dafür speziell einen relativ komplexen Algorithmus geschrieben, der über die Postion von CATIA, die Bildschirmauflösung, die Fenstergröße, die Position und Größe des Zeichnungsfensters usw. bis auf einen minimalen Bereich (wenige cm) die Zeichnung trifft. Außerdem musst du bedenken, dass der Klick sofort ausgeführt wird, der Wechsel in die Zeichnung aber evtl. noch etwas dauern kann. Funktioniert es denn per StepByStep? ------------------MFG
 Rick Schulz
 Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | BARTY Mitglied
 CAD/CAM Anwendung
 
  
 
      Beiträge: 79Registriert: 26.03.2003
 XP 32 / Vista 64CV5R19SP9
 |    erstellt am: 11. Sep. 2012 14:35  <-- editieren / zitieren -->    Unities abgeben:            
  Ich habe es mit : ' zunächst die benötigten API-DeklarationenPrivate Declare Sub mouse_event Lib "user32" ( _
 ByVal dwFlags As Long, _
 ByVal dx As Long, _
 ByVal dy As Long, _
 ByVal cButtons As Long, _
 ByVal dwExtraInfo As Long)
 
 Private Const MOUSEEVENTF_ABSOLUTE = &H8000
 Private Const MOUSEEVENTF_LEFTDOWN = &H2
 Private Const MOUSEEVENTF_LEFTUP = &H4
 Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
 Private Const MOUSEEVENTF_MIDDLEUP = &H40
 Private Const MOUSEEVENTF_MOVE = &H1
 Private Const MOUSEEVENTF_RIGHTDOWN = &H8
 Private Const MOUSEEVENTF_RIGHTUP = &H10
 Dann im Code eingebettet:
                  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0                  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 Step by step mit genügend Wartezeit und Cursur über der Drawing klappt das. Die Wartezeit abhängig vom 3D Modell (Byte *10 as Integer)   Den Cursur in die Bildchirmmitte ------------------BARTY
 -----------------------------------
 Der IDEE ist egal von wem sie kommt
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | RSchulz Ehrenmitglied V.I.P. h.c.
 Head of CAD, Content & Collaboration / IT-Manager
 
 
  
 
      Beiträge: 5541Registriert: 12.04.2007
 @WorkLenovo P510
 Xeon E5-1630v4
 64GB DDR4
 Quadro P2000
 256GB PCIe SSD
 512GB SSD
 SmarTeam V5-6 R2016 Sp04
 CATIA V5-6 R2016 Sp05
 E3.Series V2019
 Altium Designer/Concord 19
 Win 10 Pro x64
 |    erstellt am: 11. Sep. 2012 14:43  <-- editieren / zitieren -->    Unities abgeben:           Nur für BARTY   
 Zitat:Original erstellt von BARTY:
 Die Wartezeit abhängig vom 3D Modell (Byte *10 as Integer)
   
 
 Theoretisch musst du auf CATIA warten. Ich würde dabei in einer Schleife prüfen, ob bzw. wann das richtige Fenster geöffnet ist "do while" und mit einem wait-Befehl würde ich mit jedem Schleifenlauf 10ms warten, damit die Prozedur nicht den Rechner in die Knie zwingt. Zitat:Original erstellt von BARTY:
 Den Cursur in die Bildchirmmitte
 
 
 Hier weist du leider aber nie, ob CATIA im Voolbildmodus offen ist oder evtl. Produkt und Zeichnung nebeneinander angezeigt werden etc.. Daher ist es leider nicht wirklich Benutzerfreundlich und für eine Verteilung auf mehrere Arbeitsplätze unbrauchbar... ------------------MFG
 Rick Schulz
 Nettiquette (CAD.de)  -  Was ist die Systeminfo?  -  Wie man Fragen richtig stellt.  -  Unities 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | BARTY Mitglied
 CAD/CAM Anwendung
 
  
 
      Beiträge: 79Registriert: 26.03.2003
 XP 32 / Vista 64CV5R19SP9
 |    erstellt am: 11. Sep. 2012 14:58  <-- editieren / zitieren -->    Unities abgeben:            
  mit der Wartezeit war als Spaß gedacht !! Ich Versuche es mit einer Schleife.(melde mich dazu dann noch) Da ich das Makro aus 3D starte und die Zeichung erzeuge ist diese immer on Top. Mit der Größe von CATIA hast du recht. Am besten optimiere ich die Fenstergröße von CATIA am Anfang des Makros. Es soll immer nur eine 3D-Datei vor dem Start des Makros vorhanden sein. ------------------BARTY
 -----------------------------------
 Der IDEE ist egal von wem sie kommt
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
 | BARTY Mitglied
 CAD/CAM Anwendung
 
  
 
      Beiträge: 79Registriert: 26.03.2003
 XP 32 / Vista 64CV5R19SP9
 |    erstellt am: 12. Sep. 2012 13:22  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Herr Schulz, mit einem Do while Befehl komme ich leider nicht weiter. Nachdem die 3DView  im CATPart angewählt ist wechselt CATIA automatisch ins CATDrawing und "dreht" hier die Ansicht bis sieplanar zum Bilschirm liegt.
 Erst jetzt fragt CATIA nach den Klick auf das Blatt um die View abzusetzen.
 Diese Zeit muss ich überbrücken. Mit einer Zählschleife klappt das  in meinem Versuchsaufbau, aber auf die Menschheit will ich es so nicht loslassen.
 Mein Problem ist also das ich für "Do" keine Abfrage habe.
 Ich habe mir jetzt gedacht über den CNEXT Process zu gehen um
 zu schauen wann er "nicht arbeitet".(CATIA wartet auf den Klick).
 Hier finde ich aber keine Lösung in CATvba.
 ------------------BARTY
 -----------------------------------
 Der IDEE ist egal von wem sie kommt
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |