SolidWorks-eigenschappen

Hallo

Zonder MyCAD Utilities (anders is het te gemakkelijk!!) zou ik graag willen weten of er een mogelijkheid is om een of meer aangepaste eigenschappen in bulk uit SolidWorks-onderdelen te extraheren.

Ja, onder VB.Net als je het weet, kan ik je wat stukjes code geven die ik vroeger :)

1 like

Ja dat wil ik, het zou leuk zijn.

Bedankt

Hallo

Daar was een tutorial over een VBA-code voor.

http://www.lynkoa.com/tutos/import-export-formats-neutres/macro-solidworks-exporter-les-propri%C3%A9t%C3%A9s-personnalis%C3%A9e-vers-exce

1 like

Het is inderdaad deze macro, maar hij verwerkt geen bulkbestanden en ik ben genoodzaakt SolidWorks te openen.

Ik wou dat ik het kon doen zonder SolidWorks te openen.

1 like

Ik gebruik deze code niet meer, maar  op het moment dat het werkte, hield me op de hoogte

    ''' <summary>
    ''' Renvoi la propriete selectionner dans un fichier Solidworks Donnée
    ''' swSumInfoTitle = 0
    ''' swSumInfoSubject = 1
    ''' swSumInfoAuthor = 2
    ''' swSumInfoKeywords = 3
    ''' swSumInfoComment = 4
    ''' swSumInfoSavedBy = 5
    ''' swSumInfoCreateDate = 6
    ''' swSumInfoSaveDate = 7
    ''' swSumInfoCreateDate2 = 8
    ''' swSumInfoSaveDate2 = 9
    ''' </summary>
    ''' <param name="File">Fichier a controller</param>
    ''' <param name="PropNumber">Type d'info a recupere</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function ReadProperties(File As String, PropNumber As Integer) As String
        If File = Nothing Or PropNumber = Nothing Then Return Nothing
        Dim swDocSpecification As SldWorks.DocumentSpecification = swApp.GetOpenDocSpec(File)
        swDocSpecification.Silent = True : swDocSpecification.ReadOnly = True : swApp.OpenDoc7(swDocSpecification)
        Dim swModel As ModelDoc2 = swApp.ActiveDoc
        Dim Properties As String = swModel.SummaryInfo(PropNumber)
        swApp.CloseDoc(File) 'Fermeture de la piece
        If Not Properties = Nothing Then Return Properties Else Return Nothing
    End Function

    ''' <summary>
    ''' Inscrit la propriete selectionner dans un fichier Solidworks Donnée
    ''' swSumInfoTitle = 0
    ''' swSumInfoSubject = 1
    ''' swSumInfoAuthor = 2
    ''' swSumInfoKeywords = 3
    ''' swSumInfoComment = 4
    ''' </summary>
    ''' <param name="File">Fichier a éditer</param>
    ''' <param name="PropNumber">Type d'info a renseigner</param>
    ''' <param name="PropValue">Info a renseigner</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Function WriteProperties(File As String, PropNumber As Integer, PropValue As String) ' As String
        Dim swDocSpecification As SldWorks.DocumentSpecification = swApp.GetOpenDocSpec(File)
        swDocSpecification.Silent = True : swDocSpecification.ReadOnly = False : swApp.OpenDoc7(swDocSpecification)
        Dim swModel As ModelDoc2 = swApp.ActiveDoc
        swModel.SummaryInfo(PropNumber) = PropValue
        Dim fileerror, filewarning As Integer
        swModel.Save3(SwConst.swSaveAsOptions_e.swSaveAsOptions_Silent, fileerror, filewarning)
        swApp.CloseDoc(File) 'Fermeture de la piece
        Return Nothing
        'If ReadProperties(File, PropNumber) = PropValue Then Return PropValue Else Return Nothing
    End Function
    Delegate Sub dEditDrawingProperties(DrawingToEdit As String)
    Function EditDrawingProperties(DrawingToEdit As String)
        Dim swDmDoc As SwDocumentMgr.ISwDMDocument18 = swDmGetDocument(DrawingToEdit, False) 'Ouverture du document
        'MAJ propriété général
        swDmSetCustomProperty(swDmDoc, "LBM_DWG", Regex.Match(DrawingToEdit, "N°([0-9]+)-0.SLDDRW", RegexOptions.IgnoreCase).Groups(1).Value, SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_REV", "0", SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_REV1", "0", SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_DATE1", Dateddmmyy, SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_MEMO1", "First Issue", SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_ISSUED1", User(), SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmSetCustomProperty(swDmDoc, "LBM_PROJECT", DrawingToEdit.Split(New Char() {"\"c})(5), SwDocumentMgr.SwDmCustomInfoType.swDmCustomInfoText)
        swDmDoc.Save() : swDmDoc.CloseDoc() 'Sauvegarde du document'Fermeture du document
        Return Nothing
    End Function

Kijk anders naar de swDocMgr http://help.solidworks.com/2016/english/api/swdocmgrapi/get_configuration_information_example_vbnet.htm

1 like

Hoi flegendre,

Als u toegang wilt krijgen tot de eigenschappen van SW-bestanden zonder ze te openen, moet u de Document Manager-API gebruiken.

Zoals vermeld in de help, moet u een gratis licentie aanvragen door in te loggen op uw SW-klantengebied.

Klik vervolgens in "Mijn ondersteuning" op "API-assistentie". Vervolgens op " Document Manager Key Request "

U wordt gevraagd om informatie over uw bedrijf en voor welk doel u deze licentie wilt gebruiken.

Er zijn regenachtige toegangsniveaus. We gebruiken de functies Basis en Preview. En dat is meer dan genoeg.

U ontvangt een e-mail met uw licentienummer dat in uw code moet worden geïntegreerd. U zult dit verzoek elk jaar moeten doen om toegang te krijgen tot de SW-bestanden met de nieuwe versie, en dus de sleutel in uw code aan te passen.

Heb je ooit gecodeerd in Vb.Net?

Maakt u al gebruik van een EDI?

Wat wil je in detail doen?

 

Fijne dag

 

2 likes

@remrem,

Persoonlijk programmeer ik niet, maar mijn collega-ingenieur weet hoe hij in VBA moet coderen.

Wat is EDI?

Wat ik precies wil doen is dit:

Ik zou graag 2 dingen willen kunnen doen (zonder SoloidWorks te openen):

  •  maak een lijst van de aangepaste eigenschappen van de SW-onderdelen die in één map aanwezig zijn, stuur ze naar een Excel-bestand (om ze te kunnen sorteren op type eigenschappen)
  • Kunnen zoeken via een of meer eigenschappen uit een SW-onderdelendirectory

 

 

1 like

Een IDE is een "Integrated Development Environment".

Persoonlijk gebruik ik Visual Studio. Maar er zijn er nog veel meer. Hiermee kunt u een kleine app maken die vervolgens wordt geïnstalleerd zoals elke andere app.

Wil je alle eigenschappen van elk bestand op een rijtje zetten of weet je al de naam van de eigenschappen die je wilt lezen?

Wil je de eigenschappen van .sldprt, sldasm, en en slddw lezen?

Wees voorzichtig, de Vb.net is nog steeds heel anders dan de VBA.

3 likes

"Wilt u de eigenschappen van .sldprt, sldasm, en en slddrw lezen?"

Ik wil alleen de eigenschappen van SLDPRT-onderdelen lezen

"Wil je alle eigenschappen van elk bestand opsommen of weet je al de naam van de eigenschappen die je wilt lezen?"

In geval nr. 1 wil ik "dom" alle eigenschappen van elk onderdeel opsommen.

Voorbeeld: Ik wil alle onderdelen met de waarde FUNVISIO in een van de eigenschappen vermelden.

In geval nr. 2 ken ik de namen van de eigendommen en wil ik snel degene met een bekende waarde markeren.

Voorbeeld: Ik wil alle onderdelen met de eigenschap Material = Alu op een rijtje zetten