Differenza fra script e macro

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
paolo.bertin
Posts: 12
Joined: Sun Feb 05, 2023 7:56 am
Location: Padua, Italy

Differenza fra script e macro

Post by paolo.bertin »

Salve,
nella documentazione è esposta la possibilità di creare sia macro con estensione .FCMacro (da memorizzare in: /home/<username/snap/freecad/common ), sia script con estensione .py (da memorizzare in: /home/<username>/freecad/commn/Mod/FreeCAD/Mod/scripts).
Entrambe sono editabili e/o utilizzabili dall'interno del tools per le macro di FreeCAD.
Mi chiedevo se l'uso dell'una o dell'altra comportava una qualche differenza, o se invece fossero equivalenti.
domad
Veteran
Posts: 2053
Joined: Mon Jun 22, 2020 12:16 pm

Re: Differenza fra script e macro

Post by domad »

paolo.bertin wrote: Tue Mar 28, 2023 3:22 pm ....
Un saluto alla Comunità!
Qui le risposte al quesito:
-Macro https://wiki.freecad.org/Macros/it;
-Script https://wiki.freecad.org/Scripts/it;
Il commento di @onekk non tarderà ad arrivare....
paolo.bertin
Posts: 12
Joined: Sun Feb 05, 2023 7:56 am
Location: Padua, Italy

Re: Differenza fra script e macro

Post by paolo.bertin »

Grazie per aver risposto.
In effetti il mio post nasceva proprio dopo aver letto le pagine da lei indicate.
Dopo di che mi è appunto sorta la domanda: quando è più sensato usare l'una o l'altra?
User avatar
onekk
Veteran
Posts: 6146
Joined: Sat Jan 17, 2015 7:48 am
Contact:

Re: Differenza fra script e macro

Post by onekk »

paolo.bertin wrote: Wed Mar 29, 2023 7:20 am Grazie per aver risposto.
In effetti il mio post nasceva proprio dopo aver letto le pagine da lei indicate.
Dopo di che mi è appunto sorta la domanda: quando è più sensato usare l'una o l'altra?
Dipende dal contesto, in pratica l'estensione .FCMacro viene trattata in modo separato dal .py ma più che altro per i filtri nel menu delle Macro di FreeCAD (FC in breve).


Ha senso usare FCMacro se si vuole integrare il codice in FreeCAD, magari facendo invocare il comando da un apposito bottone in una barra degli strumenti.

Ha meno senso usare FCMacro per uno script standalone, cioè qualcosa che non deve essere invocato come Macro.

La distinzione è labile, il concetto di Macro in teoria risale ad "antiche" applicazione che semplicemente registravano i comandi impartiti da tastiera o usavano un "linguaggio specifico" per descrivere le azioni da far eseguire al software. (esempi potrebbero essere il Visual Basic e l'AutoLisp in ambito CAD).

In FreeCAD la storia è leggermente diversa, esiste un interprete Python "a bordo", nel quale è possibile inserire anche veri e propri programmi Python (io ho scritto applicazioni per FC da più di 10000 righe di codice organizzati in una decina di file diversi).

Semplicemente caricando dal comando File >> Apri un file con estensione .py il file si apre nell'editor delle Macro (Io preferisco chiamarlo Editor Python) e da li lo si può leseguire da lì.

In più FC è abbastanza intelligente da capire se il file è stato modificato e cda chiedere se lo si vuole ricaricare nell'editor interno, che presentando alcune limitazioni non è proprio adatto a gestire codici organizzati in modo articolato.

Io ad esempio uso Emacs con una serie si aiuti alla programmazione Python (OK è antico e complicato, ma funziona a meraviglia ed è veloce) e modifico i programmi da lì, poi quando salvo su disco la nuova versione, FC mi chiede se volgio caricare la nuova versione e con un paio di click (uno per confermare la ricarica e l'altro per rilanciare l'esecuzione) rieseguo il programma.

Le Macro sono accessibili dal sottomenu e le si può eseguire da lì oppure associare come si e detto sopra.

Disintguere tra i due modi di utilizzo è veramente sottile:

- Una Macro in genere usa delle selezioni che vengono effettuate usando la GUI e poi "elabora" gli elementi selezionati compiedno operazioni su di essi.
- Uno script in genere non è legato alle selezioni e opera in modo separato da eventuali file caricati.

Alcui esempi di script.

Intersect2d
https://forum.freecadweb.org/viewtopic.php?f=22&t=66330

Engine Wheels
https://forum.freecadweb.org/viewtopic.php?f=22&t=65308

BRepOffsetAPI.makePipeShell usage
https://forum.freecadweb.org/viewtopic.php?f=22&t=65467

Use of Geom2D and Part.BRepOffsetAPI.MakePipeShell() to make Threads
https://forum.freecadweb.org/viewtopic.php?f=22&t=65875

Part.Geom2d how is working?
https://forum.freecadweb.org/viewtopic.php?f=22&t=65844

Parametric surfaces
https://forum.freecadweb.org/viewtopic.php?f=22&t=72913

Asm4 tutorial scripted.
https://forum.freecadweb.org/viewtopic. ... 24#p628824

[Finished] Part Design - Scripting "Basic Part Design Tutorial" - Comments welcomed
https://forum.freecadweb.org/viewtopic.php?f=22&t=72207

Position a Solid in the 3d space, some findings.
https://forum.freecadweb.org/viewtopic.php?f=22&t=73446

Purtroppo solo in Inglese, ma in genere i miei script sono funzionanti e indipendenti da file da caricare come modelli, in genere creano cose e documenti di FreeCAD.

Se qualcosa non è chiaro, basta chiedere.

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