Proiezione lineare di spirale

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!
calculon
Posts: 26
Joined: Fri Nov 03, 2017 3:07 pm

Proiezione lineare di spirale

Post by calculon »

Ciao a tutti,
sto cercando di "svolgere" una spirale in una proiezione lineare, anche per misurare la lunghezza totale del ferro che dovrò impiegare per la realizzazione del decoro in esempio.
esempio.FCStd
(42.66 KiB) Downloaded 34 times
Non ho idea di quale sia lo strumento adatto per lo scopo. La medesima funzione potrebbe tornarmi utile in un altro esercizio che mi sono trovato ad affrontare: qual è la misura piana e la forma di una tavola (curva) di fasciame di una barca tradizionale?
Grazie mille
renatorivo
Veteran
Posts: 2611
Joined: Tue Feb 21, 2012 8:07 pm
Location: Torino - Italy

Re: Proiezione lineare di spirale

Post by renatorivo »

Ciao
nella console Python dell'immagine sotto trovi il comando da digitare e il risultato
lunghezza.png
lunghezza.png (23 KiB) Viewed 1778 times
Per questo caso il comando è

Code: Select all

App.getDocument("esempio").getObject("Spiral").Shape.Length
esempio è il nome del progetto
Spiral è il nome originale dell'oggetto, quello che deve essere usato

Vedi anche il post https://forum.freecadweb.org/viewtopic.php?f=3&t=26176
dove ci sono altri esempi

Renato
calculon
Posts: 26
Joined: Fri Nov 03, 2017 3:07 pm

Re: Proiezione lineare di spirale

Post by calculon »

Benissimo. Grazie!
Mentre è possibile proiettare graficamente la spirale
(oppure un altro oggetto curvo come la citata tavola di fasciame) in una figura piana?
Ancora grazie
calculon
Posts: 26
Joined: Fri Nov 03, 2017 3:07 pm

Re: Proiezione lineare di spirale

Post by calculon »

Intendo dire in una figura lineare. Immagina l'esigenza di dover tagliare da un tavolone dritto la sagoma di una doga curva. Io lo vorrei fare graficamente.
renatorivo
Veteran
Posts: 2611
Joined: Tue Feb 21, 2012 8:07 pm
Location: Torino - Italy

Re: Proiezione lineare di spirale

Post by renatorivo »

C'è la macro https://www.freecadweb.org/wiki/Macro_U ... Surface/it
ma al momento a me non funziona.

Segnalato in https://forum.freecadweb.org/viewtopic. ... 3&start=10

Altre macro simili in https://www.freecadweb.org/wiki/Macros_ ... it#Wizards
se funzionano ...

Renato
renatorivo
Veteran
Posts: 2611
Joined: Tue Feb 21, 2012 8:07 pm
Location: Torino - Italy

Re: Proiezione lineare di spirale

Post by renatorivo »

Ciao.
Come avrai visto, finora nessuna soluzione per la citata macro.
Ho cercato un rimedio alternativo. Creare per adesso solo lo sviluppo lineare dei singoli bordi.
Questo dovrebbe essere sufficiente per una spirale. Per una doga, se è curvata in due piani, invece bisogna poi pensare ad altro.
L'idea è
1 - ottenere le linee dei bordi curvi da sviluppare
-- la spirale è già questo
-- per la doga usare Draft->Downgrade fino a scomporre la doga nelle linee dei bordi
2 - applicare uno script che disegni un segmento di lunghezza pari alla linea curva originale

Lo script è una modifica di quello precedente ed è questo

Code: Select all

App.getDocument("esempio").getObject("Spiral").Shape.Length
p1 = FreeCAD.Vector(0,0,0)
p2 = FreeCAD.Vector(App.getDocument("esempio").getObject("Spiral").Shape.Length,0,0)
Draft.makeWire([p1,p2],closed=False) 
E' molto rudimentale. Forse farà sorridere gli esperti, ma funziona.
Quello che si ottiene da una forma non troppo elaborata può poi essere riassemblato in uno schizzo.

Ho chiesto aiuto nel forum inglese per una finestra di dialogo che semplifichi la selezione. Vedi https://forum.freecadweb.org/viewtopic.php?f=22&t=26265
In attesa bisogna cambiare manualmente i nomi del documento e dell'oggetto.
Ecco cosa si ottiene
esempio sviluppo.png
esempio sviluppo.png (11.09 KiB) Viewed 1707 times
esempio-sviluppo.FCStd
(44.3 KiB) Downloaded 35 times
Per una doga sagomata in due modi si può pensare di fare una sezione a metà per creare lo sviluppo.

Renato
calculon
Posts: 26
Joined: Fri Nov 03, 2017 3:07 pm

Re: Proiezione lineare di spirale

Post by calculon »

Grazie mille! L'output è quello desiderato.
Fortissimo come al solito
renatorivo
Veteran
Posts: 2611
Joined: Tue Feb 21, 2012 8:07 pm
Location: Torino - Italy

Re: Proiezione lineare di spirale

Post by renatorivo »

Ho fatto una piccola modifica perchè a volte appariva un errore. Ora funziona meglio.
Vedi nel forum inglese https://forum.freecadweb.org/viewtopic. ... 76#p208476

Aspetto un aiuto per il box di selezione. Modificare ogni volta lo script a mano è noioso.
Last edited by renatorivo on Tue Jan 09, 2018 8:12 pm, edited 1 time in total.
renatorivo
Veteran
Posts: 2611
Joined: Tue Feb 21, 2012 8:07 pm
Location: Torino - Italy

Re: Proiezione lineare di spirale

Post by renatorivo »

Aspettando l'aiuto ho provato se è effettivamente possibile usare in uno schizzo le linee ottenute dallo sviluppo.
E' un po' lungo ma possibile.
Sotto c'è un esempio in cui le linee 628,32 e 198,39 non sono disegnate, ma prese dallo sviluppo della spirale e del cerchio del file "esempiob" pubblicato nel forum inglese e importate nello schizzo.
Draft-> Converti in schizzo per ogni linea
Sketcher-> Merge Sketch
ora le linee sono gestibili in modo consueto
esempiob-conv-schizzo.png
esempiob-conv-schizzo.png (16.11 KiB) Viewed 1673 times
Ovviamente ottenuta la lunghezza è forse più veloce ridisegnarle, questo dimostra solo che funziona.
mario52
Veteran
Posts: 4692
Joined: Wed May 16, 2012 2:13 pm

Re: Proiezione lineare di spirale

Post by mario52 »

Saluti

qui la macro evoluta si può selezionare quello che volete linea, bordi ... se una faccia est selezionata il perimetro della faccia sarà creata se é uno cilindro, cono o sphera la couture conta dopio

è crea una unica linea con tutte le selezioni

Code: Select all

import Draft
import FreeCAD
from FreeCAD import Base

lengthX = 0.0
p1 = FreeCAD.Vector(0.0,0.0,0.0)

selectionObjects = FreeCADGui.Selection.getSelectionEx()
for selection in selectionObjects:
    for selectedEdge in selection.SubObjects:
        #print selectedEdge.Length
        lengthX += selectedEdge.Length

p2 = FreeCAD.Vector(lengthX ,0.0,0.0)
if lengthX != 0.0:
    Draft.makeWire([p1,p2],closed=False) 
else:
    print "Length = 0"
#print lengthX

mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
Post Reply