FreeCAD Logo FreeCAD 1.0
  • English Afrikaans Arabo Bielorusso Catalano Czech German Greek Spanish Spanish Basco Finnish Filippino Français Galiziano Croatian Hungarian Indonesiano Italiano Japanese Kabyle Coreano Lituano Dutch Norvegese Bokmal Polish Portuguese Portuguese Romanian Russian Slovak Slovenian Serbo Swedish Turkish Ukrainian Valenziano Vietnamita Cinese Cinese
  • Funzioni
  • Download
  • Blog
  • Documentazione
    Indice di documentazione Per iniziare Documentazione utenti Il manuale FreeCAD Documentazione degli ambienti di lavoro Documentazione di scripting Python Documentazione codice C++ Tutorial Domande frequenti Politica sulla Privacy Informazioni Su FreeCAD
  • Contribuire
    Come aiutare Sponsor Segnala un bug Fai una richiesta Opportunità di lavoro e ricompense Linee guida per contribuire Manuale degli sviluppatori Traduzioni
  • Comunità
    Codice di condotta Forum The FPA GitHub GitLab Codeberg Mastodon Matrix IRC IRC via Webchat Gitter Discord Reddit Twitter Facebook LinkedIn Calendario
  • ♥ Donate

Donate

$
Informazioni SEPA
Si prega di intestare il bonifico SEPA a:
Beneficiary: The FreeCAD project association
IBAN: BE04 0019 2896 4531
BIC/SWIFT: GEBABEBBXXX
Agenzia bancaria: BNP Paribas Fortis
Indirizzo: Rue de la Station 64, 1360 Perwez, Belgium

While Stripe doesn't support monthly donations, you can still become a sponsor! Simply make a one-time donation equivalent to 12 months of support, and you'll gain access to the corresponding sponsoring tier. It's an easy and flexible way to contribute.

If you are not sure or not able to commit to a regular donation, but still want to help the project, you can do a one-time donation, of any amount.

Choose freely the amount you wish to donate one time only.

You can support FreeCAD by sponsoring it as an individual or organization through various platforms. Sponsorship provides a steady income for developers, allowing the FPA to plan ahead and enabling greater investment in FreeCAD. To encourage sponsorship, we offer different tiers, and unless you choose to remain anonymous, your name or company logo will be featured on our website accordingly.

from 1 USD / 1 EUR per month. You will not have your name displayed here, but you will have helped the project a lot anyway. Together, normal sponsors maintain the project on its feet as much as the bigger sponsors.

from 25 USD / 25 EUR per month. Your name or company name is displayed on this page.

from 100 USD / 100 EUR per month. Your name or company name is displayed on this page, with a link to your website, and a one-line description text.

from 200 USD / 200 EUR per month. Your name or company name and logo displayed on this page, with a link to your website and a custom description text. Companies that have helped FreeCAD early on also appear under Gold sponsors.

Instead of donating each month, you might find it more comfortable to make a one-time donation that, when divided by twelve, would give you right to enter a sponsoring tier. Don't hesitate to do so!

Choose freely the amount you wish to donate each month.

Please inform your forum name or twitter handle as a notein your transfer, or reach to us, so we can give you proper credits!

Icona macro generica. Crea la tua icona personale con lo stesso nome della macro export transient FEM results

Descrizione
Esporta più risultati FEM da un'analisi transitoria per la post-elaborazione in ParaView.

Versione macro: 0.1
Ultima modifica: 2019-08-30
Versione FreeCAD: All
Download: Macro file (3 kB)
Example file without results (200 kB)
Example file with results (10 MB)
All example files, including the vtk-export folder (21 MB)
Autore: Luftschraube
Autore
Luftschraube
Download
Macro file (3 kB)
Example file without results (200 kB)
Example file with results (10 MB)
All example files, including the vtk-export folder (21 MB)
Link
Raccolta di macro
Come installare le macro
Personalizzare la toolbar
Versione macro
0.1
Data ultima modifica
2019-08-30
Versioni di FreeCAD
All
Scorciatoia
Nessuna
Vedere anche
Nessuno

Descrizione

Questa macro esporta più oggetti risultato FEM da un'analisi transitoria nel formato VTK e genera un file PVU che può essere utilizzato per caricare i risultati direttamente in ParaView per la post-elaborazione.

Contesto

Un'analisi transitoria in FreeCAD genera una serie di oggetti di risultati FEM, uno per ogni marca temporale. I singoli risultati possono essere analizzati direttamente in FreeCAD e post-elaborati utilizzando le pipeline. Tuttavia, le possibilità offerte da FreeCAD sono ancora limitate, soprattutto per le analisi transitorie. Uno strumento migliore per la post-elaborazione e la visualizzazione è ParaView. È possibile esportare singoli oggetti risultato FEM da FreeCAD come file .vtk o .vtu, che possono poi essere aperti con ParaView. Purtroppo, l'ambiente di lavoro FEM non supporta (ancora) l'esportazione di più file .vtk contemporaneamente. È qui che entra in gioco questa macro.

Come usarla (utenti esperti)

Eseguire la macro su un progetto FreeCAD che include diversi oggetti risultato FEM da un'analisi transitoria. Oltre al file .FCStd, verrà creata una nuova cartella 'vtk-export', contenente i singoli risultati (file .vtu) e un file .pvu che può essere aperto da ParaView.

Come usarla (passo dopo passo con esempio)

Come esempio, viene utilizzata la piegatura di una striscia bimetallica in alluminio/acciaio. Una guida passo passo per creare il file di esempio è disponibile qui, oppure è possibile scaricare il file dalla sezione download di questa pagina. Salvare il file FCMacro nella cartella delle macro di FreeCAD, raggiungibile tramite Modifica → Preferenze → Python → Macro.

Con il file di esempio aperto, andare su Macro → Macro..., selezionare "ExportTransientResults_190830.FCMacro" (o qualsiasi nome con cui è stato salvato) ed eseguirlo. La macro creerà ora una sottocartella "vtk-export" accanto al file .FCStd. A seconda del numero e delle dimensioni degli oggetti risultato, l'operazione potrebbe richiedere del tempo. Nella Vista Report (Visualizza → Vista Report), si dovrebbe vedere "Macro completata", se tutto è andato bene, oppure alcuni messaggi di errore. (Nota: a volte compaiono messaggi come "PropertyFloatList NON esportato in vtk", ma si riesce comunque a lavorare con i file VTK...) Nella sottocartella "vtk-export", si trovano i file .vtu, uno per ogni set di risultati per ogni timestamp. Inoltre, viene creato un file .pvd, che indica a ParaView quale set di risultati appartiene a quale timestamp.

Ora aprire ParaView e andare su File → Apri... e aprire il file .pvd. Nella scheda "Properties", cliccare su "Apply" per caricare i risultati. Nella scheda "Information" si vedrà un elenco di "Index" e "Value", corrispondenti ai timestamp dei risultati appena importati. (Naturalmente, è sempre opportuno verificare se i timestamp indicati qui sono corretti o se si è verificato qualcosa di anomalo durante l'esportazione). Da qui, si può usare ParaView per sperimentare con i risultati. Poiché ParaView offre numerose possibilità, si prega di fare riferimento alla documentazione appropriata disponibile online.

A scopo dimostrativo, visualizzare ora la temperatura della striscia bimetallica piegata: nella scheda "properties" a sinistra, sotto "coloring", selezionare la temperatura e l'immagine verrà mappata a colori in base alla temperatura locale. Tramite la piccola icona a forma di cuore, selezionare la scala di colori "cool to warm". Con le icone a forma di registratore in alto, si possono scorrere tutti i singoli risultati creati durante l'analisi. Il pulsante "play" visualizzerà le singole immagini in sequenza. Tuttavia, i singoli risultati non sono separati da un intervallo di tempo costante, quindi l'animazione non è proporzionale nel tempo.

Ciò di cui si ha bisogno è un'interpolazione dei risultati tra i vari intervalli temporali, disponibile tramite Filters → Temporal → Temporal Interpolator. Qui selezionare nuovamente la temperatura per la colorazione. Nella "animation view" (View → Animation View), si può ora passare dalla modalità "sequence" a quella "real time". Si può anche impostare l'istante di inizio (il valore predefinito è 0,01 s), l'istante di fine e la durata. Mentre l'istante di inizio e quello di fine si riferiscono al tempo di simulazione, la durata è il tempo reale effettivamente impiegato dall'animazione per essere riprodotta completamente. Con una durata di 10 s, il tempo di simulazione di 60 s verrà compresso in 10 s di tempo reale.

Si faccia un ulteriore passo avanti e si desideri visualizzare l'effettiva piegatura della striscia. Con il Temporal Interpolator selezionato, aggiungere Filters → Common → Warp by Vector. In "vectors" selezionare "DisplacementVectors" e impostare il "scale factor" a 10. Quando si riproduce l'animazione, si può effettivamente vedere la piegatura della striscia mappata a colori (esagerata di un fattore 10).

La post-elaborazione appena eseguita può essere salvata come "state" in ParaView, che può essere riaperto in qualsiasi momento e persino applicato a un diverso set di risultati.

Download

  • Macro file (3 kB)
  • Example file without results (200 kB)
  • Example file with results (10 MB)
  • All example files, including the vtk-export folder (21 MB)

Script

Macro_export_transient_FEM_results.FCMacro

#!/usr/bin/python
# -*- coding: utf-8 -*-

#
# Macro to export multiple FEM results objects from a transient analysis for
# post-processing in ParaView.
#
# Created by <Luftschraube> under the GNU Lesser General Public License (LGPL)
#
# Version 0.1 (30.08.2019)
#

import FreeCAD
import Fem
import feminout.importVTKResults
import os
from sys import exit

FreeCAD.Console.PrintMessage(">>>---------Macro started\n")

#Get the file path and name of the active document 
p = FreeCAD.ActiveDocument.FileName
FilePath = "/".join(p.split("/")[:-1])
FileName = p.split("/")[-1].split(".")[0]
FreeCAD.Console.PrintMessage("File path:" + FilePath + "\n")
FreeCAD.Console.PrintMessage("File name:" + FileName + "\n")
FreeCAD.Console.PrintMessage("\n<<<----------Macro finished with errors\n")

#Get FEM result objects into a list
FreeCAD.Console.PrintMessage("Looking for result objects...")
FEMResultObjects = []

for obj in App.ActiveDocument.Objects:
	if obj.TypeId == "Fem::FemResultObjectPython":	
		FEMResultObjects.append(obj.Label)
		#FreeCAD.Console.PrintMessage(obj.Label + '\n')

NumberOfResultObjects = len(FEMResultObjects)
FreeCAD.Console.PrintMessage(str(NumberOfResultObjects) + " found\n")

if NumberOfResultObjects > 0:
	
	#Export result objects as .vtu file and generate .pvu file
	ExportFolderName = "vtk-export"
	ExportOutputPath = FilePath + "/" + ExportFolderName
	if not os.path.exists(ExportOutputPath):
		os.makedirs(ExportOutputPath)
		FreeCAD.Console.PrintMessage(ExportOutputPath + " has been created\n")
	else:
		FreeCAD.Console.PrintMessage(ExportOutputPath + " already exists\n")
	
	PVUFile = open(ExportOutputPath + "/" + FileName + ".pvd","w")
	PVUFile.write("<VTKFile type=\"Collection\" version=\"1.0\" byte_order=\"LittleEndian\" header_type=\"UInt64\">\n\t<Collection>\n")
	
	n = 0
	for ExportObject in sorted(FEMResultObjects):
		n = n + 1
		
		#Read and format time stamp (e.g., 12.37 s = 0001237)
		FreeCADResultLabelParts = ExportObject.split("_")
		PreDecimal = FreeCADResultLabelParts[-3]
		PostDecimal = FreeCADResultLabelParts[-2]

		if len(PostDecimal) == 1:
			PostDecimal = PostDecimal + str(0)
		TimeValue = float(PreDecimal) + float(PostDecimal)/100
		TimeString = str(int(round(TimeValue*100,0))).zfill(7)
	
		#For some reason, the VTK exporter expects a list (although only one object is processed at once...) - so build a list with the current object
		ExportObjectList = []
		ExportObjectList.append(FreeCAD.ActiveDocument.getObject(ExportObject))
		FileNameOUT = FileName + "_" + TimeString + ".vtu"
		FilePath = ExportOutputPath + "/" + FileNameOUT
		FreeCAD.Console.PrintMessage(FilePath + " is to be created\n")
		feminout.importVTKResults.export(ExportObjectList,FilePath)
	
		PVUFile.write("\t\t<DataSet timestep=\"" + str(TimeValue) + "\" file=\"" + FileNameOUT + "\"/>\n")
	
	#Close the .pvu file
	PVUFile.write("\t</Collection>\n</VTKFile>")
	PVUFile.close()
else:
	FreeCAD.Console.PrintMessage("Nothing to export!")

FreeCAD.Console.PrintMessage('\n<<<----------Macro finished\n')


Link

Esempio Analisi transitorio FEM

La discussione sul Forum Export transient FEM results to vtk/vtu for ParaView

Questa pagina è recuperata da https://wiki.freecad.org/Macro_export_transient_FEM_results

Tieniti aggiornato!
Forum GitHub Mastodon Matrix IRC Gitter.im Discord Reddit Twitter Facebook LinkedIn

© The FreeCAD Team. Homepage image credits (top to bottom): ppemawm, r-frank, epileftric, regis, rider_mortagnais, bejant.

Questo progetto è supportato da: , KiCad Services Corp. e altri sponsor

GitHubMigliora questa pagina su GitHub