Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Teil in BG prüfen und bei erfüllter Bedingung Aktion ausführen - API

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Hoffmann Expertenseminar "Digitale Prozess- und Fertigungslösungen"
Autor Thema:  Teil in BG prüfen und bei erfüllter Bedingung Aktion ausführen - API (1666 mal gelesen)
Zega
Mitglied



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

Beiträge: 44
Registriert: 19.07.2016

Hardware
-Intel Xeon W3550
-Nvidia Quadro 2000
-12GB RAM
Software
-Windows 7 Professional
-SolidWorks 2016 SP4.0
-Office 2013

erstellt am: 11. Nov. 2016 16:25    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 zusammen,
und zwar möchte ich ein Makro erstellen bzw. aus vorhandenen zusammenbauen, das folgendes macht:
- Bei geöffnerter Baugruppe wird das Makro ausgeführt und soll nacheinander von oben herrunter jedes Teil öffnen, falls eine Bedingung erfüllt wurde soll eine Aktion ausgeführt werden. Danach soll das Teil, falls die Bedingung erfüllt wurde gespeichert und danach geschlossen werden. Falls die Bedingung nicht erfüllt wurde soll das Teil ohne speichern geschlossen werden.
- Da bei Baugruppen es auch Unterbaugruppen geben kann, soll das Makro auch diese öffnen und dort das oben genannte ausführen. Danach soll die Unterbaugruppe wieder ohne speichern geschlossen werden.

Bedingung wäre in meinem Fall, dass die Teile ein Blech sein sollen.
Das Makro soll nämlich später eingesetzt werden um es in einer Baugruppe ausführen zu können, das viele Blech-, Norm-, bzw. Kaufteile und Unterbaugruppen enthält. Aus den Belchteilen sollen DXF Dateien erstellt werden und der Rest wird einfach nur geöffnet und wieder geschlossen.

Nun zu meinem Problem:
Im Moment funktioniert das Makro soweit, dass es jedes Teil aufmacht und wenn es ein Blech ist eine DXF Datei erstellt. Allerdings möchte er jedes Teil, das kein Belch ist neu speichern. Ausserdem funktioniert das mit den Unterbaugruppen, und das mit dem speichern nicht wirklich...

Der Code um jedes Teil zu öffnen ist folgender (aus anderem Makro kopiert und geändert):

' --------------------------------------------------------------------06/02/2006
' Open Assembly Components
' OpenAssyComp.swp - By handleman Copyright 2006
' This macro is provided as is.  No claims, support, refund, safety net, or
' warranties are expressed or implied.  By using this macro in any way, the user
' holds the author and all others free from all liability.
' This macro is based on discussion at: http://www.eng-tips.com/viewthread.cfm?qid=156219&
' ------------------------------------------------------------------------------
' Description:
' Traverses the open assembly and activates all components and their drawings (if of the
' same name).
' ------------------------------------------------------------------------------
' Version - By Matthew Lorono
'          1.01        * Saved macro as sourced from above link.
'          1.02        * Add this common description comment area.
' ------------------------------------------------------------------------------

Sub ShowAllOpenFiles()
Dim swDoc As SldWorks.ModelDoc2
Dim swAllDocs As EnumDocuments2
Dim FirstDoc As SldWorks.ModelDoc2
Dim dummy As Boolean
Dim NumDocsReturned As Long
Dim DocCount As Long
Dim i As Long
Dim sMsg As String
Dim swApp As SldWorks.SldWorks
Dim bDocWasVisible As Boolean
Dim OpenWarnings As Long
Dim OpenErrors As Long
Dim DwgPath As String
Dim myDwgDoc As SldWorks.ModelDoc2


Set swApp = Application.SldWorks
Set swAllDocs = swApp.EnumDocuments2
Set FirstDoc = swApp.ActiveDoc


DocCount = 0
swAllDocs.Reset
swAllDocs.Next 1, swDoc, NumDocsReturned
While NumDocsReturned <> 0

   
   
    bDocWasVisible = swDoc.Visible
    swApp.ActivateDoc swDoc.GetPathName
   
    swAllDocs.Next 1, swDoc, NumDocsReturned
    DocCount = DocCount + 1
   
    DXF_erstellen
   

Wend

swApp.ActivateDoc FirstDoc.GetPathName
End Sub

im sub DXF erstellen, wird erstmal folgendes geprüft:

   Set swApp = CreateObject("SldWorks.Application")
    swApp.Visible = True
    Set Part = swApp.ActiveDoc
    Set ModelDoc2 = swApp.ActiveDoc
   
    If (ModelDoc2.GetType = swDocASSEMBLY) Then
        MsgBox ("Baugruppe wird nicht als DXF gespeichert")
        Exit Sub
    End If
   
  
'   If Part Is Nothing Then
'       Call MsgBox("Keine Datei geöffnet", vbOKOnly, "DXF Abwicklung")
'       Exit Sub
'   End If
  
  '  If Part Is Nothing Then
  '      MsgBox "Kein Dokument geöffnet.", vbOKOnly, "DXF Abwicklung"
   '    Exit Sub
   ' End If
  
  ' If Part.GetType <> swDocPART Then
   '     MsgBox "Kein Modell aktiv.", vbOKOnly, "DXF Abwicklung"
   '     Exit Sub
  '  End If
  

    If Part.GetBendState = 0 Then
        MsgBox "Teil ist kein Blech.", vbOKOnly, "DXF Abwicklung"
        Exit Sub
End If

leider darf ich momentan den Rest des Makros, das die DXF Datei erstellt, nicht einstellen. Allerdings wird eben, falls die Prüfung bestanden wird, eine DXF Datei erstellt und an einem vorgebenen Speicherplatz gespeichert.

Nun sollen eben meine oben genannten Bedingungen eingefügt werden. Habe schon einige Versuche gemacht, allerdings mit mäßigem Erfolg.

Hat jemand eine Idee es möglichst leicht einzufügen, bzw. sollte ein ganz andere Ansatz gewählt werden?
(Bei Fragen gerne nachfragen, weis nicht ob ich das so verständlich erklärt habe   )

Gruß

------------------
Rechtschreibfehler dürfen behalten werden  

[Diese Nachricht wurde von Zega am 11. Nov. 2016 editiert.]

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 12. Nov. 2016 04: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 Nur für Zega 10 Unities + Antwort hilfreich

Hallo,
ich habe mir jetzt mal dein Makro in SW geholt.
(Die Deklarationen deiner sub DXF fehlen)

Dann habe ich den Code insoweit geändert, dass jetzt nur noch Blechteile geöffnet werden.
Warum soll ich auch Unmengen an Komponenten laden, um sie anschließend wieder nur zu schließen.
Somit werden auch nur die Blechteile zum Speichern angeboten.

Zitat: Ausserdem funktioniert das mit den Unterbaugruppen, und das mit dem speichern nicht wirklich...

Nun hast du genau den Part, wo du Probleme mit hast, nicht mit gesendet.
Wie soll ich dir da helfen deine Fehler zu beheben. 

Grüße, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



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

Beiträge: 3682
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 12. Nov. 2016 08:20    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 Zega 10 Unities + Antwort hilfreich

Hi Andi 

Jetzt verrate Ihm doch wenigstens Deine Teillösung, wenn Du schon die ganze Nacht daran gewerkelt hast.

Gruß, Torsten

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 12. Nov. 2016 08:45    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 Zega 10 Unities + Antwort hilfreich

moin Torsten,
grins..........


Zitat: leider darf ich momentan den Rest des Makros nicht einstellen.

Ich brauch doch Verhandlungsmasse. 

Immer eins nach dem anderen.

Schönes Wochenende und Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

Zega
Mitglied



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

Beiträge: 44
Registriert: 19.07.2016

Hardware
-Intel Xeon W3550
-Nvidia Quadro 2000
-12GB RAM
Software
-Windows 7 Professional
-SolidWorks 2016 SP4.0
-Office 2013

erstellt am: 14. Nov. 2016 08: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

Hallo Andi,
danke schonmal das du es dir überhaupt angesehen hast 

Warum ich das, wo ich Probleme hab nicht gepostet habe?
Nunja da ich nichts habe. Die Versuche, die ich hatte hab ich wieder verworfen und dachte ich wende mich ohne etwas von mir an euch, da ich hoffe etwas zu bekommen das nachher auch Hand und Fuß hat.
Da ich nunmal in VBA ein Neuling bin, und mir versuche durch probieren und lesen Wissen anzueignen.

Ich würde gerne den Rest einstellen, aber da dies ein für die Firma erstelltes Makro ist, darf ich das ohne weiterer Absprache nicht. Und ob ich es dann darf ist die andere Frage 
Allerdings ist es im Grunde kein Hexenwerk, es erstellt von einem Blechteil nur eine DXF Datei an einem definierten Dateipfad und prüft davor die Bedingungen die ich schon gepostet habe.

@Andi: Denke das ist für dich eher uninteressant  Oder bist du auf etwas anderes aus? 

Gruß

------------------
Rechtschreibfehler dürfen behalten werden 

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 14. Nov. 2016 20:16    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 Zega 10 Unities + Antwort hilfreich


Assembly-Safe-DXF.zip

 
Zitat:
Original erstellt von Zega:

@Andi: Denke das ist für dich eher uninteressant   Oder bist du auf etwas anderes aus?  

Hallo,
doch, das ist für mich schon Interessant.
Erstens, weil ich diese Form der Traversierung noch nicht kannte, und zweitens, weil ich bisher schon alles exportiert habe, nur noch keine DXF aus einem Part raus.
DXF und DWG mache ich bisher nur von Zeichnungen.
Jetzt hab ich ein wenig nach Beispielen suchen müssen und nun auch den DXF-Export aus dem Part raus implementiert.
Hab aber noch keine Ahnung, ob das unter allen Varianten stabil läuft und ein korrektes Ergebnis produziert.
Momentan benötige ich so etwas noch nicht, aber wer weiß.......
Kannst ja mal durch die Mangel nehmen und Meldung machen.

Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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)2024 CAD.de | Impressum | Datenschutz