Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 10 di 16
  1. #1
    Utente Junior
    Iscritto dal
    2017
    Messaggi
    34
    Professione
    Pensionato
    Regione
    Lombardia
    Software
    Autocad

    Icon6 Scrivere una stringa di testo con dimensione caratteri variabile

    Salve a tutti,
    cerco la soluzione con la quale scrivere, mediante autolisp, una stringa di testo ad altezza variabile.
    Più precisamente il testo dovrebbe essere così strutturato :
    - primi n caratteri con altezza 20
    - i seguenti con altezza 5
    il tutto in una stringa.
    Qualcuno ha un'idea?
    Grazie.

  2. #2
    Utente Senior L'avatar di GP.
    Iscritto dal
    2008
    Messaggi
    2097
    Professione
    Nientologo
    Regione
    Vercelli
    Software
    uozapp

    Predefinito

    Entriamo nel mondo degli MTEXT, dove le formattazioni possono spingere al suicidio.
    Un esempio terra-terra potrebbe essere questo:

    Codice:
    (entmake
        (list
            (cons 0 "MTEXT")
            (cons 8 "PIPPO")
            (cons 100 "AcDbEntity")
            (cons 100 "AcDbMText")
            (cons 10 '(5.0 10.0))
            (cons 40 20.0)
            (cons 7 "ARIAL")
            (cons 1 "TESTO ALTO 20 {\\H0.25x;TESTO ALTO CINQUE}")	
        )
    )
    che crea un MTEXT
    nel punto (5,10)
    sul layer "PIPPO"
    con font = "ARIAL"
    con altezza iniziale = 20
    con altezza finale = 20x0.25 = 5

  3. #3
    Utente Standard L'avatar di rpor66
    Iscritto dal
    2007
    Messaggi
    678
    Professione
    Programmatore
    Regione
    Sicilia
    Software
    AutoCad, CadWorx, Excel, Lisp, VBA

    Predefinito

    Oppure alla fimminina.....

    comando T2H, per ora è settato che dal 4° carattere imposta altezza diversa, edita il file e adattalo alle tue esigenze.
    File Allegati File Allegati

  4. #4
    Utente Junior
    Iscritto dal
    2017
    Messaggi
    34
    Professione
    Pensionato
    Regione
    Lombardia
    Software
    Autocad

    Predefinito

    Grazie,
    aiuto veramente prezioso

  5. #5
    Utente Junior
    Iscritto dal
    2017
    Messaggi
    34
    Professione
    Pensionato
    Regione
    Lombardia
    Software
    Autocad

    Icon11 Attuazione pratica

    Grazie per la risposta, sto cercando di capire come intervenire nel programma che cerco faticosamente di scrivere (come avrai capito sono un neofita e cerco di attingere dall'esperienza di chi ne sa più di me!).
    Questo è lo stralcio del file dxf che il mio programma genera :
    CIRCLE
    8
    cerchietti ' layer
    62
    1
    10
    1498789.579000 ' coordinata est cerchio
    20
    5042431.954000 ' coordinata nord cerchio
    40
    0.50
    0
    TEXT
    5
    0
    8
    testo ' testo
    62
    1
    10
    1498790.079000 ' coordinata est testo
    20
    5042432.454000 ' coordinata nord testo
    40
    40
    0.40
    50
    0
    1
    p1 (165.03) - 4420571.480,698896.546,4529362.926 ' stringa de testo scritta
    0
    Chiaramente la stringa dovrà essere formattata in modo che la stessa risulti poi con altezza variabile (prima del trattino grande (0.40) dal trattino in poi piccolo (0.05).
    Grazie

  6. #6
    Utente Junior
    Iscritto dal
    2017
    Messaggi
    34
    Professione
    Pensionato
    Regione
    Lombardia
    Software
    Autocad

    Predefinito Testo H vaeiabile

    Salve a tutti,
    in base alle indicazioni degli amici che mi hanno risposto, ho scritto questo codice :
    Codice:
        (defun C:CambiaAltezza (/)
    
        (setq string nil)
        (while
            (= string nil)
            (setq string (entsel "\nSeleziona il nome del Punto: "))
        )
    
        (setq string (entget (car string)))
        (setq txt1 (cdr (assoc 1 string)))
        (princ txt1)
    
        (setq testo1 (substr txt1 1 3)) ; i primi 3 caratteri
        (setq testo2 (substr txt1 4))   ; dal 4 in poi
        ;(command "_mtext" pause "_j" "_bl" "_w" 50 (strcat testo1 "{\\H0.2x;" testo2 "}") "")
        )
    il risultato è una stringa con due altezze del testo posizionata in un punto individuato dal comando _mtetxt

    Io vorrei però che anziché chiedere il punto di inserimento del nuovo testo, il programmino aggiornasse direttamente la stringa selezionata in partenza (string).
    Grazie.

  7. #7
    Utente Junior
    Iscritto dal
    2017
    Messaggi
    34
    Professione
    Pensionato
    Regione
    Lombardia
    Software
    Autocad

    Predefinito esempio

    come posso applicare le tue istruzioni a :
    Codice:
    (setq string "aaaaabbbbb")
    ...... istruzioni
    (setq risultato "aaaaa" con altezza 20 e "bbbbb" con altezza 5)
    Grazie.

  8. #8
    Utente Senior L'avatar di GP.
    Iscritto dal
    2008
    Messaggi
    2097
    Professione
    Nientologo
    Regione
    Vercelli
    Software
    uozapp

    Predefinito

    Citazione Originariamente Scritto da Angelo2449 Visualizza Messaggio
    ....Io vorrei però che anziché chiedere il punto di inserimento del nuovo testo, il programmino aggiornasse direttamente la stringa selezionata in partenza (string).
    Grazie.
    Solo gli mtext possono visualizzare altezze di testo diverse, se la stringa che vuoi modificare appartiene ad un mtext è possibile aggiornarlo, altrimenti no.
    Dacci qualche informazione, non ho ancora capito da cosa parti.

  9. #9
    Utente Junior
    Iscritto dal
    2017
    Messaggi
    34
    Professione
    Pensionato
    Regione
    Lombardia
    Software
    Autocad

    Predefinito Così va bene

    Ho scritto questo codice che funziona benissino :
    Codice:
        (defun C:CambiaAltezza (/)
    
        (setq string nil)
        (while
            (= string nil)
            (setq string (entsel "\nSeleziona il nome del Punto: "))
            (setq elemento (car string))
        )
    
        (setq string (entget (car string)))
        (setq txt1 (cdr (assoc 1 string))) 
    
        (setq cxy (assoc 10 string))
        (setq cox (cadr cxy))
        (setq coy (caddr cxy))
        (princ " - ")
        (princ cox)
        (princ ",")
        (princ coy)
        (princ " - ")
        (command "_erase" elemento "")
        (setq coox (rtos cox))
        (setq cooy (rtos coy))
        (setq indirizzo (strcat coox "," cooy))
    
        (setq testo1 (substr txt1 1 3)) ; i primi 3 caratteri
        (setq testo2 (substr txt1 4))   ; dal 4 in poi
        ;(command "_mtext" "50,50" "_j" "_bl" "_w" 50 (strcat testo1 "{\\H0.2x;" testo2 "}") "")
        (command "_mtext" indirizzo "_j" "_bl" "_w" 50 (strcat testo1 "{\\H0.2x;" testo2 "}") "")
        )
    Come puoi vedere, il programmino cambia il testo selezionato in uno modificato con altezza variabile (secondo i parametri impostati).
    Se è possibile ottimizzarlo, sono graditi consigli.
    Ora vorrei, con implementazione del codice, scrivere la routine che, esaminando tutte le stringhe contenute nel > .dwg < ed intercettate tramite un codice (ad esempio > "**" + numero dell'elemento < contenuto nella singola stringa, cambiare ogni stringa intercettata.
    Due problemi :
    1 - il numero delle stringhe presenti (nel > .dwg < esistono solo stringhe e cerchietti scritti leggendo il file > .dxf < generato da basic).
    2 - ricerca di ogni stringa in modo ciclico con un opportuno comando.
    Grazie.

  10. #10
    Utente Senior L'avatar di GP.
    Iscritto dal
    2008
    Messaggi
    2097
    Professione
    Nientologo
    Regione
    Vercelli
    Software
    uozapp

    Predefinito

    Codice:
    (setq TTT (ssget "_X" '((0 . "TEXT,MTEXT")(1 . "A*,B*")))) cattura tutti i TEXT ed MTEXT che iniziano con "A" o "B"
    
    (repeat (setq n (sslength TTT)) ;ripete per il numero di oggetti trovati
        (setq TT (ssname TTT (setq n (1- n)))) ;ad ogni ciclo fornisce il nome dell'oggetto
        <fai qualcosa all'oggetto>
    )


  • Pagina 1 di 2 12 UltimaUltima

    Discussioni Simili

    1. scrivere testo arabo
      Di colosso84 nel forum CATIA V5 CATDrawing
      Risposte: 3
      Ultimo Messaggio: 07-10-2015, 10: 54
    2. Sostituzione stringa di testo su 100 file
      Di Alberto Proge nel forum AutoCAD
      Risposte: 18
      Ultimo Messaggio: 22-12-2010, 19: 43
    3. Stringa di testo nel PART
      Di valtic nel forum CATIA V5 CATPart
      Risposte: 1
      Ultimo Messaggio: 28-10-2010, 09: 34
    4. Scrivere il testo su una curva
      Di 3dxx nel forum AutoCAD
      Risposte: 4
      Ultimo Messaggio: 24-04-2008, 09: 10

    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