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

ipropertiesからテキスト部分を抽出する

  • Thread starter Thread starter MARCOC
  • Start date Start date

MARCOC

Guest
domandone, in un iproperties personalizzata scrivo un testo esempio 1111_pippo_pluto...esiste una funzione ilogic 0 altro pwer poter estrarre da quella scritta solo le ultime 5 lettere, più in generale, estarre da una testo,solo le alcune lettere?

grazie mille
 
Last edited by a moderator:
se guardi a sx nella finestra di editing di ilogic vedi che c'è un browser (frammenti/sistema) e una delle voci è stringhe. scorrendo con il mouse sulle varie opzioni viene evidenziato cosa fa il comando.
 
ciao
si puoi provare a creare un parametro di testo in fx e lo fai compilare da ilogic con l'iproperties che vuoi
e poi puoi usare la stringa "split" "strsplit = split" e metti tra " xx" il testo da tagliare.
 
ciao batleo...non capisco dove devi usare la stringa spit???? in ilogic o in fx...riesci a farmi un esempio grazie mille
 
ciao
eccomi siccome non ho molto tempo ti ho fatto un esempio
crea parmatri txt.JPG
dati iproperties.JPG
parmatri txt dopo regola.JPG

nome_parametro_di_testo =iproperties.value("project", "description")
strsplit=split(nome_parametro_di_testo,"pippo")
nome_testo_tagliato= strsplit (0)

il testo " txt " è quello che taglia

ciao
 
grazie batleo...ma il noto che dal to esmpio..che ho provato e funziona...si cancella tutto quello che sta dopo al testo che che tagli...questo non va bene nel mio caso...io devo solo tagliare dei caratteri o numeri...secondo problema e che i numeri e i caratteri sono diversi per ogni descrizione...la cosa che nno cambia mai e la posizione, esempio ab 34 56 o 12 er fg...quello che devo tagliare e sempre 1 primi 2 e gli ultimi 2 le 2 cifre centrali sono sempre diverse ma sempre loro da tenere
 
ma hai risolto il problema originale o ti servono altre indicazioni? non sono stato più preciso perchè mi pareva che l'help di ilogic fosse chiaro, ma se hai ancora dubbi chiedi.
 
non ho capito molto bene che cosa devi ottenere , ma
prova a cambiare la variabile
nome_testo_tagliato= strsplit (0) --> (1) non mi ricordo quale sia la differenza ma dovrebbe cambiare qls.

oppure prova a spiegare meglio che cosa vuoi ottenere , si può pensare ad un'altra strada , la mia era solo una proposta
 
cambiando da 0 a 1 prendo tutto quello che sta dopo al testo tagliato.

io devo poter estrarre un carattere o un numero da un testo...di cui l'unica cosa che e fissa e la posizione e il numero di caretteri...

es... abcd_32_ab devo estrarre ab finale altro sempio 1234_sl_78 devo estrarre 78, quandi da una codice composto da 4alfanumerici_2alfanumerici_2alfanumerici..devo astrarre sempre gli ultimi 2 caratteri della stringa
 
ti posto un esempio banale ma davvero guarda dove ti ho indicato che è scritto in modo più chiaro di quanto so spiegarti io.

Code:
dim codice as string

codice = "123456789"

messagebox.show("primi due caratteri di 123456789: " & left(codice, 2))
messagebox.show("ultimi due caratteri di 123456789: " & right(codice, 2))
messagebox.show("3° e 4° carattere di 123456789: " & mid(codice, 3,2))
 
immagino che il codice completo "abcd_32_ab" venga creato in automatico da altre regole o parametri , giusto?
o lo inserisci a mano?
se fosse il caso che si auto compila puoi prendere la sorgente
esempio
se "abcd_32_ab" è composto da d1+d56+d68 e ti serve solo "d68", puoi usare quello convertendolo in testo

oppure come si compila il codice?
 
ciao catafratto ai ragione scusa...cmq grazie..io non ci capisco molto di ilogic...adesso appurato che si puo tirare fuori la parte di testo che serve...viene il difficile...io dev ofare questo lavoro da un assieme...e far compilare un iprorteties personalizzata per tutte le parti dell'assieme con le ultime 2 cifre della posto un immagine per capirci meglio


PROGRESSIVO.PNG

si può fare???
 
se hai trovato il modo di tirare fuori il dato che ti serve ora ti basta aggiungere la stringa

iproperties.value("custom", "progressivo")= nome_parametro_di_testo --> il dato che ti serve
 
questa compilazione avviene solo per le parti o anche per gli assiemi? il numero di parte è univoco (intendo, non ci sono due file diversi con lo stesso numero di parte)?
 
sia per parti che assiemi...nello stesso assieme posso avere il finale 32 che e una parte e i lfinale 32 che e un assieme
 
ciao catafratto la mia risposta dei nomi non univoci ti ha scioccato???

non si può fare???
 
prova questo su qualcosa di non vitale per te, a me pare funzioni ma non si può mai dire.

Code:
' aggiorna i numeri progressivi
public sub updateprogressivo()
    dim oapp as application
    set oapp = thisapplication
    
    dim odoc as document
    set odoc = oapp.activeeditdocument
    
    dim spn as string
    spn = readpartnumber(odoc)
    
    dim scode as string
    dim orefdocs as variant
    dim orefdoc as document
    
    call codecreator(odoc)
    
    ' si collega ai documenti usati nell'assieme
    set orefdocs = odoc.allreferenceddocuments

    ' aggiorna tutti i documenti collegati
    if orefdocs.count > 0 then
        for each orefdoc in orefdocs
            call codecreator(orefdoc)
        next
    end if

end sub

private sub codecreator(odoc as document)
    dim spn as string
    spn = readpartnumber(odoc)
    
    dim scode as string
    
    ' se il numero parte è più lungo di due caratteri
    ' prende gli ultimi due caratteri e li copia nella ipropery personalizzata
    if strings.len(spn) > 2 then
        scode = strings.right(spn, 2)
    else
        scode = ""
    end if
    
    call writecustomproperties(odoc, "progressivo", scode)
end sub

private function readpartnumber(odoc as document) as string
    
        
    'definisce vari set di proprietà: ---------------------------------------------------------------------
    dim opropsets as propertysets
    set opropsets = odoc.propertysets
    
    'design tracking proprieties
    dim odesigntrackingproprieties as propertyset
    set odesigntrackingproprieties = opropsets.item("{32853f0f-3444-11d1-9e93-0060b03c1ca6}")
    
    readpartnumber = odesigntrackingproprieties.itembypropid(kpartnumberdesigntrackingproperties).value
    
end function

private sub writecustomproperties(odoc as document, spropid as string, spropvalue as string)
    dim ocustompropset   as propertyset
    set ocustompropset = odoc.propertysets.item("{d5cdd505-2e9c-101b-9397-08002b2cf9ae}")
    
    dim bpropexist as boolean
    bpropexist = false
    
    dim oprop as property
    dim ocustomprop as property
    
    for each oprop in ocustompropset
        if oprop.name = spropid then
            bpropexist = true
            set ocustomprop = oprop
            exit for
        end if
    next
        
    if bpropexist = false then
        call ocustompropset.add(spropvalue, spropid)
    else
        ocustomprop.value = spropvalue
    end if
end sub

non è ilogic, è vba: se cerchi nel forum trovi come e dove copiare tutto, è stato scritto un po' di volte ormai
 
grazie catafratto...provo ad utilizzarlo poi di dico...mi piacerebbe capirci un pò di più di vba...

grazie ancora
 
ciao catafratto
ora avrei una domanda pure io xkè vba non lo conosco ,
negli assiemi che creo, i codici vengono composti da "0000-00 descrizione" ovvero 4 cifre - 2 cifre e descrizione che prende dal nome del file quando salvo, io vorrei automatizzare il processo per trasformare il num parte in "0000/00" ( la "/" mi serve per il gestionale non lo accetta nel nome file ma si nel numero parte), prendere la descrizione e spostarla nella voce description delle iproperties, è fattibile?
per ora ho quasi trovato una soluzione per le parti con ilogic , ma negli assiemi non funziona perchè i nomi cambiano sempre , mi puoi aiutare?
 

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