Lisp per salvataggio in una variabile di un testo all'interno del cartiglio

ferro.84

Utente poco attivo
professione: Disegnatore meccanico
software: CoCreate Direct Modeling
regione: Veneto
Buongiorno a tutti,
chiedo a voi esperti questa cosa.

I nostri pezzi sono codificati così, D445010001_0, dove D445010001 è il codice assegnato alla parte in 3D, mentre _0 è l'indice di revisione.
L'indice di revisione non è per noi una proprietà del 3D (anche se mi piacerebbe).
Esso viene indicato solo all'interno del cartiglio aziendale modificando un testo.
Questo testo è modificato a mano, ogni volta che si modifica il disegno e si avanza di revisione.
Va da sé che il testo in questione è sempre nella stessa posizione nel cartiglio, nel nostro caso in basso a destra.

Mi piacerebbe riuscire a far leggere al CAD quel testo, in modo da utilizzarlo per il salvataggio automatico del disegno.
Si può dire al CAD: leggi quel testo nel 2D che è sempre alle stesse coordinate x-y e salvalo in una variabile?

Grazie a chi volesse aiutarmi.

Buona giornata.
 

reb_bl

Utente Standard
professione: Far sì che gli altri abbiano qualcuno a cui rivolgere i propri insulti
software: .
regione: .
Io farei leggere il testo a quelle coordinate, da quel valore poi, faccio quel che mi serve
 

ferro.84

Utente poco attivo
professione: Disegnatore meccanico
software: CoCreate Direct Modeling
regione: Veneto
Io farei leggere il testo a quelle coordinate, da quel valore poi, faccio quel che mi serve
Infatti anch'io farei così! :)

Una dritta di qualche comando lisp da studiare che permetta di leggere un testo a date coordinate x-y?

E come si fa ad interrogare a quali coordinate si trova un dato testo? Dovrei recuparare anche questa informazione...

Perdonate la mia ignoranza.

Grazie, buon lavoro a tutti.
 

stsusana

Utente Junior
professione: Progettista
software: Cocreate Onespace Modeling
regione: Veneto
(SD-CALL-CMDS(get_selection :focus_type *sd-anno-text-seltype* :select PUNTOCODICE) :FAILURE nil)

attenzione che la funzione sd-call-cmds funziona solo quando è inserita in una procedura dichiarata con sd-defdialog.
 

ferro.84

Utente poco attivo
professione: Disegnatore meccanico
software: CoCreate Direct Modeling
regione: Veneto
(SD-CALL-CMDS(get_selection :focus_type *sd-anno-text-seltype* :select PUNTOCODICE) :FAILURE nil)

attenzione che la funzione sd-call-cmds funziona solo quando è inserita in una procedura dichiarata con sd-defdialog.

Ho provato a definire una funzione per la ricerca del testo nel disegno,
che ho inserito all'interno di una procedura dichiarata con sd-defdialog

Codice:
(trova_testo ()
        (setf origine_x 200)
        (setf origine_y -300)   
        (setf origine_xy (gpnt2d origine_x origine_y))           
        (setf testo (sd-call-cmds(get_selection :focus_type *sd-anno-text-seltype* :select (origine_xy))))
)

Le coordinate x=200 e y=300 sono messe come esempio.
In realtà, non so quali coordinate inserire.
Nel mio caso, devo leggere un testo nel cartiglio, che è presente sempre nella stessa posizione.
Come posso fare a recuperare le sue coordinate?
Ho fatto dei tentativi provando con la registrazione di un nuovo comando, ma senza successo...

Sarà una banalità, ma non so come fare...
Grazie
 

ferro.84

Utente poco attivo
professione: Disegnatore meccanico
software: CoCreate Direct Modeling
regione: Veneto
Ho provato a definire una funzione per la ricerca del testo nel disegno,
che ho inserito all'interno di una procedura dichiarata con sd-defdialog

Codice:
(trova_testo ()
        (setf origine_x 200)
        (setf origine_y -300)  
        (setf origine_xy (gpnt2d origine_x origine_y))          
        (setf testo (sd-call-cmds(get_selection :focus_type *sd-anno-text-seltype* :select (origine_xy))))
)

Le coordinate x=200 e y=300 sono messe come esempio.
In realtà, non so quali coordinate inserire.
Nel mio caso, devo leggere un testo nel cartiglio, che è presente sempre nella stessa posizione.
Come posso fare a recuperare le sue coordinate?
Ho fatto dei tentativi provando con la registrazione di un nuovo comando, ma senza successo...

Sarà una banalità, ma non so come fare...
Grazie

Buongiorno,
ho risolto così:

Codice:
(trova_testo ()
        (setf origine_x 200)
        (setf origine_y -300)   
        (setf origine_xy (gpnt2d origine_x origine_y))           
        (setf testo (sd-call-cmds(get_selection :focus_type *sd-anno-text-seltype* :select origine_xy) :failure nil))
        (setf revisione (sd-am-inq-text-strings (first testo)))
)

In realtà vanno bene anche coordinate approssimate per la ricerca del testo, trovate con il trucco
di far finta di registrare un nuovo comando, come scrivevo nel post precedente.

In questo modo sono riuscito a salvarmi la variabile revisione e automatizzare il
salvataggio dei disegni come volevo.

Buona giornata.
 

ferro.84

Utente poco attivo
professione: Disegnatore meccanico
software: CoCreate Direct Modeling
regione: Veneto
Buongiorno,
ho cantato vittoria troppo presto...
La lettura del testo in corrispondenza dell'indice di revisione funziona, ma purtroppo c'è il cartiglio che si muove!
Mi spiego.
Se dopo aver disposto le viste in un disegno cambio il formato foglio (ad esempio da A4 ad A3), l'origine del cartiglio (l'angolo in basso a destra della squadratura del disegno, per intenderci) non rimane nella stessa posizione di prima.
Il foglio (margini squadratura + cartiglio) si sposta per "adattarsi" all'area che occupano le viste, non so con quale criterio e quindi la lettura dell'indice di revisione fallisce.
Si può fare in modo che il nuovo foglio venga riposizionato sempre nella stessa origine?

Addirittura succede che se sposto le viste e poi cambio formato foglio, ma selezionando lo stesso formato originale (ad esempio da A4 ad A4), il foglio si riposiziona diversamente rispetto a prima, con quel criterio sconosciuto che ho descritto prima.

Qualche idea?

Grazie in anticipo a tutti
 

cacciatorino

Moderatore SolidEdge
Staff Forum
professione: Ingegnere meccanico
software: SolidEdge CoCreate Salome-Meca
regione: Porto Recanati, ma con l'appennino nel cuore
Addirittura succede che se sposto le viste e poi cambio formato foglio, ma selezionando lo stesso formato originale (ad esempio da A4 ad A4), il foglio si riposiziona diversamente rispetto a prima, con quel criterio sconosciuto che ho descritto prima.

Secondo me sono i formati *.mi salvati a cavolo nello spazio. Prova ad aprire i template e risalvarli dopo aver posizionato il punto in basso a dx nello stesso punto per tutti.

Oppure inserisci il testo "revisione" nello schizzo della tabellina.
 

reb_bl

Utente Standard
professione: Far sì che gli altri abbiano qualcuno a cui rivolgere i propri insulti
software: .
regione: .
Con Inventor ho la stessa problematica anche se vincolo i cartigli con l'angolo in basso a sx a 0,0 (ho ereditato questa situazione), nel senso che la mia tabellina a seconda del formato si sposta verso destra, io ho risolto prendendo la misura dei fogli (A4, A3 etc..) e rientrando verso sx, quindi sottraendo la quantità voluta, dalla dimensione max del foglio, prova così!
 

stsusana

Utente Junior
professione: Progettista
software: Cocreate Onespace Modeling
regione: Veneto
Ciao,
con queste righe puoi ricavare il punto SNTXY che è l'angolo in basso a destra dell'area impegnata dal disegno (solitamente dal cartiglio)
Utilizzando SNTXY puoi ricavarti tutti gli altri punti dove si trovano i testi.
La lungC identifica la lunghezza in cartiglio, utile per ricavare quale cartiglio hai posizionato

(setq angoli (sd-am-sheet-struct-corners (sd-am-inq-sheet(sd-am-inq-curr-sheet))))
(setq SNTXY (make-gpnt2d :x (gpnt2d_x (Nth 1 angoli)) :y (gpnt2d_y (Nth 0 angoli)) ))
(setq lungC (abs (- (gpnt2d_x (Nth 0 angoli)) (gpnt2d_x (Nth 1 angoli)))))

Buon lavoro.
 

Statistiche forum

Discussioni
59,320
Messaggi
505,347
Utenti registrati
110,844
Ultimo utente registrato
Matteo Maiardi

Utenti online

Nessun utente è online al momento.
Top