Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Baugruppenstückliste aus Modell als TXT abspeichern (Makro)

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
  
PLM TechnologieForum Essen
Autor Thema:  Baugruppenstückliste aus Modell als TXT abspeichern (Makro) (1801 mal gelesen)
Joshua63
Mitglied
Maschinenbautechniker


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

Beiträge: 371
Registriert: 08.11.2006

W10 SP1
Intel i7 8700K
Quatro P4000
32GB RAM
SW 2021 SP4.1
SWX PDM Professional 2021

erstellt am: 26. Nov. 2013 09:59    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,

Wir haben ein Makro im Einsatz, das uns die Stückliste einer Zeichnung als TXT ablegt und dann in eine
Excel-Vorlage einfügt.
Klappt hervorragend.
Ich möchte aber jetzt das gleiche mit einer Stückliste machen, die in einer Baugruppe (Modell) eingefügt ist.

Da meine Programmierkenntnisse mehr als bescheiden sind, wäre ich für eure Hilfe sehr dankbar :-)

Hier der Code für die Zeichnungsstückliste:

Option Explicit

Public IVPoutput              As String

Sub main()
    Dim swApp                  As SldWorks.SldWorks
    Dim swSheet                As SldWorks.Sheet
    Dim swModel                As SldWorks.ModelDoc2
    Dim swDraw                  As SldWorks.DrawingDoc
    Dim swView                  As SldWorks.View
    Dim swTable                As SldWorks.TableAnnotation

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
  Set swSheet = swModel.GetCurrentSheet    --hier bleibt das Makro hängen---
 
    IVPoutput = Left(swModel.GetPathName, Len(swModel.GetPathName) - 7) + ".txt"
   
    If swModel Is Nothing Then
        MsgBox "Keine Dokumentnte geöffnet."
        End
    End If

    If swModel.GetType <> swDocDRAWING Then
        MsgBox "Das Dokument ist keine Zeichnung."
        End
    End If
   
    Set swDraw = swModel

    ' Get the first view
    Set swView = swDraw.GetFirstView
    Do While Not swView Is Nothing

        ' Get the first table annotation for this view
        Set swTable = swView.GetFirstTableAnnotation
        Do While Not swTable Is Nothing
            ProcessTable swApp, swModel, swTable
       
            ' Get next table annotation for this view
            Set swTable = swTable.GetNext
        Loop
        ' Get the next view
        Set swView = swView.GetNextView
    Loop
   
' TXT-Datei löschen
Kill IVPoutput

End Sub
______________________________________________________________________

Sub ProcessTable _
( _
    swApp As SldWorks.SldWorks, _
    swModel As SldWorks.ModelDoc2, _
    swTable As SldWorks.TableAnnotation _
)

    Dim swAnn                      As SldWorks.Annotation
    Dim nNumCol                    As Long
    Dim nNumRow                    As Long
    Dim sRowStr                    As String
    Dim i                          As Long
    Dim j                          As Long
    Dim intOutHandle                As Integer

    Dim sPath                      As String
    Dim sCreate_Stückliste_SW_K    As String
    Dim ExcelApp  As Excel.Application
    Dim excelsheet As Excel.Worksheet
    Dim excelbook  As Excel.Workbook
    Dim File As Object
    Dim PosText As String
   
    Set swAnn = swTable.GetAnnotation
   
    intOutHandle = FreeFile
    Open IVPoutput For Output As #intOutHandle
   
    nNumCol = swTable.ColumnCount
    nNumRow = swTable.RowCount
   
    ' Get the table contents
    For i = 0 To nNumRow - 1
        sRowStr = ""
       
        For j = 0 To nNumCol - 1
            sRowStr = sRowStr & swTable.Text(i, j) & Chr(9)
        Next j
       
        Print #intOutHandle, Left(sRowStr, Len(sRowStr) - 1)
    Next i
   
    Close #intOutHandle

    PosText = UCase(swTable.Text(0, 0))
   
    sPath = "L:\CAD-Systeme\SolidWorks\Dokumentationsvorlagen\Stueckliste\Vorlage_Stückliste.xlsm"
   
    ' Stücklistenerkennung durch Text in der 1. Spalte der SWX-Stückliste
   
    If PosText = "PO." Then
        sCreate_Stückliste_SW_K = "Vorlage_Stückliste.xlsm!Konstruktion.Create_Stückliste_SW"
    End If
   
    If PosText = "TEIL" Then
        sCreate_Stückliste_SW_K = "Vorlage_Stückliste.xlsm!Konstruktion.Create_Stückliste_SW_Conti_Bab"
    End If
   
    If PosText = "POS" Then
        sCreate_Stückliste_SW_K = "Vorlage_Stückliste.xlsm!Konstruktion.Create_Stückliste_SW_Conti_FFM"
    End If

    If PosText = "POS.-NR." Then
        sCreate_Stückliste_SW_K = "Vorlage_Stückliste.xlsm!Konstruktion.Create_Stückliste_SW_Conti_Vil"
    End If

   
    Set ExcelApp = CreateObject("Excel.Application")    'Excel öffnen
    ExcelApp.Visible = False                            'Excel ausblenden
    Set excelbook = ExcelApp.Workbooks.Open(sPath)
   
    ExcelApp.Application.Run sCreate_Stückliste_SW_K, IVPoutput
    excelbook.Close SaveChanges:=False
   
    ExcelApp.Visible = True                            'Excel einblenden
    Set excelbook = Nothing

End Sub
_____________________________________________________________

Mein Problem ist die Stückliste in der BG zu erfassen, die auswertung müsste die gleiche sein.
Das Makro sollte für die Zeichnung und das Modell funktionieren.

Kann mir hier jemand weiterhelfen ?

Danke

------------------
Viele Wege führen zum Ziel .......... und ich will alle wissen !

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

HaPe
Mitglied
Dipl. Ing Maschinenbau, Konstrukteur, CAD-Admin


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

Beiträge: 1096
Registriert: 27.11.2001

i7 CPU 960@3.20GHz
8GB Ram
Quadro 2000 4GB
70GB Raid 0
WIN7 prof. SP1 64 bit
SWX 2010 SP5.0
SWX 2012 SP5.0
SWX 2013 SP5.0

erstellt am: 26. Nov. 2013 13:03    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 Joshua63 10 Unities + Antwort hilfreich

Hallo,

so wie ich das verstehe, versuchst Du mit  Set swSheet = swModel.GetCurrentSheet  ein Zeichnungsblatt zuzuweisen, bevor Du getestet hast, ob die geöffnete Datei überhaupt eine Zeichnung ist.

Gruß HaPe

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

Joshua63
Mitglied
Maschinenbautechniker


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

Beiträge: 371
Registriert: 08.11.2006

W10 SP1
Intel i7 8700K
Quatro P4000
32GB RAM
SW 2021 SP4.1
SWX PDM Professional 2021

erstellt am: 26. Nov. 2013 13: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

Hi,

stimmt, nur wie stelle ich es an, das das Makro in einer BG und einer Zeichnung funktioniert.

Ich hab das mal irgendwo heraus kopiert. Für einre BG habe ich noch kein Muster gefunden, leider.

------------------
Viele Wege führen zum Ziel .......... und ich will alle wissen !

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

HaPe
Mitglied
Dipl. Ing Maschinenbau, Konstrukteur, CAD-Admin


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

Beiträge: 1096
Registriert: 27.11.2001

i7 CPU 960@3.20GHz
8GB Ram
Quadro 2000 4GB
70GB Raid 0
WIN7 prof. SP1 64 bit
SWX 2010 SP5.0
SWX 2012 SP5.0
SWX 2013 SP5.0

erstellt am: 26. Nov. 2013 13:54    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 Joshua63 10 Unities + Antwort hilfreich

Hallo,

Du hast doch schon eine Abfrage für den Dateityp drin, pack die Set Befehle in die entsprechenden Zweige der If Abfrage, dann werden
sie nur ausgeführt, wenn das Dokument eine Zeichnung ist.

Gruß HaPe

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

swx-cad-nutzer
Mitglied
Konstr


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

Beiträge: 411
Registriert: 15.06.2011

SWX 2023
SP 4.0
64 bit

erstellt am: 26. Nov. 2013 14: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 Joshua63 10 Unities + Antwort hilfreich

Würde gern dein Makro ausprobieren, vielleicht hätts nutzen bei uns. Kannst Du es einstellen?
Die Hyroglyphen ins Makro kopiert funktioniert bei mir nicht!
Danke!

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 27. Nov. 2013 08:33    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 Joshua63 10 Unities + Antwort hilfreich

Hallo zusammen,

die Schwierigkeit hier ist, dass du die BOM in der Baugruppe hast und dein Makro darauf ausgelegt ist für eine Zeichnung zu funktionieren. Also musst du das so umbauen, dass es nach einer Stückliste in der Baugruppe sucht.

Dafür gibt es erstaunlich wenig Information und Beispiele in der API hilfe, aber mit ein wenig Googlen ( genauer nach: solidworks api how to get BOM in assembly) habe ich ein wunderbares Beispiel auf http://www.3dvision.com/wordpress/2009/12/11/get-bom-table/ von Jeff Sweeney gefunden, das funktioniert ganz hervorragend, du musst nur ggf. die Verweise auf deine SolidWorks Version anpassen und dir dann die Stück rausholen (oder deine dort einbauen), die du brauchst.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

Joshua63
Mitglied
Maschinenbautechniker


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

Beiträge: 371
Registriert: 08.11.2006

W10 SP1
Intel i7 8700K
Quatro P4000
32GB RAM
SW 2021 SP4.1
SWX PDM Professional 2021

erstellt am: 27. Nov. 2013 13:55    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

Danke Stefan für den Link, werde es mir nächste Woche zu Gemüte führen.

ciao

------------------
Viele Wege führen zum Ziel .......... und ich will alle wissen !

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

Joshua63
Mitglied
Maschinenbautechniker


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

Beiträge: 371
Registriert: 08.11.2006

W10 SP1
Intel i7 8700K
Quatro P4000
32GB RAM
SW 2021 SP4.1
SWX PDM Professional 2021

erstellt am: 27. Nov. 2013 14:42    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


Stuecklistenmakro.zip

 
Hi SWX-cad-nutzer,

Ich habe es nicht selbst programmiert, nur teilweise und mit Hilfe meines Kollegen der fit in Excel ist.

Zum groben Ablauf:

Stückliste als .txt abspeichern, anhand der 1. Spalte den Kunden erkennen, dann Excel öffnen und das dort hinterlegte Makro für den Kunden ansprechen, Stückliste erzeugen und mit Dateinamen der SWX - Baugruppe abspeichern, txt-File wieder löschen.

Der angehängte File ist ein .ZIP

viel Spass damit......

------------------
Viele Wege führen zum Ziel .......... und ich will alle wissen !

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. Mrz. 2016 11:57    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 Joshua63 10 Unities + Antwort hilfreich

ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist!


Zitat:
Original erstellt von StefanBerlitz:

Dafür gibt es erstaunlich wenig Information und Beispiele in der API hilfe, aber mit ein wenig Googlen ( genauer nach: solidworks api how to get BOM in assembly) habe ich ein wunderbares Beispiel auf http://www.3dvision.com/wordpress/2009/12/11/get-bom-table/ von Jeff Sweeney gefunden,

Hallo Stefan,
der Link zu Jeff Sweeney seinem Makro funktioniert nicht mehr.
Hast du zufällig dieses Makro noch in deinem Fundus?
Ich würde mir das etwas näher anschauen wollen.

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 14. Mrz. 2016 12:11    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 Joshua63 10 Unities + Antwort hilfreich

Hallo Andi,

Zitat:
Original erstellt von Andi Beck:
der Link zu Jeff Sweeney seinem Makro funktioniert nicht mehr.
Hast du zufällig dieses Makro noch in deinem Fundus?

Nein, tut mir leid. Ich würde auch nicht anderer Leute Makro ohne deren Einwilligung einfach so hier posten, ich kann das selbst nicht leiden. Wenn jemand beschließt seine Makros nicht mehr zur Verfügung zu stellen ist auch das sein gutes Recht und sollte respektiert werden.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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