Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 10 di 13
  1. #1
    Utente Junior
    Iscritto dal
    2007
    Messaggi
    61
    Professione
    progettista
    Regione
    veneto
    Software
    swx2011 - PTC Creo direct Modeling

    Predefinito leggere una proprietÓ del modello dal disegno con macro

    Buongiorno,
    st˛ facendo una macro particolare e mi servirebbe rilevare una proprietÓ personalizzata presente nel modello partendo per˛ dal disegno relativo.

    Riesco a rilevare quelle del disegno ma non del modello.
    Non mi riferisco all'uso dei vari $prpsheet:"Revisione" .... ma una lettura a livello di macro.

    Spero di essermi chiarito
    swx2008 sp.3
    ciao

  2. #2
    Utente Standard L'avatar di jenuary
    Iscritto dal
    2007
    Messaggi
    385
    Professione
    Progettista e Programmatore VB.Net
    Regione
    Veneto
    Software
    Solidworks

    Predefinito accesso mediante SwDocument

    Ciao a tutti,
    Ŕ un p˛ di tempo che non mi faccio vivo al forum e non ne vado molto fiero, ma volevo proporti una soluzione alternativa a quelle classiche:

    utilizzando le Api di SwExplorer puoi avere accesso a tuttu le informazioni del componente, come ad esempio le proprieta personalizzate, i riferimenti esterni ecc.

    Qui sotto ti copio del codice presente nelle api di swexplorer, che ti permette di avere accesso alle informazioni del modello e ricavandone le proprieta della configurazione attiva.
    L'unico inconveniente Ŕ che dovresti per la prima volta che sviluppi una macro con le api di swexplorer, farti dare dal tuo rivenditore la "licenze key" che ogni volta ti porterai dietro, nella stringa della macro.
    Approposito, la licenza Ŕ gratuita.
    La stringa dove inserire la licenza Ŕ questa :

    Set tapp = classfac.GetApplication("your_license_key") 'Specify your license key

    e questo Ŕ l'esempio:

    This example shows how to get and set custom property values using the SolidWorks Document Manager API.



    '-----------------------------------------------------------------

    '

    ' Preconditions: E:\2005\linkedProp_ST\LinkedPropTest.SLDPRT exists

    '

    ' Postconditions: MyMass and MyDimension custom property values are changed

    '

    '------------------------------------------------------------------

    Option Explicit

    Dim swDocMgr As SwDocumentMgr.SwDMApplication

    Dim swDoc As SwDocumentMgr.SwDMDocument

    Dim vExtRefArr As Variant

    Dim vExtRef As Variant

    Dim nretval As Long

    Dim tapp As SwDMApplication



    Sub Main()

    'On Error GoTo errorHandler

    Dim classfac As SwDocumentMgr.SwDMClassFactory

    Set classfac = CreateObject("SwDocumentMgr.SwDMClassFactory")

    Set tapp = classfac.GetApplication("your_license_key") 'Specify your license key

    Dim d_2005 As SwDMDocument3

    Dim s1 As String



    Dim e As Long

    Dim proptype As Long



    Dim path As String

    path = "E:\2005\linkedProp_ST\"

    Set d_2005 = tapp.GetDocument("E:\2005\linkedProp_ST\LinkedProp Test.SLDPRT", swDmDocumentPart, True, e)

    Dim v As Variant

    v = d_2005.GetCustomPropertyNames

    Debug.Print 'param string: ' & d_2005.GetCustomProperty('MyMass', proptype)

    Debug.Print 'value: ' & d_2005.GetCustomPropertyValues('MyMass', proptype, s1)

    ''Note, you can also get the param string from

    ''SwDMDocument3::GetCustomPropertyValues or

    ''SwDMConfiguration4::GetCustomPropertyValues linkedTo parameter (s1)

    Debug.Print 'param string: ' & s1

    Debug.print ' '

    Debug.Print 'param string: ' & d_2005.GetCustomProperty('DocLevelNL', proptype)

    Debug.Print 'value: ' & d_2005.GetCustomPropertyValues('DocLevelNL', proptype, s1)



    Dim c As SwDMConfiguration4

    Set c = d_2005.ConfigurationManager.GetConfigurationByName ("config_h1")

    Dim v2 As Variant

    v2 = c.GetCustomPropertyNames



    Debug.Print "param string: " & c.GetCustomProperty("MyDimension", proptype)

    Debug.Print "value: " & c.GetCustomPropertyValues("MyDimension", proptype, s1)

    Debug.Print "param string: " & c.GetCustomProperty("ConfigLevelNL", proptype)

    Debug.Print "value: " & c.GetCustomPropertyValues("CONFIGLEVELNL", proptype, s1)



    Set c = d_2005.ConfigurationManager.GetConfigurationByName ("config_h3")

    Debug.Print "param string: " & c.GetCustomProperty("MyDimension", proptype)

    Debug.Print "value: " & c.GetCustomPropertyValues("MyDimension", proptype, s1)





    d_2005.SetCustomProperty "MyMass", "new non-linked value"

    Debug.Print "param string: " & d_2005.GetCustomProperty("MyMass", proptype)

    Debug.Print "value: " & d_2005.GetCustomPropertyValues("MyMass", proptype, s1)



    c.SetCustomProperty "MyDimension", "new non-linked value, CS"

    Debug.Print "param string: " & c.GetCustomProperty("MyDimension", proptype)

    Debug.Print "value: " & c.GetCustomPropertyValues("MyDimension", proptype, s1)



    d_2005.CloseDoc

    Set d_2005 = Nothing

    Set tapp = Nothing

    Set classfac = Nothing

    End Sub




    Ti propongo questa soluzione perche ho notato che Ŕ molto piu semplice avere accesso ai dati e ho avuto modo di realizzare applicativi per generare distinte materiali con SW chiuso.

    Ciao Roberto

  3. #3
    Utente Junior
    Iscritto dal
    2007
    Messaggi
    61
    Professione
    progettista
    Regione
    veneto
    Software
    swx2011 - PTC Creo direct Modeling

    Predefinito

    grazie roberto per la dritta... sto facendo delle prove ma non ti nascondo che preferirei la strada interna al software con macro.

    ciao

  4. #4
    Utente Standard L'avatar di jenuary
    Iscritto dal
    2007
    Messaggi
    385
    Professione
    Progettista e Programmatore VB.Net
    Regione
    Veneto
    Software
    Solidworks

    Predefinito Macro

    Ciao,
    ho cercato di capire come potevo aiutarti e sono arrivato a delle conclusioni (nei limiti delle mie capacitÓ) che volevo condividere con te.
    Come concetto l'utente di Solidworks non ha la possibilitÓ ad avere accesso diretto alle proprietÓ personalizzate del modello nel momento in cui Ŕ all'interno della tavola, se non mediante le variabili "$PRP:".
    Sembra che solo i Pdm ti permettano di copiare, modificare ecc. le proprieta personalizzate dalla tavola al modello e viceversa (facendo da tramite, assorbendo da una parte e mettendo dall'altra).
    La parte di codice che ti avevo precedentemente scritto serviva per fare appunto questo, fungendo da tramite.
    Nella speranza di aver azzeccato quanto ti serve, ho scritto una macro che ti permette di prelevare dal modello il valore della proprietÓ personalizzata richiesta, chiaramente la macro Ŕ sbozzata ma funzionante.
    In questa macro sono andato a prelevare il valore della proprieta personalizzata DENOMINAZIONE.

    La macro Ŕ la seguente:


    Dim swApp As Object
    Dim Part As Object
    Dim SelMgr As Object
    Dim boolstatus As Boolean
    Dim longstatus As Long, longwarnings As Long
    Dim Feature As Object
    Sub main()

    Dim swDraw As SldWorks.DrawingDoc
    Dim swView As SldWorks.View
    Dim swNote As SldWorks.Note
    Dim swAnn As SldWorks.Annotation
    Dim swModel As SldWorks.ModelDoc2
    Dim proprieta As String
    Dim bRet As Boolean

    Set swApp = Application.SldWorks

    Set Part = swApp.ActiveDoc
    Set SelMgr = Part.SelectionManager

    Dim Note As Object
    Dim Annotation As Object
    Dim TextFormat As Object
    Set Note = Part.InsertNote("$PRP:""DENOMINAZIONE""$PRPSHEET:" "DENOMINAZIONE""")

    If Not Note Is Nothing Then
    Note.Angle = 0
    boolstatus = Note.SetBalloon(0, 0)
    Set Annotation = Note.GetAnnotation()

    proprieta = Note.GetText

    MsgBox "Il valore della proprietÓ personalizzata DENOMINAZIONE nel modello ha valore: " & proprieta

    'ATTIVANDO QUESTA SECONDA PARTE NELLA TAVOLA VIENE SCRITTA UNA NOTA

    ' If Not Annotation Is Nothing Then
    ' longstatus = Annotation.SetLeader2(False, 0, True, False, False, False)
    ' boolstatus = Annotation.SetPosition(0.2461175510748, 0.08756118516563, 0)
    ' boolstatus = Annotation.SetTextFormat(0, True, TextFormat)

    ' End If
    End If


    End Sub


    Come puoi notare attivando la seconda parte del codice, in tavola vine "messa gi¨" una nota contenente il valore della proprietÓ richiesta.
    A questo punto la puoi sviluppare a piacimento secondo le tue esigenze.

    Fammi sapere se ti puo essere utile, se hai bisogno ti aiuto volentieri.

    Ciao
    File Allegati File Allegati

  5. #5
    Utente Junior
    Iscritto dal
    2007
    Messaggi
    61
    Professione
    progettista
    Regione
    veneto
    Software
    swx2011 - PTC Creo direct Modeling

    Predefinito

    Spettacolo! grazie Roberto, Ŕ ottimo.

    Ti chiedo un'ultima cosa. Ho visto che anche senza la parte finale 'relegata' a commento viene inserito comunque un testo. C'Ŕ un modo per evitarlo o cancellarlo dopo l'inserimento (se Ŕ ho capito bene Ŕ necessario inserirlo per carpirne il valore)?

    grazie di nuovo
    ciao

  6. #6
    Utente Junior
    Iscritto dal
    2007
    Messaggi
    54
    Professione
    Tecnico
    Regione
    Veneto
    Software
    SolidWorks 2016 OfficePro sp5.0 Win7 x64 Quadro FX580 2xSamsung SM226BW

    Predefinito

    Ho fatto un collage veloce di esempi presenti sull' API Help di Solidworks Ŕ ho ricavato la macro che allego.
    Cliccando sulle viste del disegno vengono recuperate le proprietÓ del modello, mentre se si clicca sui componenti del FM si recuperano le proprietÓ dei componenti nella configurazione referenziata. La maschera rimane attiva per cui si possono cambiare i componenti selezionati e cliccando sul pulsante refresh vengono caricate le proprietÓ se il componente Ŕ risolto.
    Modificando la macro pu˛ essere utilizzata anche in ambiente assembly e volendo approfondire ulteriormente si possono modificare le proprietÓ (funzione implementata dalla 2009).
    La macro l'ho testata anche con le versioni dalla 2004 e successive.
    Immagini Allegate Immagini Allegate
    File Allegati File Allegati
    Ultima modifica di pose63; 06-06-2008 alle 09: 27
    Ciao
    Giancarlo

  7. #7
    Utente Standard L'avatar di jenuary
    Iscritto dal
    2007
    Messaggi
    385
    Professione
    Progettista e Programmatore VB.Net
    Regione
    Veneto
    Software
    Solidworks

    Predefinito

    Ti allego la macro modificata in modo che il testo si cancelli.
    Comunque Ŕ consigliabile cliccare sul foglio prima di lanciarla in modo che il testo non vada dentro ad una vista, altrimenti in cancellazione si cancella anche la vista.
    Opuure basta in automatico fare in modo che il testo venga scritto in un punto distante dalle viste tramite :
    boolstatus = Annotation.SetPosition(2, 2, 0)

    Ciao

  8. #8
    Utente Standard L'avatar di jenuary
    Iscritto dal
    2007
    Messaggi
    385
    Professione
    Progettista e Programmatore VB.Net
    Regione
    Veneto
    Software
    Solidworks

    Predefinito scusa manca l'allegato

    Non ti avevo messo l'allegato.
    Ciao
    File Allegati File Allegati

  9. #9
    Utente Junior
    Iscritto dal
    2007
    Messaggi
    61
    Professione
    progettista
    Regione
    veneto
    Software
    swx2011 - PTC Creo direct Modeling

    Predefinito

    grazie di nuovo ad entrambi!

    ciao

  10. #10
    Utente Standard
    Iscritto dal
    2008
    Messaggi
    205
    Professione
    Progettista
    Regione
    Emilia Romagna
    Software
    Solid Edge / Solid Works

    Predefinito

    ciao a tutti! per caso esiste un glossario che aiuti a compilare le espressioni delle proprietÓ personalizzate (intendo le stringhe che assegnano i valori ai vari campi come succede ad es. per la massa, il momento di inerzia etc...); a me servirebbe fare comparire nelle proprietÓ personalizzate il nome file in automatico per pio richiamarlo nel cartiglio. aiutoooooo


  • Pagina 1 di 2 12 UltimaUltima

    Discussioni Simili

    1. ProprietÓ fisiche su cartiglio disegno
      Di fabio71 nel forum Solid Edge
      Risposte: 14
      Ultimo Messaggio: 13-04-2016, 18: 44
    2. Leggere Proprieta->attributi con procedura in .vb
      Di onix nel forum NX (Unigraphics)
      Risposte: 7
      Ultimo Messaggio: 14-04-2010, 19: 43
    3. Risposte: 3
      Ultimo Messaggio: 28-10-2009, 21: 18
    4. ProprietÓ modello
      Di Checco 79' nel forum Creo Parametric - Modellazione di parti e Lamiera
      Risposte: 17
      Ultimo Messaggio: 23-07-2008, 09: 50
    5. Gestore dati proprietÓ disegno
      Di arri nel forum Tips & Tricks per Autocad
      Risposte: 0
      Ultimo Messaggio: 09-02-2008, 21: 53

    Segnalibri

    Segnalibri

    Permessi di Scrittura

    • Tu non puoi inviare nuove discussioni
    • Tu non puoi inviare risposte
    • Tu non puoi inviare allegati
    • Tu non puoi modificare i tuoi messaggi
    •  





    CAD3D.it - la community dei progettisti