Autor
|
Thema: CATDrawing click on the sheet to generate the view (1582 mal gelesen)
|
BARTY Mitglied CAD/CAM Anwendung
Beiträge: 79 Registriert: 26.03.2003 XP 32 / Vista 64 CV5R19SP9
|
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 um eine Generierung abzusetzen ?
------------------ BARTY ----------------------------------- Der IDEE ist egal von wem sie kommt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo 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 Long Public 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 = &H2 Public 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 DrawingDocument Dim 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.ActiveDocument Set 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: 79 Registriert: 26.03.2003 XP 32 / Vista 64 CV5R19SP9
|
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 Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo 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: 79 Registriert: 26.03.2003 XP 32 / Vista 64 CV5R19SP9
|
erstellt am: 11. Sep. 2012 14:35 <-- editieren / zitieren --> Unities abgeben:
Ich habe es mit : ' zunächst die benötigten API-Deklarationen Private 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 Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo 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: 79 Registriert: 26.03.2003 XP 32 / Vista 64 CV5R19SP9
|
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: 79 Registriert: 26.03.2003 XP 32 / Vista 64 CV5R19SP9
|
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 sie planar 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 |