estrusione di foro angolato

Forum per le domande e le discussioni in Italiano
Forum rules
regole del forum e le informazioni utili

Importante: PRIMA di chiedere aiuto leggete qui!
Post Reply
alsac1
Posts: 9
Joined: Tue Apr 21, 2020 8:17 pm

estrusione di foro angolato

Post by alsac1 »

salve a tutti,
devo realizzare un nottolino di alluminio dove i fori tra le due basi non devono essere perpendicolari tra loro.
in pratica il mio cilindro ha dei fori distanziati di 15mm da un lato e devono incontrarsi al centro dall'altro lato, con un angolo che è funzione della lunghezza dell'oggetto.

come posso realizzare i due fori passanti con una certa angolazione?

grazie a tutti
User avatar
Shalmeneser
Veteran
Posts: 9475
Joined: Wed Dec 23, 2020 12:04 am
Location: Fr

Re: estrusione di foro angolato

Post by Shalmeneser »

:?:
Attachments
ForoGelato_SHALM.FCStd
(18.04 KiB) Downloaded 84 times
alsac1
Posts: 9
Joined: Tue Apr 21, 2020 8:17 pm

Re: estrusione di foro angolato

Post by alsac1 »

esatto, dovrei fare una cosa del genere, come si fa?
domad
Veteran
Posts: 2053
Joined: Mon Jun 22, 2020 12:16 pm

Re: estrusione di foro angolato

Post by domad »

alsac1 wrote: Wed May 18, 2022 11:29 am esatto, dovrei fare una cosa del genere, come si fa?
Ciao alsac1, un saluto alla Comunità!
Intanto benvenuto in FreeCad e nel forum!

Per prima cosa ti consiglio vivamente di leggere:

“Forum rules
regole del forum e le informazioni utili
Importante: PRIMA di chiedere aiuto leggete qui!”

link sfondo rosa posto in alto a sinistra della pagina, poi inserire i dati relativi al sistema in uso e alla versione di FreeCad.

Ciò premesso, dopo un po di giorni di assenza forzata dai forum, finalmente ho un po di tempo da dedicare a questa interessante richiesta, con la speranza che la proposta non giunga in ritardo, in ogni caso potrebbe essere utili ai tanti neofiti.
In allegato il file che contiene un esempio di flusso parametrico di modellazione gestito dal Wb “Spreadsheet” (foglio di calcolo) nel quale è possibile modificare i valori nelle celle a sfondo verde (sezione parametri editabili) per apprezzarne visivamente in real-time i risultati, inoltre è possibile visualizzare nelle celle a sfondo rosso (sezione parametri desunti) altri parametri utili per una possibile lavorazione.
Flusso Wb --> “Part Design” (ma può essere utilizzato anche il Wb “Part”):
- creare un cilindro dalle primitive additive (oppure utilizzare uno sketch con successiva estrusione o “Pad”);
- creare uno sketch sulla faccia di base da utilizzare per l’estrusione sottrattiva (positiva, cioè verso la faccia superiore) o tasca (o “Pocket”) per creare il foro;
- ruotare lo sketch, creato per il foro, sull’asse ortogonale al piano di foratura; (per farlo utilizzare i parametri opportuni da Proprietà --> Dati --> “Attachment Offset”)
- operare l’estrusione sottrattiva o tasca (o “Pocket”);
- utilizzare lo stesso sketch, creato per il foro verso la faccia superiore, e operare una nuova estrusione sottrattiva (negativa, cioè opposta di verso rispetto alla prima) per creare il completamento della foratura verso la base del cilindro;
- operare, in ultimo, una funzione di “Specchiatura” (o “Mirrored”) delle due fasi di foratura, per creare il secondo foro inclinato.
Per rendere la modellazione “automatizzata” bisogna interfacciare i parametri con il foglio di calcolo (Wb “Spreadsheet”) impostando semplici funzioni trigonometriche/geometriche.
Come ultima considerazione il foro che otterremo alla base (intersezione di due forature angolate) assumerà una forma “ellissoidale” mano a mano che l’angolo di foratura si amplierà, fino a divenire una cava semi cilindrica per un’ampiezza angolare (semi angolo di foratura) prossima a 90°, pertanto, avremo un asse minore sempre pari al diametro di foratura e un asse maggiore tendente a infinito per un semi angolo pari a 90°.
Attachments
estrusione fori inclinati.FCStd
(25.07 KiB) Downloaded 67 times
estrusione foro angolato.png
estrusione foro angolato.png (179.88 KiB) Viewed 1430 times
alsac1
Posts: 9
Joined: Tue Apr 21, 2020 8:17 pm

Re: estrusione di foro angolato

Post by alsac1 »

ciao Domad e grazie mille per la tua esaustiva e interessantissima risposta.
anche se con ritardo scrivo quì in merito alla versione freecad usata (0.19) e versione windows (10 pro).
detto ciò, ho risolto con una soluzione più "rudimentale".

ho semplicemente creato due piani di lavoro inclinati di 14°e fatto un una cavità.

grazie ancora

alsac1
domad wrote: Mon May 23, 2022 2:08 pm
alsac1 wrote: Wed May 18, 2022 11:29 am esatto, dovrei fare una cosa del genere, come si fa?
Ciao alsac1, un saluto alla Comunità!
Intanto benvenuto in FreeCad e nel forum!

Per prima cosa ti consiglio vivamente di leggere:

“Forum rules
regole del forum e le informazioni utili
Importante: PRIMA di chiedere aiuto leggete qui!”

link sfondo rosa posto in alto a sinistra della pagina, poi inserire i dati relativi al sistema in uso e alla versione di FreeCad.

Ciò premesso, dopo un po di giorni di assenza forzata dai forum, finalmente ho un po di tempo da dedicare a questa interessante richiesta, con la speranza che la proposta non giunga in ritardo, in ogni caso potrebbe essere utili ai tanti neofiti.
In allegato il file che contiene un esempio di flusso parametrico di modellazione gestito dal Wb “Spreadsheet” (foglio di calcolo) nel quale è possibile modificare i valori nelle celle a sfondo verde (sezione parametri editabili) per apprezzarne visivamente in real-time i risultati, inoltre è possibile visualizzare nelle celle a sfondo rosso (sezione parametri desunti) altri parametri utili per una possibile lavorazione.
Flusso Wb --> “Part Design” (ma può essere utilizzato anche il Wb “Part”):
- creare un cilindro dalle primitive additive (oppure utilizzare uno sketch con successiva estrusione o “Pad”);
- creare uno sketch sulla faccia di base da utilizzare per l’estrusione sottrattiva (positiva, cioè verso la faccia superiore) o tasca (o “Pocket”) per creare il foro;
- ruotare lo sketch, creato per il foro, sull’asse ortogonale al piano di foratura; (per farlo utilizzare i parametri opportuni da Proprietà --> Dati --> “Attachment Offset”)
- operare l’estrusione sottrattiva o tasca (o “Pocket”);
- utilizzare lo stesso sketch, creato per il foro verso la faccia superiore, e operare una nuova estrusione sottrattiva (negativa, cioè opposta di verso rispetto alla prima) per creare il completamento della foratura verso la base del cilindro;
- operare, in ultimo, una funzione di “Specchiatura” (o “Mirrored”) delle due fasi di foratura, per creare il secondo foro inclinato.
Per rendere la modellazione “automatizzata” bisogna interfacciare i parametri con il foglio di calcolo (Wb “Spreadsheet”) impostando semplici funzioni trigonometriche/geometriche.
Come ultima considerazione il foro che otterremo alla base (intersezione di due forature angolate) assumerà una forma “ellissoidale” mano a mano che l’angolo di foratura si amplierà, fino a divenire una cava semi cilindrica per un’ampiezza angolare (semi angolo di foratura) prossima a 90°, pertanto, avremo un asse minore sempre pari al diametro di foratura e un asse maggiore tendente a infinito per un semi angolo pari a 90°.
User avatar
onekk
Veteran
Posts: 6146
Joined: Sat Jan 17, 2015 7:48 am
Contact:

Re: estrusione di foro angolato

Post by onekk »

Se estrudiun cerchio dando una coordinata finale opportunamente sfalsata, otterrai un foro angolato con base circolare. Con lo scripting è relativamente semplice:

Code: Select all

"""Sample code.

This code was written as an sample code

Name: filename.py

Author: Carlo Dormeletti
Copyright: 2022
Licence: CC BY-NC-ND 4.0 IT
"""
import os # noqa
import sys  # noqa
import math # noqa
from math import pi, sin, cos # noqa

import FreeCAD
import FreeCADGui # noqa
from FreeCAD import Placement, Rotation, Vector # noqa
import Part # noqa

DOC = FreeCAD.activeDocument()

DOC_NAME = "template"


def clear_doc():
    """Clear active document deleting all the objects."""
    for obj in DOC.Objects:
        DOC.removeObject(obj.Name)


def setview():
    """Rearrange View."""
    FreeCAD.Gui.SendMsgToActiveView("ViewFit")
    FreeCAD.Gui.activeDocument().activeView().viewAxometric()


if DOC is None:
    FreeCAD.newDocument(DOC_NAME)
    FreeCAD.setActiveDocument(DOC_NAME)
    DOC = FreeCAD.activeDocument()

else:

    clear_doc()

# EPS= tolerance to use to cut the parts
EPS = 0.10
EPS_C = EPS * -0.5
ROT0 = Rotation(0, 0, 0)

circ_dia = 30

circle = Part.makeCircle(circ_dia)
face = Part.Face(Part.Wire(circle))

h = 100
disas = 20

dis1 = circ_dia + disas
dis2 = (circ_dia + disas) * -1

tubo1 = face.copy().extrude(Vector(dis1, 0, h + EPS))

tubo2 = face.copy().extrude(Vector(dis2, 0, h + EPS))


foro1 = Part.show(tubo1, "foro1")
foro1.Placement = FreeCAD.Placement(Vector(0, 0, EPS_C), ROT0)

foro2 = Part.show(tubo2, "foro2")
foro2.Placement = FreeCAD.Placement(Vector(0, 0, EPS_C), ROT0)


big_cdia = 120


circ1= Part.makeCircle(big_cdia)
face1 = Part.Face(Part.Wire(circ1))
tubo3 = face1.copy().extrude(Vector(0, 0, h))


tubo_ext = Part.show(tubo3, "Esterno")

sol_fin = tubo3.cut((foro1.Shape, foro2.Shape)).removeSplitter()

Part.show(sol_fin, "Solido finale")

DOC.recompute()

setview()

forum220523.png
forum220523.png (36 KiB) Viewed 1386 times

Tieni present che per costruzione il cerchio è fatto con il centro in (0,0,0), per cui la posizione finale del cerchio superiore deve essere calcolata per avere il corretto angolo, in definitiva l'angolo è in funzione della base e dell'altezza dell'ipotetico triangolo che viene formato dalla linea che unisce il centro del cerchio superiore e del cerchio inferiore.

Dato che la faccia di base è la stess (viene semplicemente copiata), il foro alla base è circolare, non viene ruotato nessun cilindro semplicemente viene disassata l'estrusione. (In genere il comando di estrusione viene "pensato" solo in direzione verticale, in pratica il vettore di estrusione è il punto centrale della faccia finale, se costruisci attorno all'origine i conti diventano più semplici).

Si può fare anche con la GUI.

Saluti

Carlo D.
GitHub page: https://github.com/onekk/freecad-doc.
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.

Blog: https://okkmkblog.wordpress.com/
domad
Veteran
Posts: 2053
Joined: Mon Jun 22, 2020 12:16 pm

Re: estrusione di foro angolato

Post by domad »

onekk wrote: Mon May 23, 2022 5:43 pm Se estrudiun cerchio dando una coordinata finale opportunamente sfalsata, otterrai un foro angolato con base circolare. Con lo scripting è relativamente semplice....
Ciao Carlo, un saluto alla Comunità!

Interessante lo script, scusa ma in questo caso (rifacendomi al tuo esempio) dovrebbe forare utilizzando una punta di 53,68 mm di diametro...
User avatar
onekk
Veteran
Posts: 6146
Joined: Sat Jan 17, 2015 7:48 am
Contact:

Re: estrusione di foro angolato

Post by onekk »

domad wrote: Tue May 24, 2022 5:56 am [Ciao Carlo, un saluto alla Comunità!

Interessante lo script, scusa ma in questo caso (rifacendomi al tuo esempio) dovrebbe forare utilizzando una punta di 53,68 mm di diametro...
oddio, in teoria il cerchio ha un raggio di 30 per cui dovrebbe essere 60 il diametro, ho messo valori "a caso" (o peggio) tanto per dare una idea del "processo".

estrudendo in diagonale, dovrebbe mantenere ragionevolmente il diametro, se l'angolo non è troppo basso, la sezione è circolare, dovrei vedere se sezionando con un piano, ecco una estensione delle'esempio:

Code: Select all

"""Sample code.

This code was written as an sample code

Name: filename.py

Author: Carlo Dormeletti
Copyright: 2022
Licence: CC BY-NC-ND 4.0 IT
"""
import os # noqa
import sys  # noqa
import math # noqa
from math import pi, sin, cos # noqa

import FreeCAD
import FreeCADGui # noqa
from FreeCAD import Placement, Rotation, Vector # noqa
import Part # noqa

DOC = FreeCAD.activeDocument()

DOC_NAME = "template"


def clear_doc():
    """Clear active document deleting all the objects."""
    for obj in DOC.Objects:
        DOC.removeObject(obj.Name)


def setview():
    """Rearrange View."""
    FreeCAD.Gui.SendMsgToActiveView("ViewFit")
    FreeCAD.Gui.activeDocument().activeView().viewAxometric()


if DOC is None:
    FreeCAD.newDocument(DOC_NAME)
    FreeCAD.setActiveDocument(DOC_NAME)
    DOC = FreeCAD.activeDocument()

else:

    clear_doc()

# EPS= tolerance to use to cut the parts
EPS = 0.10
EPS_C = EPS * -0.5
ROT0 = Rotation(0, 0, 0)


# Dati
circ_rad = 30 * 0.5
h = 150
disas = 20
big_crad = 70
ef = 1.10
sez_h = 0.8


circle = Part.makeCircle(circ_rad)
face = Part.Face(Part.Wire(circle))

dis1 = circ_rad + disas
dis2 = (circ_rad + disas) * -1

tubo1 = face.copy().extrude(Vector(dis1, 0, h + EPS))

tubo2 = face.copy().extrude(Vector(dis2, 0, h + EPS))

foro1 = Part.show(tubo1, "foro1")
foro1.Placement = Placement(Vector(0, 0, EPS_C), ROT0)

foro2 = Part.show(tubo2, "foro2")
foro2.Placement = Placement(Vector(0, 0, EPS_C), ROT0)

circ1= Part.makeCircle(big_crad)
face1 = Part.Face(Part.Wire(circ1))
tubo3 = face1.copy().extrude(Vector(0, 0, h))


tubo_ext = Part.show(tubo3, "Esterno")

sol_fin = tubo3.cut((foro1.Shape, foro2.Shape)).removeSplitter()

sld_fin = Part.show(sol_fin, "Solido finale")

cdxy = big_crad * ef * 2
cdz = h * ef

cubo_sez = Part.makeBox(cdxy, cdxy, cdz)
cubo_sez.Placement = Placement(Vector(cdxy * -0.5, cdxy * -0.5, cdz * sez_h), ROT0)

cb_s = Part.show(cubo_sez, "cubo sezione")

sezione = sol_fin.cut((cubo_sez)).removeSplitter()

sld_sez = Part.show(sezione, "sezione_del_solido")


for elem in (foro1, foro2, tubo_ext, cb_s, sld_fin):
    elem.ViewObject.Visibility = False

sld_sez.ViewObject.Transparency = 80

DOC.recompute()

setview()
Ho raggruppato i dati:

Code: Select all

# Dati
circ_rad = 30 * 0.5
h = 150
disas = 20
big_crad = 70
ef = 1.10
sez_h = 0.8


se ci vuoi giocare, se regoli sez_h da 0 a 1.0 ottieni una sezione del solido, regolando l'altezza da 0 del "cubo di taglio", modificando leggermente i coefficienti dei valori cdxy del vettore di traslazione del cubo:

Code: Select all

cubo_sez.Placement = Placement(Vector(cdxy * -0.5, cdxy * -0.5, cdz * sez_h), ROT0)
puoi ottenere sezioni X e Y, ma presumo che tu lo sappia già.

Il trucco è proprio banale, semplicemente una "sottrazione booleana" di due solidi, ma funziona senza tirare in ballo cose complicate.

Saluti

Carlo D.
GitHub page: https://github.com/onekk/freecad-doc.
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.

Blog: https://okkmkblog.wordpress.com/
Post Reply