Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Stücklistenoptionen definieren / sperren

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
Autor Thema:   Stücklistenoptionen definieren / sperren (423 mal gelesen)
StMoll
Mitglied
CAD Administrator


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

Beiträge: 26
Registriert: 22.01.2019

SolidWorks 2018 SP 5.0
Windows 10 Enterprise
HP Z440 Workstation
NVIDIA Quadro K2200

erstellt am: 05. Jun. 2019 09: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


Stuecklistenoptionen.jpg

 
Guten Tag zusammen,

ich habe eine Frage zu den Stücklistenoptionen in SolidWorks.
Es geht mir im Besonderen um die Optionen zum Verhalten beim ersetzten von Komponenten und/oder löschen von Komponenten.
Hier gibt es bekanntlich vier Auswahlmöglichkeiten.
Diese vier Auswahlmöglichkeiten möchte ich vordefinieren damit nicht jeder nach Lust und Laune Stücklisten erstellt, sondern
Stücklisten immer nach dem selben Muster aufgebaut sind.
Direkt über die Optionen lässt sich das nicht lösen.
Über Templates ebenfalls nicht.

Jetzt bin ich auf der Suche nach einem Tool oder einer API Lösung hierfür.
Bevor ich mich kopfüber in die Programmierung stürze, dachte ich, ich frage erstmal nach ob schon jemand etwas in der Hinterhand hat.

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

ConZept
Mitglied
Maschinenbautechniker


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

Beiträge: 15
Registriert: 19.02.2019

SolidWorks 2018 / SP 4.0
Win7x64 /HP Z440

erstellt am: 05. Jun. 2019 10: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 Nur für StMoll 10 Unities + Antwort hilfreich

Hallo,

ist auf alle Fälle per API möglich.

Siehe IBomFeature Interface.
Hier gibts die Option KeepMissingItems und die KeepReplacedCompOption für die vier Auswahlmöglichkeiten.

Kannst dich also in die Programmierung stürzen 

------------------
Gruß ConZept

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

StMoll
Mitglied
CAD Administrator


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

Beiträge: 26
Registriert: 22.01.2019

SolidWorks 2018 SP 5.0
Windows 10 Enterprise
HP Z440 Workstation
NVIDIA Quadro K2200

erstellt am: 05. Jun. 2019 10:41    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 für den Link. 
Die API-Befehle hatte mir der DPS Support schon geschickt.
Ich habe nur die Hoffnung dass jemand das Problem schon fertig programmiert hat, bevor ich mit meinem gefährlichen Halbwissen loslege. 

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

ConZept
Mitglied
Maschinenbautechniker


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

Beiträge: 15
Registriert: 19.02.2019

SolidWorks 2018 / SP 4.0
Win7x64 /HP Z440

erstellt am: 05. Jun. 2019 12:34    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 StMoll 10 Unities + Antwort hilfreich

Kann dir schon was vorgekautes (und angepasstes) Liefern, aber dann lernst du ja nichts 

Wenn du Hilfe brauchst beim Makro basteln kann ich dir helfen.
Finde das wichtig, selbst zu verstehen warum das Makro das macht, was es soll. Falls es irgendwelche Änderungen bei der Arbeitsweise gibt und evtl. Makros angepasst werden müssen - bist du schon mal ein Schritt voraus und weißt wo man ansetzen muss.

Schau dir mal Dieses Beispiel an. Helfe dir gerne was zu basteln ;-)

Falls du aber zu lazy bist, kann ich dir auch was liefern.

------------------
Gruß ConZept

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

StMoll
Mitglied
CAD Administrator


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

Beiträge: 26
Registriert: 22.01.2019

SolidWorks 2018 SP 5.0
Windows 10 Enterprise
HP Z440 Workstation
NVIDIA Quadro K2200

erstellt am: 05. Jun. 2019 13: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

Damit hast du natürlich Recht und ich komme auch auf lange Sicht nicht daran vorbei mich mehr mit der API auszukennen.

Wenn ich Hilfe / Tipps brauche melde ich mich aber sicherlich wieder.

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

StMoll
Mitglied
CAD Administrator


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

Beiträge: 26
Registriert: 22.01.2019

SolidWorks 2018 SP 5.0
Windows 10 Enterprise
HP Z440 Workstation
NVIDIA Quadro K2200

erstellt am: 16. Jul. 2019 09:17    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,

mein Makro habe ich inzwischen fertig und es macht auch was es soll.
In diesem Zuge nochmals vielen Dank an ConZept für die Unterstützung.

Es gibt jedoch noch einen Punkt der mich stört und den ich nicht gelöst bekomme.
Ich habe eine Zeichnung mit 9 Konfigurationen.
SWX benötigt für zum Einfügen der Stückliste 15 Sekunden.
Mein Makro benötigt 31 Sekunden.

Ich konnte einen Ablauf im Makro als Übeltäter ausmachen, jedoch kann ich meine vermeintliche Lösung nicht testen da ich es, wie gesagt, nicht umgesetzt bekomme.

Es wird die Stückliste angelegt mit der Standard-Konfiguration und im Anschluss werden die restlichen Konfigurationen ausgelesen und übergeben.
Ich setzte also Configuration = "" und füge über InsertBomTabe4 die BOM ein.

Dieser Vorgang ist der Zeitfresser.
Wenn ich die Konfigurationen direkt bei der Stücklistenerstellung bereits übergeben könnte würde dass das Makro vermutlich deutlich schneller machen.


Ich bin einmal so frei und setzte hier den gesamten Code rein:
(Templatepfad entfernt)

Code:

'Was das Marco macht:                                / What this macro does:
'Überprüfen ob eine Zeichnung geöffnet ist.          / Checks if a drawing is active.
'Überprüfen ob eine Ansicht ausgewählt ist.          / Checks if a view is selected.
'Überprüfen ob die Zeichnung zu ASM oder PRT gehört. / Checks if the drawing belongs to an ASM or PRT.
'Stückliste einfügen mit definierten Einstellungen.  / Insert BOM with defined settings.
'Alle Konfigurationen hinzufügen.                    / Adding of all configurations.
'Den Namen der Stückliste definieren.                / Setting the name of the Bill of Materials.
'Getroffene Einstellungen im Direktbereich anzeigen. / Shows all settings in the immediate window.
'Geschrieben von MOSF im Juni/Juli 2019              / Written by MOSF in June/July 2019
'************************************************************************************************
Option Explicit

Dim SwApp              As SldWorks.SldWorks
Dim TableTemplate      As String
Dim Configuration      As String
Dim swBomAnnotation    As SldWorks.BomTableAnnotation
Dim swBomFeature        As SldWorks.BomFeature
Dim swDrawing          As SldWorks.ModelDoc
Dim swView              As SldWorks.View
Dim ModelDoc            As SldWorks.ModelDoc2
Dim swSelectMngr        As SldWorks.SelectionMgr
Dim ItemNbr            As SldWorks.BomFeature
Dim Visible            As Variant
Dim Names              As Variant
Dim boolstatus          As Boolean
Dim AtIndex            As Long
Dim swViewModel        As ModelDoc2
Dim ConfigName          As String
Dim ConfigNames()      As String
Dim i                  As Long
Dim swConfig            As SldWorks.Configuration

Sub Stueckliste()
Set SwApp = Application.SldWorks
 
    SwApp.Visible = True
    Set ModelDoc = SwApp.ActiveDoc
   
    If ModelDoc.GetType() <> swDocDRAWING Then
        'Fehler wenn das Dokument keine Zeichnung ist. / Error if Document isn´t a Drawing.
        Call MsgBox("Dokument ist keine Zeichnung (.slddrw!) / Document is not a Drawing (.slddrw)", vbOKOnly)
        Exit Sub
    End If
   
    'Auswahl der Ansicht für BOM / Selecting the View used for the BOM.
    Set swDrawing = ModelDoc
    Set swSelectMngr = ModelDoc.SelectionManager
    Set swView = swSelectMngr.GetSelectedObject6(1, 0)

    If swView Is Nothing Then
        'Fehler wenn keine Ansicht gewählt wurde. / Error if no View was selected.
        Call MsgBox("Keine Ansicht ausgewählt. Bitte Ansicht auswählen! / No View selected. Please select a View)", vbOKOnly)
        Exit Sub
    End If
           
           
    Set swViewModel = swView.ReferencedDocument
    'Überprüfung ob Zeichnung zu Baugruppe oder Einzelteil gehört. / Check if the Drawing belongs to a Part or an Assembly.
    If swViewModel.GetType = 2 Then
      'Einfügen der Stückliste Assembly / Insert of the Assembly BOM.
        TableTemplate = "----Hier Template einfügen----"
        Configuration = ""
        Set swBomAnnotation = swView.InsertBomTable4(True, 0.4, 0.3, _
        swBOMConfigurationAnchor_BottomLeft, _
        swBomType_TopLevelOnly, _
        Configuration, _
        TableTemplate, _
        False, _
        swNumberingType_e.swIndentedBOMNotSet, _
        True)
        Set swBomFeature = swBomAnnotation.BomFeature
           
         
        'Konfigurationen auslesen und einfügen in BOM. / Readout and insert the Names of the Configurations.
        Names = swBomFeature.GetConfigurations(False, Visible)
        Visible(0) = True
        boolstatus = swBomFeature.SetConfigurations(True, Visible, Names)
       
        'Gefundene Konfigurationen werden im Direktbereich aufgelistet / Found Configuration names will be shown in the immediate window.
        ConfigNames = swViewModel.GetConfigurationNames
        For i = 0 To UBound(ConfigNames)
            ConfigName = ConfigNames(i)
            Set swConfig = ModelDoc.GetConfigurationByName(ConfigName)
            Debug.Print "Vorhandene Configurationen / Found configurations:    " & ConfigName
        Next i
'        Name der Stückliste definieren / set the Name of the Bill of Materials
        swBomFeature.Name = "Bill of Materials BAUER"
       
        'Definition der Stuecklistenoption. / Definition of BOM Settings.
        swBomFeature.DisplayAsOneItem = True
        swBomFeature.PartConfigurationGrouping = swDisplay_ConfigurationOfSamePart_AsSeparateItem
        swBomFeature.KeepReplacedCompOption = swKeepBothNewItemNumber
        swBomFeature.StrikeoutMissingItems = False
        swBomFeature.KeepCurrentItemNumbers = True
        swBomFeature.ZeroQuantityDisplay = swZeroQuantityDashed
       
    ElseIf swViewModel.GetType = 1 Then
        'Einfügen der Stückliste Einzelteil / Insert of the Part BOM
        TableTemplate = "----Hier Template einfügen----"
        Configuration = ""
        Set swBomAnnotation = swView.InsertBomTable4(True, 0.4, 0.3, _
        swBOMConfigurationAnchor_BottomLeft, _
        swBomType_PartsOnly, _
        Configuration, _
        TableTemplate, _
        False, _
        swNumberingType_e.swIndentedBOMNotSet, _
        True)
        Set swBomFeature = swBomAnnotation.BomFeature
                                       
        'Konfigurationen auslesen und einfügen in BOM. / Readout and insert the Names of the Configurations.
        Names = swBomFeature.GetConfigurations(False, Visible)
        Visible(0) = True
        boolstatus = swBomFeature.SetConfigurations(True, Visible, Names)
       
        'Gefundene Konfigurationen werden im Direktbereich aufgelistet / Found Configuration names will be shown in the immediate window.
        ConfigNames = swViewModel.GetConfigurationNames
        For i = 0 To UBound(ConfigNames)
            ConfigName = ConfigNames(i)
            Set swConfig = ModelDoc.GetConfigurationByName(ConfigName)
            Debug.Print "Vorhandene Configurationen / Found configurations:    " & ConfigName
        Next i
       
        'Name der Stückliste definieren / set the Name of the Bill of Materials
        swBomFeature.Name = "Bill of Materials BAUER"
       
    End If
                 
    'Ausgabe der getroffenen Einstellungen im Direktbereich. / Showing the Settings in the Immediate Window.
    Debug.Print "----------------------------------------------------------------"
    Debug.Print "Basic structur of the BOM. 1=Parts Only / 2=Top Level only / 3=Indented :      " & swBomFeature.TableType
    Debug.Print "Numbering of the BOM. 1=Detailed / 2=Flat / 0=None / 3=Not Set:                " & swBomFeature.NumberingTypeOnIndentedBOM
    Debug.Print "Display if a value is zero. 1=Dashed / 2=Zero / 3=Blank:                      " & swBomFeature.ZeroQuantityDisplay
    Debug.Print "Display as one item?                                                          " & swBomFeature.DisplayAsOneItem
    Debug.Print "Sequence start number:                                                        " & swBomFeature.SequenceStartNumber
    Debug.Print "Keep missing items?                                                            " & swBomFeature.KeepMissingItems
    Debug.Print "Strikeout missing items?                                                      " & swBomFeature.StrikeoutMissingItems
    Debug.Print "Replace missing components as defined in swKeepReplacedCompOption_e:          " & swBomFeature.KeepReplacedCompOption
    Debug.Print "Keep current item numbers when reordering rows?                                " & swBomFeature.KeepCurrentItemNumbers
   
    swDrawing.ForceRebuild
   
   
End Sub


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