Macro con userform per creazione automatica di un prisma partendo da superficie e spigolo

Andrea Amedei

Utente poco attivo
professione: Progettista meccanico
software: Solidworks, Ansys, Hypermesh, CATIA
regione: FI
Buongiorno,

è qualche giorno che ci sto sbattendo la testa senza però venirne a capo. Siccome spesso ho bisogno di eseguire la feature solida che vedete nell'immagine sotto su svariati fori, stavo pensando di creare una macro che automatizzasse questo processo.
La feature solida da costruire è un "prisma" che ha come schizzo di base la proiezione di un foro e un cerchio più grande che ha un diametro N volte più grande di quello proiettato (N parametro da impostare). L'altezza di estrusione è anch'essa un parametro.
1679646998897.png

Per fare questo, ho creato un UserForm che potete vedere nella figura sottostante. L'utente deve usare i 3 bottoni in sequenza (Selezione superficie, seleziona bordo foro, crea solido) e le due caselle di testo del rapporto D/d e l'altezza di estrusione del profilo.
1679647499974.png

Ammetto di conoscere abbastanza bene la programmazione VBA su excel, ma sono veramente all'inizio con CATIA. Al momento quello che ho fatto è il seguente:

Tasto "Seleziona superficie"
Private Sub select_surface_button_click_Click()
Dim MySelection
Dim MyArray(0) As Face
Dim strReturn As String
Dim part1 As Part
Dim partDocument1 As PartDocument
Dim myHybridBodies As HybridBodies

Set MySelection = CATIA.ActiveDocument.Selection
MySelection.Clear
Me.Hide

strReturn = MySelection.SelectElement2(Array("Face"), "Select a Face:", False)
If strReturn = "Normal" Then
'ReDim Preserve MyArray(UBound(MyArray) + 1)
Set MyArray(UBound(MyArray)) = MySelection.Item2(1).Value
End If
TextBox1.Text = MyArray(0).Name
Me.Show
End Sub


Tasto "Seleziona bordo foro"
Private Sub select_edge_button_click_Click()
Dim MySelection
Dim MyArray(0) As Edge
Dim strReturn As String
Dim part1 As Part
Dim partDocument1 As PartDocument

Set MySelection = CATIA.ActiveDocument.Selection
MySelection.Clear
Me.Hide

strReturn = MySelection.SelectElement2(Array("Edge"), "Select a Edge:", False)
If strReturn = "Normal" Then
'ReDim Preserve MyArray(UBound(MyArray) + 1)
Set MyArray(UBound(MyArray)) = MySelection.Item2(1).Value
End If
TextBox2.Text = MyArray(0).Name
Me.Show
End Sub


A questo punto, nelle caselle di testo più lunghe appare il nome(?) della superficie e del bordo selezionati. Premendo "Crea solido" vorrei che il software costruisse:
1. Un piano di schizzo sulla superficie selezionata (usando il nome nella userform?)
2. Dal bordo del foro selezionato ricava il diametro e il suo centro
3. Prende il bordo del foro e lo proietta su tale piano
4. Crea un nuovo cerchio con stesso centro del bordo proiettato e di diametro D=N*d
5. Esce dallo schizzo
6. Estrude dell'altezza impostata nella userform
7. Deseleziona tutto e pulisce tutta la userform per una nuova operazione

Spero che qualcuno riesce ad aiutarmi, anche con il registra Macro non riesco a capire come lavora il programma.

Saluti,

Andrea
 

gianni55

Utente Standard
professione: Progettista
software: CATIA V5
regione: Piemonte
Non ti so aiutare nella programmazione, ma per realizzare il prisma come desideri, uno dei possibili modi è questo:

1) hai la superficie
2) hai il diametro (in questo caso più in alto della superficie)
3) ricavi il centro del diametro (features punto/tipo di punto/cerchio...centro
4) crei lo schizzo utilizzando come piano la superficie
5) all'interno dello schizzo proietti il cerchio (menù/inserisci/operazione/geometria 3D/proietta elementi 3D
6) metti un vincolo al diametro (ti darà una quota di riferimento tra parentesi)
7) proietti in modalità costruzione il punto
8) utilizzi il punto per costruire il diametro esterno
9) imposti il vincolo del diametro e modifichi la formula (tasto destro/modifica la formula, selezioni la quota del vincolo e la moltiplichi per il valore N
10) esci dallo schizzo e generi il prisma

Dalle formule ricavi i nomi necessari a impostare la programmazione

Fammi sapere.

Ciao
 

Allegati

  • Capture_001.jpg
    Capture_001.jpg
    129.2 KB · Views : 2
  • Part1.CATPart.zip
    34.2 KB · Views : 0

Andrea Amedei

Utente poco attivo
professione: Progettista meccanico
software: Solidworks, Ansys, Hypermesh, CATIA
regione: FI
Grazie gianni55 della risposta.

L'algoritmo che voglio creare segue proprio i tuoi passaggi (più o meno).

Quello che mi serve tuttavia sono i comandi, in primis come aprire l'editor di schizzo proprio sulla superficie che ho selezionato (di cui ho il nome).

Successivamente, per costruire il prisma posso usare la funzione "registra macro" per capire che comandi usare.

Grazie
 

gianni55

Utente Standard
professione: Progettista
software: CATIA V5
regione: Piemonte
Grazie gianni55 della risposta.

L'algoritmo che voglio creare segue proprio i tuoi passaggi (più o meno).

Quello che mi serve tuttavia sono i comandi, in primis come aprire l'editor di schizzo proprio sulla superficie che ho selezionato (di cui ho il nome).

Successivamente, per costruire il prisma posso usare la funzione "registra macro" per capire che comandi usare.

Grazie
Ciao Andrea,
per aprire l’editor di schizzo devi essere in ambiente Part Design e ovviamente avere sullo schermo tutte le icone per poter scegliere quella dello schizzo cioè un foglio con una matita, dopo la selezione il sistema attende la selezione della geometria.
Ma se non hai dimestichezza con Catia perché vuoi addirittura creare una macro ?
 

Andrea Amedei

Utente poco attivo
professione: Progettista meccanico
software: Solidworks, Ansys, Hypermesh, CATIA
regione: FI
Ciao gianni, probabilmente non mi sono spiegato bene. So usare Catia e di conseguenza anche fare quel semplice prisma.

La macro serve per automatizzare la procedura e rendere il tutto più veloce, in quanto non devo farlo su un foro solo ma su più fori, in superfici anche diverse.

Per questo ti dicevo che l'algoritmo segue i tuoi passaggi, ma mi serve in forma di comandi in VBA. Come farlo su ogni singolo foro mi è, ahimè, anche troppo chiaro xD
 

Andrea Amedei

Utente poco attivo
professione: Progettista meccanico
software: Solidworks, Ansys, Hypermesh, CATIA
regione: FI
Figurati, nessun problema! :)

Non la conosco, puoi indicarmi qualche link in cui studiare l’argomento?

Grazie
 

falonef

Moderatore CATIA V5
Staff Forum
professione: Business Analyst PLM (Consumer Goods)
software: 3DEXPERIENCE / CATIA V5 / PARTsolutions / QA-Report / Q-Checker / Type3toCatia / Windows 11
regione: Svizzera
nell online di v5 dovresti trovare il necessario
 

gianni55

Utente Standard
professione: Progettista
software: CATIA V5
regione: Piemonte
cito dalla guida Catia:
Una Copia di gruppo è costituita da una serie di feature (elementi geometrici, formule, vincoli e così via) che vengono raggruppate per essere utilizzate in un contesto diverso. Esse possono essere completamente ridefinite quando vengono incollate.
La Copia di gruppo cattura l'intento del disegno e il know-how del progettista, consentendo un riutilizzo e un'efficienza maggiore.

Praticamente esegui una serie di operazioni di modellazione che poi riutilizzi cambiando semplicemente alcuni dati di imput
 

falonef

Moderatore CATIA V5
Staff Forum
professione: Business Analyst PLM (Consumer Goods)
software: 3DEXPERIENCE / CATIA V5 / PARTsolutions / QA-Report / Q-Checker / Type3toCatia / Windows 11
regione: Svizzera
senza dover programmare 👨🏻‍💻 niente
 

Statistiche forum

Discussioni
59,306
Messaggi
505,268
Utenti registrati
110,816
Ultimo utente registrato
emicas

Staff online

Top