Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Excel-Makro benutzerdefinierte Dateieigenschaften für Zeichnungen ohne SWX

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 Hannover
Autor Thema:  Excel-Makro benutzerdefinierte Dateieigenschaften für Zeichnungen ohne SWX (4729 mal gelesen)
hico
Mitglied
Konstrukteur


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

Beiträge: 258
Registriert: 03.03.2005

erstellt am: 01. Feb. 2008 09:49    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


SWie_1.2_kopie.zip

 
Hallo SWX-Programmiergemeinde...
Wie der Betreff schon vermuten lässt gehts mir darum, das Excel-Tool "SWie" von der finnischen Seite http://www.markkulehtola.net  so umzustricken, dass das ganze ohne SWX läuft. Die Originaldatei von Markku ist für Parts und Assemblys gedacht gewesen und berücksichtigt auch die konfigurat.spez. Dateieigenschaften. Ich will aber lediglich BENUTZERDEFINIERTE Dateieigenschaften und keine konfigurationsspezifischen einlesen und wieder schreiben. Das müsste doch auch ohne SWX vonstatten gehen, da man diese Eigenschaften ja auch auf Dateisystemebene erreichen kann. Ich habe den bisherigen Stand meiner Abänderung als Datei angehängt. Funktioniert soweit einwandfrei, nur mit dem Nachteil, dass SWX jede Zeichnung öffnet und dies entsprechend lange dauert... Bin für jeden Hinweis dankbar!

------------------
Gruß Hilmar

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: 01. Feb. 2008 10: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 Nur für hico 10 Unities + Antwort hilfreich

Hallo Hilmar,

um das ohne SolidWorks selbst zu machen musst du ein anderes Ding eibbinden, mit dem du da ran kommst, VB/VBA kann das selbst nicht. Such mal nach DSOFILE.DLL hier im Brett oder in Google, das ist eine Möglichkeit, die andere (in meinen Augen bessere) ist die Nutzung des SolidWorks Document Managers, der mit SolidWorks geliefert wird. Dazu gibt es eine entsprechende API Hilfe in deinem SolidWorks Installationverzeichnis.

Ciao,
Stefan

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

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

hico
Mitglied
Konstrukteur


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

Beiträge: 258
Registriert: 03.03.2005

erstellt am: 05. Feb. 2008 12:27    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

Um möglichst universell zu bleiben wollte ich die Sache mit der DSOfile.dll (Version 2.0 !) erledigen. Leider kann man (anders als bei den SummaryProperties) wie es scheint keine individuelle Abfrage eines bestimmten "custom property" machen, sondern das ganze nur als "Sammlung" in der Form einer For/Next Schleife abfragen. Siehe dazu auch http://www.microsoft.com/germany/technet/datenbank/articles/600696.mspx
Der Folgende Code ist mein bisheriger Stand:

Dim objFile As Object
Dim objProperty As Object
Dim Dateiname, Pfad, Title As String
Dim AttrZahl, AttrZahlMinus As String
Dim AttrName As Range
Dim AttrWert As String


Sub ImportButton_Click()

AttrZahl = Tabelle1.Range("C3").Value
AttrZahlMinus = "-" & AttrZahl

Worksheets("Drawings").Activate
Dateiname = Dir(Tabelle1.Range("C4").Value & "\*.SLDDRW")
Pfad = Tabelle1.Range("C4").Value & "\"

Tabelle1.Range("A8:Z500").Select
Selection.ClearContents
Tabelle1.Range("A8").Select

Do While Dateiname <> ""
   
    ActiveCell.Value = Dateiname
    ActiveCell.Offset(0, 1).Activate
    Set AttrName = Tabelle1.Range("B6")
   
    For i = 1 To AttrZahl
        Set objFile = CreateObject("DSOFile.OleDocumentProperties")
        objFile.Open (Pfad & Dateiname)
        AttrWert = objFile.CustomProperties.AttrName  ' <=== hier klemmts !

        ActiveCell.Value = AttrWert
        ActiveCell.Offset(0, 1).Activate
        Set AttrName = AttrName.Offset(0, 1)
    Next i
    Set objFile = Nothing
    ActiveCell.Offset(1, AttrZahlMinus - 1).Activate
    Dateiname = Dir
   
Loop

MsgBox "Done!"

End Sub

Erklärung zum Excel-Tabelleninhalt:
- In Zelle C3 steht die Anzahl der abzurufenden "custom properties" (104)
- In Zelle C4 steht der Pfad zum Ordner, welcher alle auszulesenden *.SLDDRW enthält
- Zelle B6 bis Zelle DA6 stehen die 104 Attributnamen, die es auszulesen gilt
- In Zelle A8 soll der Dateiname vom SLDDRW eingetragen werden, ab B8 bis DA8 die dazugehörigen Attributwerte korrespondierend zu den oben stehenden Attributnamen.

Leider funktioniert die Form der Abfrage nicht so, wie das mit Solidworks-Mitteln gegangen wäre, also

ActiveCell.Value = Model.GetCustomInfoValue("", AttrName)

Hat noch irgendwer eine Idee?


------------------
Gruß Hilmar

[Diese Nachricht wurde von hico am 05. Feb. 2008 editiert.]

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

VBSpawn
Mitglied
Programmierer


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

Beiträge: 514
Registriert: 23.08.2005

Sorgfältige Planung ersetzt niemals pures Glück.

erstellt am: 05. Feb. 2008 16:45    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 hico 10 Unities + Antwort hilfreich

Hallo,

Zitat:
Original erstellt von hico:

Hat noch irgendwer eine Idee?

AFAIKAs far as i know (So viel ich weiss):

SWXSolidWorks hat einen eigenen PropertySheetHandler Implementiert welcher den 'Normalen' -> also der welchen du mit der dsoFile.dll abfragen kannst, durch einen eigenen Handler ersetzt.
Deswegen kann dein Vorhaben so nicht Funktionieren.
Die dsofile.dll ist auf Office Dateien getrimmt, oder vielmehr auf alle Dateien welche diesen default MS-Handler Implementiert haben.

Du musst wohl oder über den Umweg nehmen den Stefan bereits genannt hat, oder dir mehr Arbeit machen als du möchtest.

Gruß
Micha
Dazu gehört SWXSolidWorks nicht.

------------------
Stell dir vor, es geht, und keiner kriegts hin.

  

Zitat:
Interpunktion und Orthographie des Postings sind frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein zufällig und ist nicht beabsichtigt.

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

hico
Mitglied
Konstrukteur


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

Beiträge: 258
Registriert: 03.03.2005

erstellt am: 06. Feb. 2008 08: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

Hallo Micha!

Nunja, habe mir gerade die benutzerdefinierten Dateieigenschaften einer SLDDRW auf einem am Netz hängenden Rechner angesehen, der KEIN SWXSolidWorks installiert hat... Auch dort kann man die Eigenschaften per RMT=>Eigenschaften aus dem Explorer heraus erreichen... Scheint also DOCH MS Office-Kompatibel zu sein, oder täusche ich mich? Lediglich mein Vorhaben, dies für EINZELNE custom Properties machen zu wollen schlägt fehl... mit einer FOR/EACH Schleife ginge das, wie die Beispiele der MS-Scripter verraten...

Set objFile = CreateObject("DSOFile.OleDocumentProperties")
objFile.Open("C:\Scripts\New_users.xls")

For Each objProperty in objFile.CustomProperties
    Wscript.Echo objProperty.Name, objProperty.Value
Next

Sogar das löschen individueller CustomProperties geht...

Set objFile = CreateObject("DSOFile.OleDocumentProperties")
objFile.Open("C:\Scripts\New_users.xls")

Set objProperty = objFile.CustomProperties.Item("Letztes Anzeigedatum")
objProperty.Remove
objFile.Save

Evt. sollte ich dieses Frage eher in einem anderen Forum stellen ... mit SWXSolidWorks hat dies ja nicht mehr wirklich etwas zu tun.

------------------
Gruß Hilmar

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

Harald Stratmann
Mitglied
Dipl.-Ing. Maschinenbau


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

Beiträge: 169
Registriert: 17.11.2003

W7 professional-64bit
12GB Ram
NVidia Quadro 2000
SWX 2013

erstellt am: 06. Feb. 2008 09:43    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 hico 10 Unities + Antwort hilfreich

Ich habe das für einfache zwecke mal wie folgt gelöst:

Sub Modelldaten_holen()
Dim m_oDocumentProps As DSOFile.OleDocumentProperties
Dim oCustProp As DSOFile.CustomProperty
Dim sFile As String, sTmp1, sTmp2 As String
Dim fOpenReadOnly As Boolean
Dim i As Integer
Dim ZNR As String
   
    ' Uses reference to "DSO OLE Document Properties Reader 2.1"
    Set m_oDocumentProps = New DSOFile.OleDocumentProperties
   
    sFile = "c:\temp\prtdatei.sldprt"
    fOpenReadOnly = False
    i = 1
   
    ZNR = Left(Zeichnungsnr, 3)
    If ZNR = "100" Then
    ' Daten aus Dateiinfo auslesen
    m_oDocumentProps.Open sFile, fOpenReadOnly, dsoOptionOpenReadOnlyIfNoWriteAccess
   
    ' Daten an Textfelder übergeben
    For Each oCustProp In m_oDocumentProps.CustomProperties
      sTmp1 = oCustProp.Name
      If sTmp1 = "Bezeichnung" Then
        Bezeichnung = CStr(oCustProp.Value)
      End If
      If sTmp1 = "Halbzeug" Then
        Halbzeug = CStr(oCustProp.Value)
      End If
      If sTmp1 = "Norm" Then
        Norm = CStr(oCustProp.Value)
      End If
      If sTmp1 = "Rohmaß: Querschnitt" Then
        Querschnitt = CStr(oCustProp.Value)
      End If
      If sTmp1 = "Rohmaß: Länge" Then
        Länge = CStr(oCustProp.Value)
      End If
      If sTmp1 = "Werkstoff" Then
        Werkstoff = CStr(oCustProp.Value)
      End If
      If sTmp1 = "Materialnummer" Then
        MatNr = CStr(oCustProp.Value)
      End If
      i = i + 1
    Next
    End If
   
End Sub

Kann aber auch sein das dies am Thema vorbeigeht,
dann bitte vergessen.

Gruß Harald

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