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
estrusione di foro angolato
Forum rules
regole del forum e le informazioni utili
Importante: PRIMA di chiedere aiuto leggete qui!
regole del forum e le informazioni utili
Importante: PRIMA di chiedere aiuto leggete qui!
- Shalmeneser
- Veteran
- Posts: 9582
- Joined: Wed Dec 23, 2020 12:04 am
- Location: Fr
Re: estrusione di foro angolato
- Attachments
-
- ForoGelato_SHALM.FCStd
- (18.04 KiB) Downloaded 86 times
Re: estrusione di foro angolato
esatto, dovrei fare una cosa del genere, come si fa?
Re: estrusione di foro angolato
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 69 times
-
- estrusione foro angolato.png (179.88 KiB) Viewed 1612 times
Re: estrusione di foro angolato
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
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 pmCiao 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°.
Re: estrusione di foro angolato
Se estrudiun cerchio dando una coordinata finale opportunamente sfalsata, otterrai un foro angolato con base circolare. Con lo scripting è relativamente semplice:
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.
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()
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/
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.
Blog: https://okkmkblog.wordpress.com/
Re: estrusione di foro angolato
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...
Re: estrusione di foro angolato
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()
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)
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/
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.
Blog: https://okkmkblog.wordpress.com/