| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Optimieren Sie Ihre SOLIDWORKS Tasks mit Visiativ myCADtools - Jetzt Kostenlos testen >>, eine Pressemitteilung
|
Autor
|
Thema: Stückliste mit Zeichenansichten verknüpfen -SW08 (6696 mal gelesen)
|
StefanNie Mitglied Konstrukteur und CAD-Administrator
Beiträge: 75 Registriert: 07.03.2005 SW2023 SP5.0 mit DBWorks R23
|
erstellt am: 20. Aug. 2008 14:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich rege mich mit SolidWorks 2008 jedesmal mit den Stücklisten auf Zeichnungen auf. Oftmals werden Spaltenköpfe auf Zeichnungen nicht aktualisiert und uns bleibt nichts anderes übrig, als die vorhandene Stückliste wegzuschmeissen und eine neue zu erstellen. Problem hierbei ist, das wir bis zu 20 Zeichenansichten mit unterschiedlich dargestellten Konfigurationen auf einem Blatt haben und jede Konfiguration in der Stückliste darstellen. Beim Erstellen einer neuen Stückliste muß dann jede Zeichenansicht mit rechter Maustaste neu angeklickt werden, Eigenschaften, Haken in das feld "mit Stückliste verknüpft belassen" anhaken und im darunterliegenden Pull-downmenu die Stückliste, mit der verknüpft werden soll (ist meistens nur eine), auswählen. Hat/ kennt irgendjemand vielleicht ein Makro, welches die Haken für alle Zeichenansichten automatisch setzt? habe schon gesucht und selbst versucht (mit meinem bescheidenen Wissen), ein Makro aufzuzeichnen, bin aber nicht wirklich weitergekommen. Mein Reseller weiß keine Lösung (scheint jedoch auch nicht wirklich bemüht in diesem Punkt). Von daher die frage an die große weite Welt......... Stefan ------------------ Stefan CSWP 2006 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 20. Aug. 2008 15:21 <-- editieren / zitieren --> Unities abgeben: Nur für StefanNie
Aus der API-Hilfe, kannst Du Dir ein Makro erstellen, welches gleich eine Stücklist mit der selektierten Ansicht erstellt. Noch alle Einstellungen vornehmen (im Makro) und fertig. Die Ansicht wird dann auch mit der erstellten Stückliste verknüpft, der Hacken ist gesetzt aber nichts ausgewählt?!?!? Komische Sache, aber es funktioniert! Das Makro findest Du, wie gesagt, in der API Hilfe unter "Insert BOM Table Example (VB)". HTH, und viel Erfolg!
------------------ http://www.worldcommunitygrid.org Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanNie Mitglied Konstrukteur und CAD-Administrator
Beiträge: 75 Registriert: 07.03.2005 SW2023 SP5.0 mit DBWorks R23
|
erstellt am: 21. Aug. 2008 09:06 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank für die Info. Bin in der Makroprogrammierung nicht so fit. API Schulung steht noch aus. Werde dann dem versuch mit der API-Hilfe nochmals genauer nachgehen. Du sagtest jedoch, das der Haken zwar gesetzt, jedoch im Pulldown Menu keine Stückliste ausgewählt sei. Trotzdem würden die Positionsnummern passen. Dieses stimmt oft auch. Wenn aber nichts in der Stückliste ausgewählt ist, kommt es immer wieder vor, das beim Hochversionieren der Zeichnung und Austausch von Einzelteilen keine Aktualisierung der Positionsnummern gibt. Daher muß noch ein Weg gefunden werden, wie ich die Stückliste im Pulldown Menue aktiviert bekomme. ------------------ Stefan CSWP 2006 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 21. Aug. 2008 09:18 <-- editieren / zitieren --> Unities abgeben: Nur für StefanNie
|
StefanNie Mitglied Konstrukteur und CAD-Administrator
Beiträge: 75 Registriert: 07.03.2005 SW2023 SP5.0 mit DBWorks R23
|
erstellt am: 21. Aug. 2008 09:37 <-- editieren / zitieren --> Unities abgeben:
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 21. Aug. 2008 11:38 <-- editieren / zitieren --> Unities abgeben: Nur für StefanNie
|
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 29. Aug. 2008 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für StefanNie
So, nun habe ich es!! Neues Makro erstellen und das hier kopieren: Code: Option Explicit Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swSelMgr As SldWorks.SelectionMgr Dim swView As SldWorks.View Dim swBomTable As SldWorks.BomTableAnnotation Dim bRet As Boolean Dim swFeat As SldWorks.Feature Dim swBomFeat As SldWorks.BomFeature Dim TableName As String Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swSelMgr = swModel.SelectionManager Set swView = swSelMgr.GetSelectedObject5(1) Set swBomTable = swView.InsertBomTable2( _ False, _ 0.022, 0.008, _ '### DIESER KOMMENTAR IST ZU ENTFERNEN ### XY Koordinaten zur Positionierung der Tabelle (in Meter) swBOMConfigurationAnchor_BottomLeft, _ SwConst.swBomType_e.swBomType_PartsOnly, _ "", _ "S:\Pfad-zu-Stücklisten-Vorlage.sldbomtbt"): Debug.Assert Not swBomTable Is Nothing swModel.GraphicsRedraw2 Set swFeat = swModel.FirstFeature Do While Not swFeat Is Nothing If "BomFeat" = swFeat.GetTypeName Then Set swBomFeat = swFeat.GetSpecificFeature2 Set swFeat = swBomFeat.GetFeature TableName = swFeat.Name End If Set swFeat = swFeat.GetNextFeature Loop bRet = swView.SetKeepLinkedToBOM(True, TableName) End Sub
Viel Spass damit, und ein schönes Wochenende!
------------------ http://www.worldcommunitygrid.org Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Projekt10 Mitglied
Beiträge: 6 Registriert: 05.02.2010 Solid Works 2020 SP 3.0
|
erstellt am: 05. Feb. 2010 07:09 <-- editieren / zitieren --> Unities abgeben: Nur für StefanNie
Hallo, Das Makro hilft mir bei SWX2010 SP1.0 hervorragend um eine Stückliste einzufügen. Leider ist nur die Ansicht mit der Stückliste verknüpft die auch ausgewählt war. Gibt es eine Einstellung um alle Ansichten mit der Stückliste zu verknüpfen? (Eigenschaften Zeichenansicht\Eigenschaften Ansicht\Stücklistensymbole\Stücklistensymboltext mit festgelegter Tabelle verknüpfen\) Derzeit muß ich den Haken für jede Ansicht noch manuell setzen. Gruß Ronny
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
G. Dawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation
Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 05. Feb. 2010 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für StefanNie
Ok, das ist eigentlich ganz einfach. Und ich weiss jetzt auch nicht, wieso ich das nicht schon lange selber gemacht habe! Hier ist gleich der ganze Code: Code:
' ### Fügt eine Stückliste in die Zeichnung ein und verknüpft ' ### ALLE Ansichten auf der Zeichnung mit dieser Stückliste. ' ### Autor: Gilbert Fürer, 5. Februar 2010' ### "PosX", "PosY" und "Vorlage" müssen angepasst werden. Option Explicit Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swDraw As SldWorks.DrawingDoc Dim swSelMgr As SldWorks.SelectionMgr Dim swView As SldWorks.View Dim swBomTable As SldWorks.BomTableAnnotation Dim bRet As Boolean Dim swFeat As SldWorks.Feature Dim swBomFeat As SldWorks.BomFeature Dim TableName As String Dim PosX As Double Dim PosY As Double Dim Vorlage As String Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swSelMgr = swModel.SelectionManager Set swView = swSelMgr.GetSelectedObject5(1) PosX = 0.022 'Position der Stückliste; Masse in Meter! PosY = 0.008 Vorlage = "C:\StücklistenVorlage.sldbomtbt" Set swBomTable = swView.InsertBomTable2( _ False, _ PosX, PosY, _ swBOMConfigurationAnchor_BottomLeft, _ SwConst.swBomType_e.swBomType_PartsOnly, _ "", _ Vorlage): Debug.Assert Not swBomTable Is Nothing swModel.GraphicsRedraw2 TableName = swBomTable.BomFeature.GetFeature.Name Set swDraw = swModel Set swView = swDraw.GetFirstView Do While Not swView Is Nothing bRet = swView.SetKeepLinkedToBOM(True, TableName) Set swView = swView.GetNextView Loop End Sub
EDIT: Makro etwas optimiert. ------------------ [Diese Nachricht wurde von G. Dawg am 05. Feb. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Projekt10 Mitglied
Beiträge: 6 Registriert: 05.02.2010 Solid Works 2020 SP 3.0
|
erstellt am: 05. Feb. 2010 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für StefanNie
|
StefanNie Mitglied Konstrukteur und CAD-Administrator
Beiträge: 75 Registriert: 07.03.2005 SW2023 SP5.0 mit DBWorks R23
|
erstellt am: 16. Apr. 2010 08:12 <-- editieren / zitieren --> Unities abgeben:
Super, habe es bei uns im Betrieb eingeführt. Ist eine Wahnsinns Arbeitserleichterung! Danke
Zitat: Original erstellt von G. Dawg: Ok, das ist eigentlich ganz einfach. Und ich weiss jetzt auch nicht, wieso ich das nicht schon lange selber gemacht habe! Hier ist gleich der ganze Code: Code:
' ### Fügt eine Stückliste in die Zeichnung ein und verknüpft ' ### ALLE Ansichten auf der Zeichnung mit dieser Stückliste. ' ### Autor: Gilbert Fürer, 5. Februar 2010' ### "PosX", "PosY" und "Vorlage" müssen angepasst werden. Option Explicit Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swDraw As SldWorks.DrawingDoc Dim swSelMgr As SldWorks.SelectionMgr Dim swView As SldWorks.View Dim swBomTable As SldWorks.BomTableAnnotation Dim bRet As Boolean Dim swFeat As SldWorks.Feature Dim swBomFeat As SldWorks.BomFeature Dim TableName As String Dim PosX As Double Dim PosY As Double Dim Vorlage As String Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swSelMgr = swModel.SelectionManager Set swView = swSelMgr.GetSelectedObject5(1) PosX = 0.022 'Position der Stückliste; Masse in Meter! PosY = 0.008 Vorlage = "C:\StücklistenVorlage.sldbomtbt" Set swBomTable = swView.InsertBomTable2( _ False, _ PosX, PosY, _ swBOMConfigurationAnchor_BottomLeft, _ SwConst.swBomType_e.swBomType_PartsOnly, _ "", _ Vorlage): Debug.Assert Not swBomTable Is Nothing swModel.GraphicsRedraw2 TableName = swBomTable.BomFeature.GetFeature.Name Set swDraw = swModel Set swView = swDraw.GetFirstView Do While Not swView Is Nothing bRet = swView.SetKeepLinkedToBOM(True, TableName) Set swView = swView.GetNextView Loop End Sub
EDIT: Makro etwas optimiert.
------------------ Stefan CSWP 2006 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 19. Aug. 2013 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für StefanNie
Hallo Kollegen, habe dieses und ein anderes Makro mal zusammengefasst .... um eine leicht abgewandelte Aufgabe zu erfüllen: - In Zeichnungsdatei vorhandene Stückliste (auf allen Blättern) suchen - Dann (nach Rückfrage) alle Ansichten (auf allen Blättern) (wenn möglich) mit dieser Stückliste verknüpfen. Gibt es da eine schönere / einfachere Lösung? Möchte sonst jemand das benutzen oder aufhübschen? ... Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanNie Mitglied Konstrukteur und CAD-Administrator
Beiträge: 75 Registriert: 07.03.2005 SW2023 SP5.0 mit DBWorks R23
|
erstellt am: 19. Aug. 2013 13:55 <-- editieren / zitieren --> Unities abgeben:
Hallo, habe mittlerweile noch diese Variante im Einsatz.. Stüli muß markiert werden und er verknüpft alle Ansichten des Blattes mit der markierten Stüli... Hilft ja vielleicht auch bei irgendetwas... Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swDraw As SldWorks.DrawingDoc Dim swSelMgr As SldWorks.SelectionMgr Dim swView As SldWorks.View Dim swBomTable As SldWorks.BomTableAnnotation Dim bRet As Boolean Dim swFeat As SldWorks.Feature Dim swBomFeat As SldWorks.BomFeature Dim TableName As String Dim i As Integer Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swSelMgr = swModel.SelectionManager 'Set swView = swSelMgr.GetSelectedObject5(1)
On Error GoTo fehler Set swBomTable = swSelMgr.GetSelectedObject6(1, -1) swModel.GraphicsRedraw2 TableName = swBomTable.BomFeature.GetFeature.Name Set swDraw = swModel Set swView = swDraw.GetFirstView i = 0 Do While Not swView Is Nothing i = i + 1 bRet = swView.SetKeepLinkedToBOM(True, TableName) Set swView = swView.GetNextView 'swApp.SendMsgToUser2 "Die " & i & "(s)te Zeichenansicht wurde mit " & vbCrLf & TableName & " verknüpft.", swMbInformation, swMbOk Loop swApp.SendMsgToUser2 "Verknüpfung aller Ansichten mit " & TableName & " erfolgreich abgeschlossen.", swMbInformation, swMbOk Exit Sub fehler: swApp.SendMsgToUser2 "Achtung!" & vbCrLf & "Sie müssen eine Zeichnung offen haben UND die Stückliste markieren, mit der die Ansichten verknüpft werden soll!", swMbInformation, swMbOk End Sub
------------------ Stefan CSWP 2006 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3256 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 19. Aug. 2013 17:00 <-- editieren / zitieren --> Unities abgeben: Nur für StefanNie
auch sehr schön, vorher markieren macht es leichter ... sind irgendwie schon mal Fehler aufgetreten? wenn etwas anderes dargestellt ist, wird nix verknüpft und gut ist ..., oder? Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanNie Mitglied Konstrukteur und CAD-Administrator
Beiträge: 75 Registriert: 07.03.2005 SW2023 SP5.0 mit DBWorks R23
|
erstellt am: 20. Aug. 2013 08:57 <-- editieren / zitieren --> Unities abgeben:
Bislang nicht. Die vorherige Markierung der Stückliste fand ich von daher sinnvoll, da mehrere Stücklisten auf einer Zeichnung auftreten können. Eventuell wäre eine Erweiterung auf Blätter noch sinnvoll. Ich schau mal nochmal.... ------------------ Stefan CSWP 2006 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |