Macro Catia V5 - DrawingTextRange

Wiliam Gava

Utente poco attivo
professione: sviluppo
software: CATIA V5
regione: Venezia (IT) / San Paolo (BR)
Salve a tutti,
Qualcuno mi saprebbe dire come accedere all'oggetto "DrawingTextRange"?

Nel file di aiuto CAA si trovano i riferimenti e le proprietà, ma non viene spiegato come accedere.
Ricercandomi sulla IA, mi dice di usare myDrawing.GetTextRange(1,5), ma questo metodo non funziona. Infatti, si tratta di un metodo per ottenere una proprietà e non l'oggetto stesso.

per creare uno testo usiamo: set myDrwText = drwView.Texts.Add ("myText",0,0)
per ottenere la proprietà, usiamo: myDrwText.TextProperties

la domanda è: come fare per ottenere il DrawingTextRange??

Dim DrwTxtRange As DrawingTextRange
Set drwTxtRange = ????


vi ringrazio in anticipo.
 

Vittorio

Utente Standard
professione: progettista
software: CatiaV5-6R29 HyperMill_2023.2
regione: Lombardia
Salve a tutti,
Qualcuno mi saprebbe dire come accedere all'oggetto "DrawingTextRange"?

Nel file di aiuto CAA si trovano i riferimenti e le proprietà, ma non viene spiegato come accedere.
Ricercandomi sulla IA, mi dice di usare myDrawing.GetTextRange(1,5), ma questo metodo non funziona. Infatti, si tratta di un metodo per ottenere una proprietà e non l'oggetto stesso.

per creare uno testo usiamo: set myDrwText = drwView.Texts.Add ("myText",0,0)
per ottenere la proprietà, usiamo: myDrwText.TextProperties

la domanda è: come fare per ottenere il DrawingTextRange??

Dim DrwTxtRange As DrawingTextRange
Set drwTxtRange = ????


vi ringrazio in anticipo.
Ciao
Non so se ho capito bene il tuo problema e aggiungo che non sono un esperto con le macro, ho fatto pochissime cose per uso personale.

Ho trovato questo esempio, magari potrebbe esserti d'aiuto.

Dim myText As DrawingText
Dim myRange As DrawingTextRange
Set myText = myView.Texts.Add("Diametro Ø50 mm", 50, 50)
Set myRange = myText.Range(10, 12) ' seleziona "Ø50"
myRange.FontSize = 14
myRange.Bold = True

In questo esempio, solo “Ø50” viene modificato, non l’intera nota.
 

Wiliam Gava

Utente poco attivo
professione: sviluppo
software: CATIA V5
regione: Venezia (IT) / San Paolo (BR)
la idea sembra giusta, però non funziona.
problema è che il metodo ".Range(x,x)" non esiste come funzione. Ossia, non fa parte di uno drawingText.
deve avere un'altra forma di accedere a "DrawingTextRange". Magari sia un altro oggetto e dobbiamo attribuire a una variabile dichiarata:

Dim DrwTxtRange as DrawingTextRange

1764075029052.png
 

Vittorio

Utente Standard
professione: progettista
software: CatiaV5-6R29 HyperMill_2023.2
regione: Lombardia
Ho trovato un altro esempio.


Sub ExampleDrawingTextRange()

' Ottieni l'applicazione CATIA
Dim CATIA As Application
Set CATIA = GetObject(, "CATIA.Application")

' Crea un nuovo documento di disegno
Dim drawingDoc As DrawingDocument
Set drawingDoc = CATIA.Documents.Add("Drawing")

' Ottieni il foglio attivo
Dim drawingSheet As DrawingSheet
Set drawingSheet = drawingDoc.Sheets.Item(1)

' Ottieni la vista attiva
Dim drawingView As DrawingView
Set drawingView = drawingSheet.Views.Item(1)

' Aggiungi una nota di testo
Dim myText As DrawingText
Set myText = drawingView.Texts.Add("Diametro Ø50 mm", 50, 50)

' Seleziona un intervallo di testo (qui "Ø50")
Dim myRange As DrawingTextRange
Set myRange = myText.Range(9, 11) ' caratteri dalla posizione 9 a 11

' Applica modifiche al range
myRange.FontSize = 14
myRange.Bold = True
myRange.Color = RGB(255, 0, 0) ' rosso

End Sub


dovrebbe...
  • Crea un nuovo disegno in CATIA.
  • Inserisce una nota con il testo: “Diametro Ø50 mm”.
  • Usa DrawingTextRange per selezionare solo i caratteri “Ø50”.
  • Applica grassetto, dimensione maggiore e colore rosso solo a quella parte.
 

Wiliam Gava

Utente poco attivo
professione: sviluppo
software: CATIA V5
regione: Venezia (IT) / San Paolo (BR)
è giusto in questa parte che dà errore: Set myRange = myText.Range(9, 11) ' caratteri dalla posizione 9 a 11

l'oggetto non supporta il metodo ".Range"
 

Vittorio

Utente Standard
professione: progettista
software: CatiaV5-6R29 HyperMill_2023.2
regione: Lombardia
Come ti dicevo.. non sono un praticone con le macro.
mi sono fatto aiutare da Copilot
e la risposta che mi ha dato è questa:
Vedi se ti può essere utile.
  • In VBA per Word, Range è un oggetto che rappresenta una porzione di testo.
  • In CATIA V5 invece, l’oggetto Text è molto più semplice: è un’entità geometrica che contiene una stringa, ma non ha metodi per gestire intervalli di caratteri.
  • Quindi CATIA non sa cosa sia Range(9,11) e lancia un errore di runtime.

✅ Come lavorare con il testo in CATIA​

Se vuoi manipolare il contenuto del testo, devi:

  • Usare la proprietà .Text (che è una stringa) e trattarla con le funzioni standard di VBA (Mid, Left, Right, ecc.).


    Esempio:

    Dim s As String
    s = myText.Text ' ottieni la stringa contenuta nel testo

    ' estrai i caratteri dalla posizione 9 alla 11
    Dim subStr As String
    subStr = Mid(s, 9, 3)

    MsgBox subStr

    🚩 Nota importante​

    • Non puoi selezionare “visivamente” un range di caratteri dentro un oggetto Text in CATIA come in Word.
    • Puoi solo manipolare la stringa e, se serve, creare un nuovo oggetto Text con il contenuto modificato.

 

Wiliam Gava

Utente poco attivo
professione: sviluppo
software: CATIA V5
regione: Venezia (IT) / San Paolo (BR)
Stavo leggendo il manuale di aiuto della API catia.
Infatti, la proprietà "GetTextRange(x,x)" funziona per "DrawingWeld", ma non per "DrawingText".

Questa funzione ritorna una parte del testo, dove possiamo modificare le proprietà di quelle lettere specificate, come esempio: Misura, colore, posizione, ecc.

Io volevo applicare uno colore diverso alla prima e all'ultima lettera del testo.

Non so se sto essendo chiaro, l'italiano non è mia lingua nativa, scusatemi... 😁

Ho una buona conoscenza di macro in catia v5. Ma questo caso non ho trovato una soluzione ancora...

Ringrazio a tutti che hanno disponibilizado un tempo ad aiutarmi....
Se avete bisogno di aiuto con macro Catia v5, sono disponibile ad aiutarvi...
v5macros@gmail.com
 

Statistiche forum

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

Utenti online

Top