Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  CATDrawing click on the sheet to generate the view

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:  CATDrawing click on the sheet to generate the view (1582 mal gelesen)
BARTY
Mitglied
CAD/CAM Anwendung


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

Beiträge: 79
Registriert: 26.03.2003

XP 32 / Vista 64
CV5R19SP9

erstellt am: 11. Sep. 2012 12:14    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

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



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

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 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 BARTY 10 Unities + Antwort hilfreich

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


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

Beiträge: 79
Registriert: 26.03.2003

XP 32 / Vista 64
CV5R19SP9

erstellt am: 11. Sep. 2012 12:49    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 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



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

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 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 BARTY 10 Unities + Antwort hilfreich

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


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

Beiträge: 79
Registriert: 26.03.2003

XP 32 / Vista 64
CV5R19SP9

erstellt am: 11. Sep. 2012 14:35    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 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



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

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 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 BARTY 10 Unities + Antwort hilfreich

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


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

Beiträge: 79
Registriert: 26.03.2003

XP 32 / Vista 64
CV5R19SP9

erstellt am: 11. Sep. 2012 14:58    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

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


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

Beiträge: 79
Registriert: 26.03.2003

XP 32 / Vista 64
CV5R19SP9

erstellt am: 12. Sep. 2012 13:22    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 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

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