• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Leggi altro.

Estrazione nome file di 10 cifre

telegino

Utente Junior
Professione: Disegnatore CAD, Progettista Meccanico
Software: Solid Edge, AutoCad Mechanical, SolidWorks
Regione: Veneto
#1
Salve a tutti,

avrei una richiesta rigurado alle proprietà da inserire nel cartiglio del draft.
In pratica avrei bisogno del nome del file (senza estensione), ma troncato solo
nelle ultime 10 cifre, altrimenti mi compare una stringa lunghissima (perchè
alcuni file hanno un nome lunghissimo).
Ho cercato nei post vecchi, ma non sono riuscito a trovare niente.

Grazie
 

telegino

Utente Junior
Professione: Disegnatore CAD, Progettista Meccanico
Software: Solid Edge, AutoCad Mechanical, SolidWorks
Regione: Veneto
#3
Ok,

grazie della risposta, ho letto il link con la modifica
delle proprietà del testo, ma non c'è quello che cerco.

Ciao
 

fiza

Utente Junior
Professione: progettista
Software: Solid Edge - TruTops - ActCut
Regione: f.v.g.
#4
Secondo me si potrebbe creare una proprietà personalizzata impostandola con una macro che giochi con la funzione "substring"...
 

fiza

Utente Junior
Professione: progettista
Software: Solid Edge - TruTops - ActCut
Regione: f.v.g.
#5
Ho fatto alcune prove modificando una delle Samples che c'è nel CD di Solid Edge (SolidEdge.PropertySets)
Prima di tutto ho aggiunto due variabili con la prima che fa riferimento al nome file del documento attivo

Codice:
Dim strNomeFile As String = Nothing
Dim strNomeFileBreve As String = Nothing
strNomeFile = CType(application.ActiveDocument.name(), String) ' ad esempio "CODParte - DescrizioneParte - 00.psm"
poi ho valorizzato strNomeFileBreve passandola come parametro per la sub AddCustomProperties

Codice:
strNomeFileBreve = strNomeFile.Substring(0, 8) 'Estrae i primi otto caratteri del nome File = CODParte
'oppure
'strNomeFileBreve = strNomeFile.Substring(0, strNomeFile.Length - 4) 'Estrae il nome File senza estensione = CODParte - DescrizioneParte - 00
'strNomeFileBreve = strNomeFile.Substring(11, strNomeFile.Length - 20) 'Estrae la parte centrale del nome file da pos.12 a pos.(lunghezza - 9) = DescrizioneParte
'strNomeFileBreve = strNomeFile.Substring(strNomeFile.Length - 4 - 2, 2) 'Estrae gli ultimi due caratteri del nome file = 00

...

AddCustomProperties(propertySets, strNomeFileBreve)
Quindi ho modificato la stessa AddCustomProperties per accettare il parametro e per aggiungerlo alla lista delle proprietà

Codice:
    Private Shared Sub AddCustomProperties(ByVal propertySets As SolidEdgeFramework.PropertySets, ByVal strNomeFileBreve As String)
        Dim properties As SolidEdgeFramework.Properties = Nothing

        properties = propertySets.Item("Custom")

        Console.WriteLine("Aggiungo le mie Prorietà Personalizzate.")

        properties.Add("CODParte", strNomeFileBreve)
        'properties.Add("DESParte", strNomeFileBreve(2)
        'roperties.Add("REVParte", strNomeFileBreve(3))
        'properties.Add("My Integer", 338)
        'properties.Add("My Boolean", True)
        'properties.Add("My DateTime", Date.Now)
    End Sub
A questo punto, se il documento attivo è un dft aggiungo al cartiglio un richiamo (od un altra annotazione che supporti il testo di proprietà) che faccia riferimento alla proprietà appena aggiunta (%{CODParte/CP}), altrimenti, se il documento attivo era un 3D, al cartiglio del suo disegno l'annotazione farà riferimento alla proprietà della parte stessa (%{CODParte/CP|R1})

Spero di essere stato chiaro ed utile

Ciao
 

Be_on_edge

Moderatore
Staff Forum
Professione: Progettazione
Software: Solid Edge
Regione: Emilia Romagna
#6
Prima di procedere con le più disparate soluzioni io metterei in discussione il fatto di memorizzare nel nome file dati importanti come codice e descrizione.

Ciao
 

fiza

Utente Junior
Professione: progettista
Software: Solid Edge - TruTops - ActCut
Regione: f.v.g.
#7
Prima di procedere con le più disparate soluzioni io metterei in discussione il fatto di memorizzare nel nome file dati importanti come codice e descrizione.

Ciao
.. ovviamente ognuno chiama i suoi files come meglio ritiene;
io non volevo di certo "imporre" alcunché, ma solamente proporre a telegino una soluzione "asettica"al suo quesito che, nel mio piccolo, sono riuscito ad inventare: se il suo file si chiama "abcdefghijkllmnopqrstuvwxyz-1234567890.ext" e nel cartiglio vuole visualizzare solo gli ultimi 10 caratteri (esclusa l'estensione ed il punto separatore), allora l'istruzione per fare ciò sarà

Codice:
strNomeFileBreve = strNomeFile.Substring(strNomeFile.Length - 4 - 10, 10)
Ciao
 

Be_on_edge

Moderatore
Staff Forum
Professione: Progettazione
Software: Solid Edge
Regione: Emilia Romagna
#8
.. ovviamente ognuno chiama i suoi files come meglio ritiene;
io non volevo di certo "imporre" alcunché, ma solamente proporre a telegino una soluzione "asettica"al suo quesito che, nel mio piccolo, sono riuscito ad inventare: se il suo file si chiama "abcdefghijkllmnopqrstuvwxyz-1234567890.ext" e nel cartiglio vuole visualizzare solo gli ultimi 10 caratteri (esclusa l'estensione ed il punto separatore), allora l'istruzione per fare ciò sarà

Codice:
strNomeFileBreve = strNomeFile.Substring(strNomeFile.Length - 4 - 10, 10)
Ciao
Non ce l'ho contro la tua soluzione, volevo solo mettere in chiaro che è bene utilizzare il nome file per quello che è, ovvero il nome file.
Andare a memorizzare dati importanti in tale posto è il modo migliore per incasinare un archivio non gestito.
Prima di fare troppi danni il mio consiglio è quello di iniziare a chiamare i file con un criterio migliore, che aiuti principalmente l'archiviazione.
Quando si lavora senza un gestionale è importante organizzare bene le cose.

Detto questo uno è liberissimo di fare come gli pare tanto poi i danni se li tiene lui (od il malcapitato che in futuro lo sostituisce :biggrin:)

Ciao