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.

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.

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
è 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.

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.

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
