Nuova versione Guida allo Scripting
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!
Nuova versione Guida allo Scripting
Buongiorno, dopo un lungo lavoro, ho pubblicato la versione 0.30 della guida.
Vi riporto il link al materiale.
Sarebbero molto graditi, commenti, e eventuali consigli su cosa è chiaro e su cosa non lo è, oltre che naturalmente correzione di errori ed inesattezze.
I commenti critici "sono molto apprezzati", quelli offensivi ovviamente di meno.
riporto il link alla pagina con il testo e i materiali allegati.
https://github.com/onekk/freecad-doc
Saluti
Carlo D.
Vi riporto il link al materiale.
Sarebbero molto graditi, commenti, e eventuali consigli su cosa è chiaro e su cosa non lo è, oltre che naturalmente correzione di errori ed inesattezze.
I commenti critici "sono molto apprezzati", quelli offensivi ovviamente di meno.
riporto il link alla pagina con il testo e i materiali allegati.
https://github.com/onekk/freecad-doc
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/
-
- Posts: 125
- Joined: Fri Sep 13, 2019 12:15 pm
Re: Nuova versione Guida allo Scripting
Salve, complimenti per l'ottimo lavoro.
Quando avrò bisogno di fare qualche cosa con gli script, al tua guida sarà la prima cosa che consulterò.
Ho iniziato a dare una occhiata ed ho notato queste piccole cose:
pag.12, nel piccolo esempio di codice per chiarire il punto 3, sembra che ci siano gli spazi attorno ai punti, è realmente cosi?
pag.14, per maggiore chiarezza dove si dice: Un nome che comincia con un carattere di “ ”, sarebbe meglio esplicitare, almeno la prima volta, che ci si rferisce al carattere cosiddetto "trattino basso"
pag.14, penultimo rigo: e d --> ed
Ancora complimenti.
Ciao
Quando avrò bisogno di fare qualche cosa con gli script, al tua guida sarà la prima cosa che consulterò.
Ho iniziato a dare una occhiata ed ho notato queste piccole cose:
pag.12, nel piccolo esempio di codice per chiarire il punto 3, sembra che ci siano gli spazi attorno ai punti, è realmente cosi?
pag.14, per maggiore chiarezza dove si dice: Un nome che comincia con un carattere di “ ”, sarebbe meglio esplicitare, almeno la prima volta, che ci si rferisce al carattere cosiddetto "trattino basso"
pag.14, penultimo rigo: e d --> ed
Ancora complimenti.
Ciao
Re: Nuova versione Guida allo Scripting
No usando il carattere monospace, come in genere è meglio fare quando si scrive il codice ogni carattere occupa lo stesso spazio per cui il punto è al centro del riquadro carattere.FCuser2019 wrote: ↑Tue May 12, 2020 11:52 am Salve, complimenti per l'ottimo lavoro.
Quando avrò bisogno di fare qualche cosa con gli script, al tua guida sarà la prima cosa che consulterò.
Ho iniziato a dare una occhiata ed ho notato queste piccole cose:
pag.12, nel piccolo esempio di codice per chiarire il punto 3, sembra che ci siano gli spazi attorno ai punti, è realmente cosi?
GrazieFCuser2019 wrote: ↑Tue May 12, 2020 11:52 am pag.14, per maggiore chiarezza dove si dice: Un nome che comincia con un carattere di “ ”, sarebbe meglio esplicitare, almeno la prima volta, che ci si rferisce al carattere cosiddetto "trattino basso"
GrazieFCuser2019 wrote: ↑Tue May 12, 2020 11:52 am pag.14, penultimo rigo: e d --> ed
Ancora complimenti.
Ciao
Ti ringrazio per le correzioni e per i complimenti, spero che sia chiaro, non farti scrupolo a segnalare parti oscure o anche solamente le tue impressioni, le critiche costruttive saranno sempre gradite.
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: Nuova versione Guida allo Scripting
salve, ultimamente i tuoi listati non funzionano perché manca la definizione a DOC
vedi output errore:
ecco l'errore preciso:
versione freecad:
grazie mille puoi sistemare?
grazie e buon inizio settimana.
vedi output errore:
Code: Select all
Traceback (most recent call last):
File "D:/nb-desktop/luigi/Documents/FreeCAD/onekk/aereo.py", line 99, in <module>
aeroplano()
File "D:/nb-desktop/luigi/Documents/FreeCAD/onekk/aereo.py", line 79, in aeroplano
obj1 = base_cyl('primo cilindro', 360, diam_fus, lung_fus)
File "D:/nb-desktop/luigi/Documents/FreeCAD/onekk/aereo.py", line 41, in base_cyl
obj = DOC.addObject("Part::Cylinder", nome)
<class 'NameError'>: name 'DOC' is not defined
Code: Select all
<class 'NameError'>: name 'DOC' is not defined
versione freecad:
Code: Select all
OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.21857 (Git)
Build type: Release
Branch: master
Hash: 750c169a6cb999f084915494f2fbec7c07297aae
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: Italian/Italy (it_IT)
grazie mille puoi sistemare?
grazie e buon inizio settimana.
Re: Nuova versione Guida allo Scripting
Ciao, innanzitutto grazie della segnalazione.
La guida ha subito una modifica importante, molti listati non hanno la parte iniziale che è comune, e porta via molte righe di codice, sprecando inutilmente spazio.
La cosa è citata chiaramente a pagina 26 della versione 0.31 pubblicata al link della guiida.
Infatti nella pagina 41 dove viene presentato il listato del primo esempio nella intestazione dello scirpt è indicato chiaramente:
Attenzione : Questo listato va usato aggiungeno le linee
da 18 in poi al codice presente in sc - base . py
E se non ho compiuto errori questo è riportato anche in tutti i listati pubblicati sullo stesso sito.
Dai numeri di linea degli errori mi pare che l'aggiunta dellle righe contenute nel file sc-base.py non sia stata fatta.
La modifica è stata fatta anche per evitare di dover correggere in tutti i listati le inizializzazione, che ahimè hanno creato alcuni problemi in quanto tra le varie versioni di sviluppo e per diversi sistemi operativi, alcuni costrutti potrebbero cambiare, specie nelle sezioni di definizione dei nomi dei file (che a volte se includono i percorsi diventano delicati e soggetti alla interpretazione dei vari separatori di percorso).
Alcune cose in teoria sono state risolte con python 3.8, ma non ci faccio molto affidamento in quanto ogni giorni vengono scoperte particolarità e incongruenze specie in ambiente Windows.
Purtroppo non dispongo di una versione di Windows 10 e quella per Windows 7 è chiaramente obsoleta in quanto ha raggiunto il fine vita e non viene più mantenuto.
Prossimamente aggiungerò ad ogni listato un numero di versione nell'header in modo da poterci districare meglio tra le varie versioni e migliorie.
Al momento non ci sto lavorando, però ho intenzione di tornarci presto sopra per la correzzione degli errori, aggiungerò una migliore segnalazione della particolarità, in quanto mi sono accorto rileggendo il testo per verificare la tua segnalazione che non sono stato abbastanza chiaro nel punto giusto.
Sono comunque a disposizione per ogni tuo altro dubbio e segnalazione.
Grazie molte
Carlo D.
La guida ha subito una modifica importante, molti listati non hanno la parte iniziale che è comune, e porta via molte righe di codice, sprecando inutilmente spazio.
La cosa è citata chiaramente a pagina 26 della versione 0.31 pubblicata al link della guiida.
Infatti nella pagina 41 dove viene presentato il listato del primo esempio nella intestazione dello scirpt è indicato chiaramente:
Attenzione : Questo listato va usato aggiungeno le linee
da 18 in poi al codice presente in sc - base . py
E se non ho compiuto errori questo è riportato anche in tutti i listati pubblicati sullo stesso sito.
Dai numeri di linea degli errori mi pare che l'aggiunta dellle righe contenute nel file sc-base.py non sia stata fatta.
La modifica è stata fatta anche per evitare di dover correggere in tutti i listati le inizializzazione, che ahimè hanno creato alcuni problemi in quanto tra le varie versioni di sviluppo e per diversi sistemi operativi, alcuni costrutti potrebbero cambiare, specie nelle sezioni di definizione dei nomi dei file (che a volte se includono i percorsi diventano delicati e soggetti alla interpretazione dei vari separatori di percorso).
Alcune cose in teoria sono state risolte con python 3.8, ma non ci faccio molto affidamento in quanto ogni giorni vengono scoperte particolarità e incongruenze specie in ambiente Windows.
Purtroppo non dispongo di una versione di Windows 10 e quella per Windows 7 è chiaramente obsoleta in quanto ha raggiunto il fine vita e non viene più mantenuto.
Prossimamente aggiungerò ad ogni listato un numero di versione nell'header in modo da poterci districare meglio tra le varie versioni e migliorie.
Al momento non ci sto lavorando, però ho intenzione di tornarci presto sopra per la correzzione degli errori, aggiungerò una migliore segnalazione della particolarità, in quanto mi sono accorto rileggendo il testo per verificare la tua segnalazione che non sono stato abbastanza chiaro nel punto giusto.
Sono comunque a disposizione per ogni tuo altro dubbio e segnalazione.
Grazie molte
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: Nuova versione Guida allo Scripting
ok, aggiunto le linee è partito ..
ma non si può fare una cosa tipo from scbase import *
etc..
grazie mille e buona giornata e grazie per la spiegazione.
ma non si può fare una cosa tipo from scbase import *
etc..
grazie mille e buona giornata e grazie per la spiegazione.
Re: Nuova versione Guida allo Scripting
Scusa il ritardo.
In teoria è possibile, però il meccanismo di importazione di librerie esterne a volte crea problemi, è una cosa complicata da vedere, ma succede.
Il workaround è molto più complicato di un semplice copia e incolla.
Ovviamente stiamo parlando di listati di test, per cui è meglio avere "tutto in un solo punto", ho cercato di semplificare la cosa anche per problemi di impaginazione, le linee ripetute all'inizio allungavano in modo considerevole il numero di pagine, e non aggiungevano nulla alla chiarezza del testo in quanto "routine di servizio".
Al momento non sono molto attivo sul forum in quanto impegnato altrove (realizzazioni e riparazioni in casa, per cui passo molto tempo a disegnare e tagliare pezzi con la CNC) però ogni tanto ci ripasso.
Saluti
Carlo D.
In teoria è possibile, però il meccanismo di importazione di librerie esterne a volte crea problemi, è una cosa complicata da vedere, ma succede.
Il workaround è molto più complicato di un semplice copia e incolla.
Ovviamente stiamo parlando di listati di test, per cui è meglio avere "tutto in un solo punto", ho cercato di semplificare la cosa anche per problemi di impaginazione, le linee ripetute all'inizio allungavano in modo considerevole il numero di pagine, e non aggiungevano nulla alla chiarezza del testo in quanto "routine di servizio".
Al momento non sono molto attivo sul forum in quanto impegnato altrove (realizzazioni e riparazioni in casa, per cui passo molto tempo a disegnare e tagliare pezzi con la CNC) però ogni tanto ci ripasso.
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: Nuova versione Guida allo Scripting
salve, sto studiano python base e le api di freecad.. vorrei sapere se questo è giusto come codice.. oltre vorrei sapere come faccio fare una serie di numeri che dopo il vector e rotation di freecad capisca in sequenza di trattarli come semplici numeri.
tipo posto il codice che vorrei fare una classe o modulo FreeCAD-zero.
ti posto il primo oggetto "cubo".
grazie vedi .. è testato sotto windows .. in linux non so come se la prenda.. perché ultimamente linux ubuntu mi fa schifo per i snap .. sapevo benissimo usare la 18.04 .. perché i programmi si aggiornavano tutti senza problemi, invece con i snap il mio pc è lentissimo ad aprire i programmi installati da snap etc..
ecco il codice:
tipo posto il codice che vorrei fare una classe o modulo FreeCAD-zero.
ti posto il primo oggetto "cubo".
grazie vedi .. è testato sotto windows .. in linux non so come se la prenda.. perché ultimamente linux ubuntu mi fa schifo per i snap .. sapevo benissimo usare la 18.04 .. perché i programmi si aggiornavano tutti senza problemi, invece con i snap il mio pc è lentissimo ad aprire i programmi installati da snap etc..
ecco il codice:
Code: Select all
import FreeCAD, Part
from FreeCAD import Base
doc = FreeCAD.ActiveDocument
class Cubo:
def __init__(self, name):
self.name = name
def crea(self,x,y,z):
self.x = x
self.y = y
self.z = z
App.ActiveDocument.addObject("Part::Box","" + self.name + "")
App.ActiveDocument.ActiveObject.Label = self.name
getattr(doc, self.name).Length = self.x
getattr(doc, self.name).Width = self.y
getattr(doc, self.name).Height= self.z
def setPlacement(self, yaw, pitch, roll, pos, x , y, z):
self.yaw = yaw
self.pitch = pitch
self.roll = roll
self.pos = pos
self.x = x
self.y = y
self.z = z
pos = getattr(doc, self.name).Placement.Base
rot = FreeCAD.Rotation(self.yaw, self.pitch, self.roll)
centre = FreeCAD.Vector(x,y,z)
newplace = FreeCAD.Placement(pos,rot,centre)
getattr(doc, self.name).Placement = newplace
def show(self):
App.ActiveDocument.recompute()
cubo1 = Cubo("cubo1")
cubo1.crea(10,10,10)
cubo1.setPlacement(2.3,10,20,30,0,0,0)
cubo1.show()
cubo2 = Cubo("cubo2")
cubo2.crea(30,40,50)
cubo2.setPlacement(2.3,10,20,30,0,0,0)
cubo2.show()
Re: Nuova versione Guida allo Scripting
Code: Select all
App.ActiveDocument.addObject("Part::Box","" + self.name + "")
App.ActiveDocument.ActiveObject.Label = self.name
Label viene automaticamente assegnata quando crei l'oggetto con il nome di self.name, Label ti serve per modificarla dopo la creazione.
Da qualche parte nella guida ho cercato di spiegare la differenza tra obj.Name e obj.Label
Non capisco la seconda parte della domanda
Se descrivi l'oggetto come classe, una volta creato te lo trovi seplicemente come oggetto "cubo" ma il "tuo oggetto" cubo, cioè un contenitore vuoto con assegnata la variabile self.name
una volta creato chiami miocubo.create e gli assegni alcune proprietà, però come esempio mi pare che sia inutilmente complicato, a meno che poi tu non debba creare routine più complesse, un semplice metodo basta e avanza.
Anche perché poi gli oggetti o li crei come oggetti documento e allora li puoi già richiamare con il nome e modificare le caratteristiche, per cui non serve mettere in piedi una classe così complessa.
Il succoi è cosa vuoi ottenere?
se vuoi passare altri valori all'interno della classe Cubo crei semplicmeente altre variabili ad esempio:
Code: Select all
class Cubo:
def __init__(self, name):
self.name = name
self.var1 = 0
self.var2 = ""
.... quello che vuoi va qui
def crea(self,x,y,z):
.... le tue classi
def valori_agg(self, var1, var2)
self.var1 = var1
self.var2 = var2
i tuoi valori self,vari1 e self.var2 vengono assegnati di conseguenza e li puoi trovare in:
obj = Cubo("Cubo1")
.... qui assegni i valori e poi li trovi in
var1_letto = obj.var1
var2_letto = obj.var2
ma nemmeno ti serve usare un metodo, se instazi in init la variabile,. poi ci accedi e la modifichi come vuoi semplicemente facendo:
obj.var1 = 10
obj.var2 = "stringa"
a meno di non dover effetture delle validazioni al momento dell'assegnazione è più veloce.
Spero di non aver travisato la tua richiesta.
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: Nuova versione Guida allo Scripting
Salve, .. vorrei sapere come posso mettere le coordinate della posizione e rotazione in uno script come questo...perché adesso sto andando tentativi e wiki su freecadweb.org anche se vedo ci sono pagine che fanno riferimento ad python 2.
ti mostro il codice:
Mi dici come fare?
grazie mille e buona notte e buona settimana.
ti mostro il codice:
Code: Select all
import FreeCAD
import Part
class Document():
def __init__(self, doc):
self.doc = doc
def create(self):
App.newDocument()
App.setActiveDocument("" + self.doc + "")
App.ActiveDocument=App.getDocument("" + self.doc + "")
Gui.ActiveDocument=Gui.getDocument("" + self.doc + "")
def refresh(self):
App.ActiveDocument.recompute()
Gui.SendMsgToActiveView("ViewFit")
Gui.activeDocument().activeView().viewIsometric()
class box():
def __init__(self, obj):
self.obj = obj
def create(self, height, length, width):
box = App.ActiveDocument.addObject("Part::Box", self.obj)
box.Height = height
box.Length = length
box.Width = width
def placement(self):
box.Placement = App.Placement(App.Vector(1,1,1),App.Rotation(0,0,0,1))
doc = Document("Unnamed")
doc.create()
box1 = box("box1")
box1.create(10,20,60)
box1.placement()
doc.refresh()
grazie mille e buona notte e buona settimana.