| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Stücklistenerstellung (1450 mal gelesen)
|
Ralph277 Mitglied Physiker
Beiträge: 15 Registriert: 26.09.2013
|
erstellt am: 07. Nov. 2014 13:06 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, wie, falls überhaupt möglich, erzeuge ich mit VBA ein Stückliste auf einer Zeichnung, falls bislang keine Stückliste existiert? Mit Dim oPartsList As PartsList Set oPartsList = oSheet.PartsLists.Add(oDrawingView, oPlacementPoint) läßt sich lediglich eine Stückliste hinzufügen, falls wenigstens eine vorhanden ist, was das ".Add" irgendwie auch ausdrückt. Ich bräuchte ein logisches ".Create", doch das existiert meiner Kenntnis nach nicht. Versuche ich auf einer "jungfräulichen" Zeichnung eine Stückliste mit VBA zu erzeugen, bricht das Programm mit einem Run-Time error '5' ab, ist eine Stückliste vorhanden, kann ich problemlos mehrere hinzufügen. Habt Ihr ´ne Lösung für diese Problem? Ralph Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 07. Nov. 2014 14:46 <-- editieren / zitieren --> Unities abgeben: Nur für Ralph277
|
Ralph277 Mitglied Physiker
Beiträge: 15 Registriert: 26.09.2013
|
erstellt am: 07. Nov. 2014 14:53 <-- editieren / zitieren --> Unities abgeben:
Hallo Chris, anbei das ganze Programm. Public Sub CreatePartsList() 'On Error Resume Next ' Set a reference to the drawing document. ' This assumes a drawing document is active. Dim oDrawDoc As DrawingDocument Set oDrawDoc = ThisApplication.ActiveDocument 'Set a reference to the active sheet. Dim oSheet As Sheet Set oSheet = oDrawDoc.ActiveSheet ' Set a reference to the first drawing view on ' the sheet. This assumes the first drawing ' view on the sheet is not a draft view. Dim oDrawingView As DrawingView Set oDrawingView = oSheet.DrawingViews(1) ' Set a reference to th sheet's border Dim oBorder As Border Set oBorder = oSheet.Border Dim oPlacementPoint As Point2d If Not oBorder Is Nothing Then ' A border exists. The placement point ' is the top-right corner of the border. Set oPlacementPoint = oBorder.RangeBox.MaxPoint Else ' There is no border. The placement point ' is the top-right corner of the sheet. Set oPlacementPoint = ThisApplication.TransientGeometry.CreatePoint2d(oSheet.Width, oSheet.Height) End If ' Create the parts list. Dim oPartsList As PartsList Set oPartsList = oSheet.PartsLists.Add(oDrawingView, oPlacementPoint) End Sub Gruß Ralph Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 07. Nov. 2014 20:02 <-- editieren / zitieren --> Unities abgeben: Nur für Ralph277
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 08. Nov. 2014 13:04 <-- editieren / zitieren --> Unities abgeben: Nur für Ralph277
|
Ralph277 Mitglied Physiker
Beiträge: 15 Registriert: 26.09.2013
|
erstellt am: 10. Nov. 2014 07:15 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich benutze die gleiche Zeichnung. Habe ich interaktiv eine Stückliste erstellt, läßt sich problemlos eine zweite per VBA dazufügen, ist keine vorhanden, gibt es eine Fehlermeldung. Gruß Ralph Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 10. Nov. 2014 07:19 <-- editieren / zitieren --> Unities abgeben: Nur für Ralph277
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 10. Nov. 2014 07:26 <-- editieren / zitieren --> Unities abgeben: Nur für Ralph277
Du könntest mal versuchen, die Stücklistenstruktur noch mit hinein zu bringen. Code: Dim oPartslist As partslist Set oPartslist = oSheet.PartsLists.Add(oDrawingView, oPlacementPoint, kPartsOnly)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralph277 Mitglied Physiker
Beiträge: 15 Registriert: 26.09.2013
|
erstellt am: 10. Nov. 2014 09:42 <-- editieren / zitieren --> Unities abgeben:
Hallo Chris, danke, das war´s! Mit diesem, eigentlich doch wohl optionalen, dritten Parameter "kPartsOnly" läßt sich nun die Stückliste erstellen falls bislang keine existiert. Nochmals vielen Dank für den Hinweis! Gruß Ralph Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2013/2015 Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 10. Nov. 2014 09:45 <-- editieren / zitieren --> Unities abgeben: Nur für Ralph277
Kein Problem. Ich glaube ich hatte damals das gleiche Problem, als ich das bei mir programmiert habe. Ich bin dann auch bloß per Zufall darauf gekommen, den optionalen mit zu benutzen. Schönen Tag noch, Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |