Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  SW Part features nach Excel importieren

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
  
Hands-on 3D-Druck am 11.04.2024 in Langenau
Autor Thema:  SW Part features nach Excel importieren (1372 mal gelesen)
xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 20. Jun. 2016 10: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

Hallo zusammen,
ich habe hier ein Projekt und wäre sehr dankbar für jede Unterstützung.

Skript Funktion:

Features aus Parts auslesen und in Excel unter der Partnummer speichern

Hintergrund:

Wir haben hier 2000 Hydrauliksteuerbloecke als Parts. In diesen Parts werden
Bohrungsfeatures verwendet. Diese brauchen wir als Vergleich für alle Parts.

Die Idee ist alle Blöcke über eine Schleife zu öffnen und jeweils die Features aus-
zulesen und in Excel mit Referenz zum jeweiligen Part abzuspeichern.
Alle Partnamen sind bereits in excel gelistet Bereich Tabelle1 Bereich A1 bis A2000.


Folgender Ablauf ist angedacht

1. Excel Makro starten in Excel
2. Öffnen des nten Parts in SW - Name des Parts aus Excel Cell An (für das erste A1 für das zweite A2 usw..)
3. Features auslesen in SW - Evtl. Getfeature Methode nutzbar
4. Features in Excel unter Part Referenz abspeichern SW zu Excel - quasi untereinander (Part/Feature)
5. Nächstes Part öffnen - gleicher Ablauf - Part Referenz und verwendete Features in der gleichen Datei ablegen.

Besten Dank,
Felix 

------------------
Es gibt nichts Gutes außer man tut es

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 20. Jun. 2016 11: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 xilefotto 10 Unities + Antwort hilfreich

Hallo Felix,

wobei brauchst du denn jetzt genau Hilfe? Die GetFeatures Method (IFeatureManager) hast du ja anscheinend schon endeckt?
Alternativ gibt es auch noch die Möglichkeit über IFirstFeature Method (IModelDoc2) und GetNextFeature Method (IFeature) zu gehen.

Evtl. kannst du einiges auch aus dem Beispiel "Traverse Assembly at Component and Feature Levels Using Recursion Example (VBA)" ableiten.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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: 20. Jun. 2016 11:58    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 xilefotto 10 Unities + Antwort hilfreich

Hallo Felix,

und herzlich willkommen im SolidWorks-Brett auf CAD.de 

Interessante Aufgabe, die du da hast. Wo hast du denn jetzt bei der Umsetzung genau Schwierigkeiten? Wenn du deinen bisherigen Code zur Verfügung stellst und die Situation, an der du jetzt nicht weiterkommst genau beschreibst kann dir bestimmt der ein oder andere mit ein paar Schubsern in die richtige Richtung weiterhelfen 

Ciao,
Stefan

PS: Wenn dein  und meins in eine ähnliche Richtung gehen und du eigentlich ein fertiges Makro haben möchtest empfehle ich den Thread http://ww3.cad.de/foren/ubb/Forum2/HTML/028301.shtml , schau auch mal bei meiner Antwort hier, oder auch wie hier als Vorschlag oder hier als Erklärung.

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

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 20. Jun. 2016 12:19    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 xilefotto 10 Unities + Antwort hilfreich

Hallo Felix

Vielleicht hilft das weiter

http://forum.cad.de/foren/ubb/Forum2/HTML/016579.shtml

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 20. Jun. 2016 13:58    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,

vielen Dank für die Antworten. Ich bin schon recht gut vorangekommen mit meinem zusammengemopsten Code.
Ein herzliches Dankeschön an den Autor dieses Makros:
http://solidworks.cad.de/mm_10.htm

Was bisher funktioniert. Die Teile sind als Pfad eingelesen in Tabelle1 und die Features des aktiven Teils werden mit Referenz zum aktiven Teil gelistet.
Was mir noch fehlt:

1. Die Schleife, dass das nächste Teil geöffnet wird nachdem das erste Teil ausgelesen wurde.
2. Eine Funktion die das vorherige Teil schließt (es sollen ja keine 1500 Parts offen sein)
3. Eine Funktion die unterhalb des bisherig eingefügten anknüpft und wie beim ersten Teil Inforamtionen in Tabelle2 einfügt.

Ich habe meinen bisherigen Code als XLS mal hochgeladen 
Die Sache läuft komplett fertig bekomm ichs aber selbst noch nicht siehe oben 

Vielen Dank für weiter Tipps. Ich freue mich sehr, dass so schnell jmd geantwortet hat.

Das Anhängen klappt nicht deshalb hier ein link zu Googledrive:
https://drive.google.com/open?id=0B5eOs9X4o0IeMDdLSzB2dW1fQnc

Vielleich hilfts jemanden mit dem selben Problem

------------------
Es gibt nichts Gutes außer man tut es

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 20. Jun. 2016 14:00    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

*die Features sind in Tabelle2 bzw. "Features" agespeichert

------------------
Es gibt nichts Gutes außer man tut es

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 20. Jun. 2016 19: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

Hallo Zusammen jetzt ist die Sache fertig:

anbei der Code:

' Globale Variable
Dim Zeile As Integer        ' Zeilenzähler für Ausgabe im Blatt
Dim Blockanzahl As Long
Dim Featureanzahl As Long
Dim Blockstufe


Sub Main() 'Hauptprogramm
Blockstufe = 1
Featureanzahl = 0 'Featureanzahl = 0 'mal löschen um Featurezaehler auf 0 zu setzen
Call Blattleeren
Call Bloeckeliste
Call Bloeckezaehlen
While Blockstufe < Blockanzahl 'Schleife
Call Oeffnen
Call Featurekopieren
Call Schließen
Call Featurezaehlen
Blockstufe = Blockstufe + 1
Wend
End Sub

Sub Blattleeren()
Worksheets("Features").Activate
    Cells.Select
    Selection.ClearContents
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Partname"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Featurenname"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "Typ"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "Status"
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "Anzeige"
End Sub

Sub Bloeckeliste() 'Dateien im Pfad listen hier die BLockliste'

Dim fs As Object
Dim fVerz As Object
Dim fDatei As Object
Dim fdateien As Object
Dim strDat As String
Dim Zeile As Integer

Worksheets("Blockliste").Activate 'Sonst Überschreibungsgefahr
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.getFolder("C:\Users\v.gaspert\Desktop\Temp\Blöcke\Parts") 'Pfad auswählen'
Set fdateien = fVerz.Files 'Bereich'

For Each fDatei In fdateien 'Schleife'
    If InStr(fDatei, "") > 0 Then ' Integer-Wert zurück, der die Anfangsposition des ersten Auftretens einer Zeichenfolge innerhalb einer anderen Zeichenfolge angibt'
        Zeile = Zeile + 1
        Cells(Zeile, 1) = fDatei.Path
    End If
Next fDatei
End Sub

Function AnzahlZeilen(Blatt As Worksheet) As Integer 'Benötigt für die Zählfunktion
AnzahlZeilen = WorksheetFunction.CountA(Blatt.Range("A:A"))
End Function

Sub Bloeckezaehlen() 'Bloeckzaehlen um Schleifendurchläufe zu bestimmen
Blockanzahl = AnzahlZeilen(Worksheets("Blockliste"))
'MsgBox ("Zeilen:" & Blockanzahl)
End Sub

Sub Oeffnen()
Set swApp = GetObject(, "sldworks.application")
Dim swmod As Object
Sheets("Blockliste").Select
swApp.OpenDoc ActiveSheet.Range("A" & Blockstufe).Value, 1
End Sub

Sub Schließen()
Set swApp = GetObject(, "sldworks.application")
swApp.CloseAllDocuments True
End Sub

Sub Featurekopieren()

    Worksheets("Features").Activate 'Sonst wird das Blockskript überschrieben
    Dim swApp As Object
    Dim Model As Object
   
    ' an SolidWorks anklinken und aktives Part holen
    Set swApp = CreateObject("SldWorks.Application")
    Set Model = swApp.ActiveDoc
    If Model Is Nothing Then
      Exit Sub
    End If

    If (Model.GetType <> 1) Then                  ' Do not allow drawings or assemblies
      Msg = "Only Allowed on Parts"              ' Define message
      Style = vbOKOnly                            ' OK Button only
      Title = "Error"                            ' Define title
      Call MsgBox(Msg, Style, Title)              ' Display error message
      Exit Sub                                    ' Exit this program
    End If

    Zeile = Featureanzahl + 2
   
    Set feat = Model.FirstFeature
    Do While Not feat Is Nothing
      Let featureName = feat.Name
      'ist das Feature ein "body"Feature
      'Ausschluß von Ebenen, Achsen, Skizzen, ...
      res = Model.SelectByID(featureName, "BODYFEATURE", 0, 0, 0)
      If res Then
      ' in Excelblatt den aktuellen Partnamen eintragen ...
        Range("A" & Zeile).Select
        ActiveCell.FormulaR1C1 = Model.GetTitle
      ' in Excelblatt den aktuellen Featurenamen eintragen ...
        Range("B" & Zeile).Select
        ActiveCell.FormulaR1C1 = featureName
      ' den FeatureTyp...
        Range("C" & Zeile).Select
        ActiveCell.FormulaR1C1 = feat.GetTypeName
      ' den Unterdrückungsstatus ...
        Range("D" & Zeile).Select
        If feat.IsSuppressed Then ActiveCell.FormulaR1C1 = "unterdrückt"
      ' und den Anzeigestatus im FeatureManager
        Range("E" & Zeile).Select
        If feat.GetUIState(1) Then ActiveCell.FormulaR1C1 = "versteckt"
      ' Zeilenzähler zur Ausgabe in Tabellenblatt erhöhen
      Zeile = Zeile + 1
      End If
      ' Get the next feature
      Set feat = feat.GetNextFeature()
    Loop
   
End Sub

Sub Featurezaehlen() 'Featurezaehlen um Schleifneuansatz zu bestimmen
Featureanzahl = AnzahlZeilen(Worksheets("Features"))
'MsgBox ("Zeilen:" & Featureanzahl)
End Sub

'Superhappy!!!!
   

------------------
Es gibt nichts Gutes außer man tut es

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 21. Jun. 2016 09: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 xilefotto 10 Unities + Antwort hilfreich

Hallo,

danke für das Reinstellen ...
jetzt muss man nur dran denken, dass es um Hydraulik-Blöcke geht und nicht um Skizzen-Blöcke aus SolidWorks ... 

Gruß, Christian

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 21. Jun. 2016 09:53    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 Christian,

sehr gerne aber in erster Linie darfst du dich bei Stefan bedanken.
Er hat quasi die wichtigste SUB () geschrieben.

Hier auch nochmal ein dickes Dankeschön von mir.

------------------
Es gibt nichts Gutes außer man tut es

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 28. Jun. 2016 21:10    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

Obacht bei den Variabeln Integer .. reicht net  musste auf Long ausweichen

------------------
Es gibt nichts Gutes außer man tut es

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 29. Jun. 2016 06:47    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 xilefotto 10 Unities + Antwort hilfreich

Hallo xilefotto,

Zitat:
Obacht bei den Variabeln Integer .. reicht net  musste auf Long ausweichen

Wie der Integer reicht nicht, der Integr geht bei 32-Bit von -2.147.483.647 bis 2.147.483.647, Excel 2010 packt doch nur max. 1,05 Mio. Zeilen in einer Tabelle.
Oder bin ich eben beim falschen Integer  .

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 29. Jun. 2016 08:38    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 xilefotto 10 Unities + Antwort hilfreich

Der Integer ist in VBA nur 16-bit gross, also nur -32768 bis 32767.
http://www.vba-tutorial.de/variablen/datentypen.htm

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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