Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Automatisierung eines einfachen Workflows

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:  Automatisierung eines einfachen Workflows (1193 mal gelesen)
LittleJohn10
Mitglied


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

Beiträge: 3
Registriert: 11.08.2014

Win 7 Prof 64bit
CATIA V5 R20

erstellt am: 11. Aug. 2014 18:02    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 muss zur Zeit für die Uni einen Workflow erarbeiten, um STL-Files einzulesen, diese mit wenigen Funktionen weiterzuverarbeiten und abschließend wieder zu exportieren. Sehr elegant wäre natürlich, das ganze so in ein Makro zu verpacken, dass außer der Auswahl der einzulesenden Datei keine Eingaben nötig sind.
Die STL-Dateien sind natürlich unterschiedlich, aber prinzipiell so ähnlich, dass der Ablauf jedesmal der gleiche ist:
1. Importieren, Mesh Cleaner, Mesh Smoothing
2. Automatic Surface, Fläche schließen
3. Schritt 2 nochmal wiederholen, aber vorher Rough Offset anwenden
4. Körper "2." aus Körper "3." entfernen, so dass aus dem Positivmodell ein Negativmodell mit Wandstärke wird.
Erst in Schritt 5 kommt es wirklich auf die Form des eingelesenen Modells an, das muss sowieso von Hand gemacht werden. Schritt 6 wäre exportieren.

Ich habe schon ein bischen mit einzelnen Codeschnipseln an einem CATScript gebastelt, aber ehrlich gesagt noch kein vorzeigbares Resultat erzielt.
Ist das generell machbar? Bisher scheiterts an den speziellen Funktionen. CATIA.startcommand ist ja anscheinend etwas schwierig weil man das Makro irgendwie anhalten muss während man auf Eingaben wartet? Außerdem könnte ich mich dann ja auch von Hand durchklicken, wenn ich eh jedes Fenster einzeln zu Gesicht bekomme.
Weil es ja eigentlich wirklich nur Arbeitsschritte sind, könnte man das mit einem Powercopy realisieren?

Meine Programmiererfahrung hält sich leider in Grenzen, ich kenn zwar die Grundlagen aus einem Uni-Kurs aber habe noch nie mit VB gearbeitet.

Danke und Grüße
John

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: 12. Aug. 2014 12:21    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 LittleJohn10 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum.
Ich befürchte dass diese Funktionen die du benötigst nicht direkt per Makro angesprochen werden können. Über StartCommadn die Funtkonen starten (im speziellen wenn noch Usereingaben gemacht werden müssen) wird komplexer, da du wahrscheinlich dann von "außen" (VB) auf die Anwendung zugreifen musst.
Hast du mal probiert (ich kenne leider dir entsprechende Workbench nicht genau), eine "Vorlage zu erstellen", dann das neue Mesh einladen und ersetzen?

Gruß
Bernd
Gruß
Bernd

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

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

LittleJohn10
Mitglied


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

Beiträge: 3
Registriert: 11.08.2014

Win 7 Prof 64bit
CATIA V5 R20

erstellt am: 12. Aug. 2014 13: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

Hallo,
das hatte ich schon befürchtet...
Was ist denn der Unterschied zwischen den verschiedenen "Wissensvorlagen"?
Für den Ablauf muss ich mehrmals zwischen verschiedenen Workbenches wechseln, für Schritt 1 brauche ich "Digitized Shape Editor", 2 und 3 "Quick Surface Reconstruction" und "Part Design".

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

LittleJohn10
Mitglied


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

Beiträge: 3
Registriert: 11.08.2014

Win 7 Prof 64bit
CATIA V5 R20

erstellt am: 12. Aug. 2014 15: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 habe nochmal mit startcommand rumprobiert, aber die Fenster der Funktionen die ich brauche ploppen immer erst ganz am Ende des Makros auf. Habe verschiedene Sachen probiert, z.B. MsgBox die man erst wegklicken muss, InputBox die einen speziellen Wert braucht um aus der Schleife rauszukommen, die Codeschnipsel die man hier im Forum findet wo man ebenfalls in einer Schleife steckt bis sich das spezielle Fenster öffnet / schließt... alles nutzlos, das Fenster geht immer erst am Ende auf bzw. Catia ist in der Schleife gefangen weil die Bedingung (das Fenster soll sich öffnen) gar nie erfüllt wird.
Hat jemand noch Ideen für mich?
Danke!

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: 12. Aug. 2014 16:19    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 LittleJohn10 10 Unities + Antwort hilfreich

Hallo John,

ich kann dir nur sagen, dass da einiges geht. Sauber ist die Verwendung von StartCommand allerdings nur kaum zu bekommen. Ich habe wenige Programme, die allerdings soviel Ersparnis bringen, dass sich die Umsetzung trotzdem lohnt. Meist sind aber einige auch außenstehende Faktoren wichtig, denn zum Beispiel bei der Ermittlung wo geklickt werden soll, muss auch vorher erst ermittelt werden, welche Auflösung hat der Bildschirm, ist CATIA maximier bzw. auf welchem Bereich ist CATIA, wo öffnet sich das Fenster usw. . Das heist, um derartige Funktionen annähernd sauber zu bekommen, muss man auch irgendwie für klar Verhältnisse sorgen. z.B. muss der Treiber der Grafikkarte so eingestellt werden, dass ein Fenster mittig öffnet uvm. je nach Umsetzung bzw. Anforderung!

Hier mal ein Ausschnitt:

Code:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
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 Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long

Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4

Public Sub LeftClick()

    LeftDown
    LeftUp
   
End Sub

Public Sub LeftDown()

    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
   
End Sub

Public Sub LeftUp()

    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
   
End Sub

Sub CATMain()
 
    Dim CutFunc          As String
    Dim FuncTitle        As String
    Dim CurPosActivateX  As Integer
    Dim CurPosActivateY  As Integer
    Dim hWndTmp1        As Long
    Dim hWndTmp2        As Long
    Dim ErrorList()    As String
    Dim ErrorOcc        As Boolean
   
    CutFunc = "CATCsdShePocketHdr"
    SMDFuncTitle = "Pocket Definition"
    CurPosActivateX = 370
    CurPosActivateY = 540
   
    'startet SheetmetalPocket
    CATIA.StartCommand (CutFunc)
   
    'Wiederholt solange bis das gesuchte Fenster geöffnet ist
    Do
        'such das Fenster mit der Überschrift "Pocket Definition"
        hWndTmp1 = FindWindow(vbNullString, FuncTitle)
       
        'wenn dieses geöffnet ist wird ein Mausklick ausgeführt
        If hWndTmp1 <> 0 Then
       
            SetCursorPos CurPosActivateX, CurPosActivateY
            LeftClick
            DoEvents
                   
        End If
       
        'Sehr wichtig, damit das Programm nicht die CPU 100% auslastet und CATIA Rechenleistung zum reagieren hat!
        DoEvents
        Wait (100)
       
    Loop Until hWndTmp1 <> 0
   
    'Wiederholt solange, bis das Fenster wieder geschlossen ist
    Do
       
        hWndTmp1 = FindWindow(vbNullString, FuncTitle)
        DoEvents
     
    Loop Until hWndTmp1 = 0
   
End Sub


Das sind ein paar Zeilen, aus einem Tausendzeiler, und macht sicherlich noch lange nicht das was du möchtest oder was es bei mir macht. Es soll dir aber mal ein Prinzip erklären. Man muss bei solchen Sachen um die Ecke denken und das auch können. Voraussetzung ist erstmal, dass man das Einmaleins der Programmierung kann und das Datensystem von CATIA kennt.

Anders formuliert, dass was du da machen möchtest, benötigt schon eine Menge an Knowhow nicht nur im Programmieren an sich, das du aktuell in meinen Augen nicht mitbringst und programmieren kann dir das sicherlich hier keiner mal eben so, so leid mir das tut...

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

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