Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Zuschnittliste Rahmen erzeugen

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
  
Hannover Messe
Autor Thema:  Zuschnittliste Rahmen erzeugen (2200 mal gelesen)
Torsten1979
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 29.12.2018

erstellt am: 29. Dez. 2018 00:52    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 liebe Forengemeinde,

ich bin gerade dabei mich in die Thematik Makro Erstellung einzuarbeiten und konnte auch schon die ersten (wenigen) Erfolge beim Makro aufzeichnen verbuchen. Leider kommt man da aber als momentaner Nullpeiler wie ich es bin, nicht ganz so voran wie ich gerne würde.
Ich bin in der Holzkonstruktion tätig und da arbeite ich mit vielen Plattenmaterialien.
Als CAD-Dienstleister reicht es mir aus, wenn ich eine Stückliste auf der Zeichnungsableitung habe auf der die Maße vom 3D Rahmen draufstehen. Wir haben viel mit verschiedensten ERP-Systemen zu tun und das Exportieren der Stückliste in Excel mit anschließendem Einlesen in die entsprechenden ERP´s, hat sich bislang ganz gut bewährt.
Ich scheitere momentan aber daran, das dieses aufgezeichnete Makro nicht durch alle virtuelle Bauteile durchrattert. Es bearbeitet nur das Bauteil das aufgezeichnet wurde. Ist logisch, weil im Editor ja auch genau dieses benannt drin steht.
Wie gebe ich dem Makro jetzt zu verstehen, das er alle virtuellen Bauteile durchlaufen soll oder besser gesagt, wo kann ich Info´s darüber finden wie man sowas aufbaut? Ich habe noch einige Ideen was ich gerne automatisiert haben möchte, allerdings scheitert´s an der Umsetzung.

Viele Grüße
Torsten

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

Ralf Tide
Moderator
-




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

Beiträge: 4978
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 29. Dez. 2018 10:15    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 Torsten1979 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Torsten1979:
...Wie gebe ich dem Makro jetzt zu verstehen, das er alle virtuellen Bauteile durchlaufen soll oder besser gesagt, wo kann ich Info´s darüber finden wie man sowas aufbaut? Ich habe noch einige Ideen was ich gerne automatisiert haben möchte, allerdings scheitert´s an der Umsetzung.
Hallo Torsten,

willkommen im Forum.

Der Bernd (bk.sc) hat >hier im Beitrag< eine solche Möglichkeit als Beispiel zur Verfügung gestellt. Du musst nur den

Code:
        If swCompModel.CustomInfo2("", "ExcludeFromBOM") = "Yes" Then
            swChildComp.ExcludeFromBOM = True
        End If


durch Deinen code ersetzen.

Tipps zum eigenen Makro:


  • Einen Kurs beim Reseller besuchen (Nein, ich bekomme kein Geld dafür  )
  • Stefan Berlitz Seite ( http://solidworks.cad.de/ ) die Beispiele in der MakroMania und/oder Tauschbörse anschaun
  • Bücher/Youtube/google/Beispiele der SolidWorks-Seiten/Foren
  • Mit der englischen SolidWorks Version arbeiten. Dabei lernt man die Suchbegriffe kennen.
  • Die API Hilfe zu den Befehlen der aufgezeichneten Makros aufrufen -> Beispiele in der API Hilfe anschaun.
  • Hier im Forum suchen.
  • Hier im Forum fragen.
  • ...

Hoffe das hilft erst mal für den Anfang 

Viel Spaß
Ralf

------------------

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

Torsten1979
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 29.12.2018

erstellt am: 29. Dez. 2018 22:44    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 Ralf,
erstmal Danke für die Antwort.
Habe den Code soweit zusammengemischt, komisch das ich den nicht über die Suche gefunden habe.

Allerdings ergibt das einen "Fehler beim Kompilieren-Variable nicht definiert", was eigentlich klar ist, denn die Bauteile haben in dem Makro "SelectByID2". Ich nehme mal an hier müsste eine Variable für das jeweilige Bauteil stehen. So zumindest mein jetziges Verständnis.

Viele Grüße
Torsten

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

Ralf Tide
Moderator
-




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

Beiträge: 4978
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 29. Dez. 2018 22:52    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 Torsten1979 10 Unities + Antwort hilfreich

Hallo Torsten,

poste doch mal Deinen Code. Ich gehe davon aus, dass Bernd eine Variable anders benannt hat als Du 

Bis demnäx
Ralf

------------------

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

Torsten1979
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 29.12.2018

erstellt am: 29. Dez. 2018 23: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

Hi Ralf,
erstmal Danke für die spätabendliche Hilfe.
So würde das zusammengemixte aussehen:

Code:
Dim swApp As Object
Option Explicit
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swConf As SldWorks.Configuration
    Dim swRootComp As SldWorks.Component2
    Dim bRet As Boolean

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swConf = swModel.GetActiveConfiguration
    Set swRootComp = swConf.GetRootComponent3(True)

    TraverseComponent swApp, swModel, swRootComp, 1
   
    MsgBox "Fertisch", vbOKOnly

End Sub

Sub TraverseComponent(swApp As SldWorks.SldWorks, swModel As SldWorks.ModelDoc2, swComp As SldWorks.Component2, nLevel As Long)
    Dim vChildComp As Variant
    Dim swChildComp As SldWorks.Component2
    Dim swCompConfig As SldWorks.Configuration
    Dim swCompModel As SldWorks.ModelDoc2
    Dim i As Long
   
    vChildComp = swComp.GetChildren
   
    For i = 0 To UBound(vChildComp)
        Set swChildComp = vChildComp(i)
        Set swCompModel = swChildComp.GetModelDoc2

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("Teil1^Baugruppe1-1@Baugruppe1", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
Part.EditPart
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("PLATTE, 150 x 150 x 500<1>", "SUBWELDFOLDER", 0, 0, 0, False, 0, Nothing, 0)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("PLATTE, 150 x 150 x 500<1>", "SUBWELDFOLDER", 0, 0, 0, False, 0, Nothing, 0)
Part.Extension.Create3DBoundingBox
Part.EditAssembly

        TraverseComponent swApp, swModel, swChildComp, nLevel + 1
    Next i
   
swModel.ForceRebuild3 (False)
   
End Sub


Was mir aber gerade noch auffällt ist, das dieser Absatz doppelt geführt ist:

Code:
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("PLATTE, 150 x 150 x 500<1>", "SUBWELDFOLDER", 0, 0, 0, False, 0, Nothing, 0)

Habe ich mich beim Makro aufnehmen verklickt, oder soll das soppelt ausgeführt werden?

Viele Grüße
Torsten

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

Ralf Tide
Moderator
-




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

Beiträge: 4978
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 30. Dez. 2018 13:31    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 Torsten1979 10 Unities + Antwort hilfreich

Hallo Torsten,

nachdem ich jetzt sehe, wie Du den Code eingefügt hast, gehe ich mal davon aus, dass Du noch nicht viel programiert hast. Ich weiß jetzt gar nicht wo ich mit der Hilfe anfangen soll...

Code:
Set Part = swApp.ActiveDoc
brauchst Du zum Beispiel gar nicht, da in der Schleife das "aktive" Dokument schon eine Zeile darüber gewählt ist:
Code:
Set swCompModel = swChildComp.GetModelDoc2

Deine nächste Zeile müsste dann lauten
Code:
swCompModel.EditPart

Du willst das Teil bearbeiten.
Jetzt müsste eine weitere Schleife im virtuellen Teil die Schweißvolumenkörper finden und den Rahmen hinzufügen.
Mit
Code:
swCompModel.EditAssembly

kommst Du wieder in die Baugruppenebene, in die Schleife zur nächsten Komponente...

Ich hab bei der ersten Antwort scheinbar den Text nicht genau genug gelesen  . Das Makrogerüst von Bernd reicht für Dein Vorhaben nicht aus. Zwar kannst Du damit alle Teile in der Baugruppe nacheinander bearbeiten, aber Du willst ja 'nur' zu den virtuellen Teilen die Rahmen der Schweißvolumenkörper erzeugen. Dazu musst Du noch die "nicht virtuellen" Teile aussortieren und eine weitere Schleife im virtuellen Teil (das gerade bearbeitet wird) ausführen, die dann nur auf die Schweißvolumen den Rahmen erzeugt. Als Einstieg vielleicht ein bisschen viel...

Für Excel-VBA hab ich mal 'ne schöne Webseite gefunden mit mehr als 50 Beispielvideos. Das wäre vielleicht ein guter Einstieg für Dich: https://www.excel-vba-lernen.de/


HTH
Ralf

BTW: Der Makrorecorder bietet in den meisten Fällen einen guten Ansatzpunkt. Die doppelte "Aufzeichnung" kannst Du löschen, das kenne ich auch vom aufzeichnen.

------------------

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

Torsten1979
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 29.12.2018

erstellt am: 30. Dez. 2018 15: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 Ralf,
ja ich habe in der Tat noch nicht viel programmiert. Bislang bin ich immer irgendwie anders, aber dafür umständlicher, ans Ziel gekommen.
Allerdings wird der Fokus auf Effizienz jetzt noch bedeutsamer, dadurch das ich bei einem Dienstleister beschäftigt bin.
Getreu nach dem Motto: "An zuviel Wissen ist noch keiner gestorben, außer man hat mit der Mafia zu tun", will ich das Thema Programmieren aber angehen.
Die Seite ist schonmal sehr hilfreich.

Auf jeden Fall bedanke ich mich für die Hilfe. Ich bin sicher ich komme bald mit anderen Sachen um die Ecke 

Viele Grüße
Torsten

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 03. Jan. 2019 09:48    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 Torsten1979 10 Unities + Antwort hilfreich

Hallo Torsten,

da ich das Ausgangsmacro zufällig kenne, kann ich dir evtl. helfen   .

Dazu ein paar Fragen vorab:
Hat deine Baugruppe mehrere Ebenen? Wenn nein kann zumm Beispiel das zweite "TraverseComponent swApp, swModel, swChildComp, nLevel + 1" entfallen.

Sollen wirklich nur Virtuelle Komponenten bearbeitet werden? Wenn ja musst du hier eine Abfrage für die Komponente der IsVirtual Property (IComponent2) einbauen.

If swChildComp.IsVirtual = True Then
Hier deinen Code ausführen
End If

[EDIT]
Sind Komponenten mehrfach verbaut?

Um so länger ich mir dein Vorhaben anschau um so komplizierter wird das Macro, aber machbar sollte es sein, kostet eben nur ein bisschen Zeit.


Gruß
Bernd


------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 03. Jan. 2019 editiert.]

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

Torsten1979
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 29.12.2018

erstellt am: 04. Jan. 2019 14:07    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 Bernd,

die Baugruppe befindet sich nicht auf mehreren Ebenen.
Bislang gab es keine Anforderung, das Bauteile aus einer Bauteilbibliothek in der Baugruppe verwendet werden sollen.
Ausser Verbindungsmittel wie Schrauben, Dübel usw., die mehrfach vorkommen können, wird alles einzeln als virtuelles Teil konstruiert. Ist beim Datentransfer übersichtlicher, zumindest hat sich bislang keiner beschwert.
Die Verbindungsmittel werden natürlich nicht mit Rahmen versehen. Das reicht wenn die mit Anzahl und Dateiname in der Stückliste stehen.

Viele Grüße
Torsten

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 07. Jan. 2019 12: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 Torsten1979 10 Unities + Antwort hilfreich

Hallo Torsten,

Bibliothek war jetzt noch nicht mal die Frage - die werden vermutlich nicht virtuell sein ...

aber wenn "Regal^Zimmer" als virtuelles Teil mehrfach eingesetzt wird, muss es nur einmal gerahmt werden.
Ansonsten müsste/könnte man schauen, ob es schon Rahmen hat.

scheint nach deiner Antwort aber eher nicht der Fall zu sein 

Gruß, Christian

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

Torsten1979
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 29.12.2018

erstellt am: 12. Jan. 2019 23:18    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,
sorry wegen der verspäteten Antwort, war unterwegs.
Die Teile in der Bibliothek sind nicht virtuell.
Bei uns ist es in den seltensten Fällen so, das virtuelle Teile oder ganze Baugruppen mehrfach eingesetzt werden. Ich hatte bislang immer den Fall, wenn ich Teile mehrfach verbaut habe, das ich genau an einem Teil eine Bearbeitung brauchte,bei der anderen aber nicht. Nachdem mir das mehrmals passiert ist, bau ich die Teile immer einzeln. Hat sich bei mir so etabliert und funktioniert, soweit ich das beurteilen kann, ganz gut.
Den Punkt Schweißkonstruktion selbst, habe ich mittlerweile in meiner Part Vorlage drin. Lediglich der Befehl "3D Rahmen erzeugen" mache ich immer per Hand und das versuche ich ins Makro zu fummeln.
Bei manchmal über 100 Teilen wird's anstrengend.

Viele Grüße
Torsten

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