• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

10桁ファイル名抽出

telegino

Guest
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
 
ok,

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

ciao
 
secondo me si potrebbe creare una proprietà personalizzata impostandola con una macro che giochi con la funzione "substring"...
 
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

Code:
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

Code:
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à

Code:
    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
 
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
 
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à

Code:
strnomefilebreve = strnomefile.substring(strnomefile.length - 4 - 10, 10)

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à

Code:
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
 

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top