Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Tabellengesteuertes Teil, Löschen von Konfigurationen

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
  
Dassault Systèmes auf der Hannover Messe 2024 (kostenlose Tickets verfügbar)
Autor Thema:  Tabellengesteuertes Teil, Löschen von Konfigurationen (1212 / mal gelesen)
andi5785
Mitglied
Ingenieur Elektrotechnik

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

Beiträge: 8
Registriert: 18.07.2017

SolidWorks 2017 SP4.1

erstellt am: 18. Jul. 2017 13:51    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 miteinander,

mein erster Beitrag hier, nachdem ich bisher immer über die Suchfunktion fündig wurde...

Ich verwende für die Erstellung einer Bauteilbibliothek mit SWX2017 Konstruktionstabellen, in denen die Varianten gespeichert sind. Ich habe bewusst auf die Verknüpfung des Teils zur Tabelle verzichtet, da das beim Verwenden der Bibliothek durch den Konstrukteur (in dem Moment sind die Dateien schreibgeschützt) immer wieder Probleme gemacht hat.

Workflow fürs Anlegen/Entfernen neue Varianten ist jetzt folgender:

1. Hinzufügen der Variante in Excel
2. Starten eines VB-Skripts, welches die Tabelle mit dem Lager abgleicht und diese nachher in das Teil lädt.

Letzteres funktioniert wunderbar, wenn ich eine neue Variante hinzufüge. Lösche ich jedoch aus der Tabelle eine Variante, bleibt diese im Teil erhalten. Gibt es eine Möglichkeit, diesen Abgleich automatisiert durchzuführen? Alternativ wäre das Löschen aller Varianten und nachfolgender Neuimport der Tabelle ja eine Lösung.

Fürs Importieren der Tabelle verwende ich den Befehl Part.InsertFamilyTableOpen(Pfad). Gibt es hier evtl. eine Option zu setzen?

Vielen Dank für Eure Hilfe

Andreas

Vielen Dank für

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

andi5785
Mitglied
Ingenieur Elektrotechnik

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

Beiträge: 8
Registriert: 18.07.2017

SolidWorks 2017 SP4.1

erstellt am: 18. Jul. 2017 15: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

Habe jetzt die Variante umgesetzt, die:

- alle Konfigurationen außer die erste löscht
- die erste in Default umbenennt
- die Design-Tabelle erneut lädt
- die Default-Konfiguration löscht

Vielleicht nutzt das ja dem ein oder anderen:

Code:
Set swApp = Application.SldWorks
Set Part = swApp.OpenDoc6(root & "\" & NameR & "\" & path_part(index, 1), 1, 0, "", longstatus, longwarnings)
swApp.ActivateDoc2 std(index, 1), False, longstatus
Set Part = swApp.ActiveDoc


' Löschen aller Varianten im Teil
configs = Part.GetConfigurationNames() 'Konfigurationsnamen lesen
Part.ShowConfiguration2 (configs(0)) ' Oberste Konfiguration aktivieren
configs = Part.GetConfigurationNames() 'Konfigurationsnamen lesen
l = UBound(configs) ' Anzahl Konfigurationen

For p = 1 To l
a = Part.DeleteConfiguration2(configs(p)) 'Lösche alle Konfigurationen
Next

' Aktive Konfiguration in Default umbenennen
Set swConfMgr = Part.ConfigurationManager
Set swConfig = swConfMgr.ActiveConfiguration
swConfig.Name = "Default"


' Entfernen der vormaligen Designtabelle
boolstatus = Part.Extension.SelectByID2("Tabelle", "DESIGNTABLE", 0, 0, 0, False, 0, Nothing, 0)
Part.EditDelete

' Laden der neuen Designtabelle
Value = Part.InsertFamilyTableOpen(root & "\" & NameR & "\" & path_table(index, 1))
swApp.ActivateDoc2 std(index, 1), False, longstatus

'Speichern zum Aktivieren
longstatus = Part.SaveAs3(root & "\" & NameR & "\" & path_part(index, 1), 0, 0)

' Lösche Default-Konfiguration
configs = Part.GetConfigurationNames()
l = UBound(configs)

'Wähle letzte Konfiguration
Part.ShowConfiguration2 (configs(l))
a = Part.DeleteConfiguration2("Default")

' Save & Close Document
longstatus = Part.SaveAs3(root & "\" & NameR & "\" & path_part(index, 1), 0, 0)
swApp.CloseDoc std(index, 1)


Oder hat wer eine bessere Idee?

Cheers Andreas

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: 19. Jul. 2017 10:05    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 andi5785 10 Unities + Antwort hilfreich

Hallo Andreas,

das sieht für mich erst mal nach einer resoluten Lösung aus, ich bin mir allerdings nicht ganz sicher, was so z.B. mit irgendwie eingebauten Komponenten passiert, wenn du die Konfigurationen alle löscht und wieder neu erzeugst, ob dann immer sicher alle Verknüpfungen noch gefunden werden etc.. Außerdem müssen alle Konfigurationen noch neu berechnet werden, das dauert natürlich seine Zeit

Wenn das alles kein Hinderungsgrund bei euch ist, ist das doch eine gute Vorgehensweise.

Alternativ dazu kannst du versuchen herauszufinden, welche der Konfigurationen im Modell durch Excel gesteuert werden. Leider habe ich da keinen eigenen Call für gefunden, sowas wie Configuration.IsDrivenByDesignTable oder so. Aber man kann sich das natürlich selber basteln, siehe dieses Beispiel:

Code:

'**************************************************************************
'* Beispiel: herausfinden, ob eine Konfiguration durch Excel
'* gesteuert wird.
'*
'* Stefan Berlitz
'* 19.07.2017
'**************************************************************************

Sub main()
    Dim swApp                   As SldWorks.SldWorks
    Dim swModel                 As SldWorks.ModelDoc2
   
    Dim ConfigCount             As Long
    Dim ConfigNames             As Variant
    Dim ConfName                As String
   
    Dim swDesTable              As SldWorks.DesignTable
   
    Dim TotalRow                As Long
    Dim TotalCol                As Long
    Dim i                       As Long
    Dim bRet                    As Boolean
   
    Dim BomConfig               As Collection
   
    ' an die laufende Sitzung SolidWorks anhängen
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
   
    ' Collection für die Configs aus der DT (DesignTable) vorbereiten
    Set BomConfig = New Collection

    ' zunächst mal aus der aktuellen DesignTable alle Namen der von
    ' dort gesteuerten Konfigurationen auslesen
    Set swDesTable = swModel.GetDesignTable
    bRet = swDesTable.Attach

    ' Anzahl der Zeilen und Spalten aus der DT holen.
    ' ACHTUNG: laut API Beschreibung beginnt Zählung bei 1
    TotalRow = swDesTable.GetTotalRowCount
    TotalCol = swDesTable.GetTotalColumnCount

    ' jetzt alle in der DT ausgeführten Konfigurationsnamen auslesen,
    ' die stehen in der ersten Spalte
    For i = 1 To TotalRow
        BomConfig.Add swDesTable.GetEntryText(i, 1), swDesTable.GetEntryText(i, 1)
    Next i

    ' und DT wieder loslassen, gibt leider Geflacker im Grafikbereich
    swDesTable.Detach
   
    ' dann alle Konfigurationsnamen des Modell holen, da können ja welche
    ' dabei sein, die nicht von der DT gesteuert werden
    ConfigCount = swModel.GetConfigurationCount
    ConfigNames = swModel.GetConfigurationNames
   
    ' dann alle Konfigurationen durchschauen, ob die von der
    ' Exceltabelle gesteuert werden
    For i = 0 To ConfigCount - 1
        ConfName = ConfigNames(i)
        If IsInCollection(BomConfig, ConfName) Then
            Debug.Print "XLS: " & ConfName
        Else
            Debug.Print "std: " & ConfName
        End If
    Next i
   
End Sub


' von http://www.vb-tec.de/collctns.htm
Public Function IsInCollection( _
    ByRef col As Collection, _
    ByRef elem As String _
  ) As Boolean

  On Error Resume Next

    If IsEmpty(col(elem)) Then: 'DoNothing
    IsInCollection = (Err.Number = 0)

  On Error GoTo 0

End Function



Wenn also in deinem Modell nur DT-gesteuerte Konfigurationen sein sollen kannst du nach einem Update der DT damit schauen, welche der Konfiguartionen durch die Tabelle gestuert werden und die anderen ggf. gezielt löschen

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