Quelques macros disponibles
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Be nice to others! Read the FreeCAD code of conduct!
Re: Quelques macros disponibles
Salut. Est-ce que tu peux copier le message d'erreur en entier ?
Dans tous les cas ça ne changera pas grand chose dans ce cas, puisque la macro n'est pas dispo dans l'addon manager. Il faut que tu la télécharges dans le post au-dessus, et tu l'enregistres dans %APPDATA%\FreeCAD\Macro\
Dans tous les cas ça ne changera pas grand chose dans ce cas, puisque la macro n'est pas dispo dans l'addon manager. Il faut que tu la télécharges dans le post au-dessus, et tu l'enregistres dans %APPDATA%\FreeCAD\Macro\
- papyblaise
- Veteran
- Posts: 8026
- Joined: Thu Jun 13, 2019 4:28 pm
- Location: France
Re: Quelques macros disponibles
voilà
"09:09:50 GitPython n'est pas installé. Impossible de récupérer les macros depuis git"
et pis je vieilli : j'arrive pas à trouver ce fichier
Edit ça yest j'ai trouver où la mettre , je la vois dans la liste , mais quand je lance , Nib / Nadah / quedall je vai me balader
"09:09:50 GitPython n'est pas installé. Impossible de récupérer les macros depuis git"
et pis je vieilli : j'arrive pas à trouver ce fichier
tu peu me rappeler le chemin complet%APPDATA%\FreeCAD\Macro\
Edit ça yest j'ai trouver où la mettre , je la vois dans la liste , mais quand je lance , Nib / Nadah / quedall je vai me balader
Re: Quelques macros disponibles
C'est normal qu'il ne se passe rien au lancement (enfin rien de visible en fait). Ensuite il faut double-cliquer sur l'onglet de la vue que tu veux séparer.papyblaise wrote: ↑Fri Jul 31, 2020 7:11 am Edit ça yest j'ai trouver où la mettre , je la vois dans la liste , mais quand je lance , Nib / Nadah / quedall je vai me balader
Re: Quelques macros disponibles
Bonjour
voila tout ce qui s'affiche et l'installation se fait malgrés tout
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.22130 (Git)
Build type: Release
Branch: master
Hash: dc65b055e5143a7d7349520da466d4d722df57e8
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
mario
voila tout ce qui s'affiche et l'installation se fait malgrés tout
OS: Windows 10 (10.0)Failed to initialize: Bad git executable.
The git executable must be specified in one of the following ways:
- be included in your $PATH
- be set via $GIT_PYTHON_GIT_EXECUTABLE
- explicitly set via git.refresh()
All git commands will error until this is rectified.
This initial warning can be silenced or aggravated in the future by setting the
$GIT_PYTHON_REFRESH environment variable. Use one of the following values:
- quiet|q|silence|s|none|n|0: for no warning or exception
- warn|w|warning|1: for a printed warning
- error|e|raise|r|2: for a raised exception
Example:
export GIT_PYTHON_REFRESH=quiet
GitPython est introuvable. Utilisation du téléchargement standard.
Downloading https://github.com/tomate44/CurvesWB/archive/master.zip
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.22130 (Git)
Build type: Release
Branch: master
Hash: dc65b055e5143a7d7349520da466d4d722df57e8
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
pourquoi ne pas créer de page dans le wiki ? elles seront directement installables
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.
My macros on Gist.github here complete macros Wiki and forum.
- papyblaise
- Veteran
- Posts: 8026
- Joined: Thu Jun 13, 2019 4:28 pm
- Location: France
Re: Quelques macros disponibles
C'est génial , mes neurones se sont enfin éveillées , et tu peu m^me en mettre plusieurs
Petits conseils à ceusses qui sont un peu moins bourrin que moi mais qui chercheraient quand même :
Dabord mettre Windows sur écran multiple et option "Étendu" , relier son 2em écran ou télé par câble HDMI et mettre sa télé sur Imput = HDMI
ouvrir 2 fichiers Fc ; sur celui qu'on veu mettre à gauche , lancer la macro et double clicker sur son onglet en bas de l'écran , l'image va apparaitre reduite , la faire glisser à la souris vers l'autre écran , rétablir sa taille ou pas , parcequ'on peu renouveler l'op et placer plusieurs document en vignette
Dans Fc on peu importer plusieurs type de fichier tu peu ainsi ouvrir une feuille de calcul pour avoir un équivalent de calculette toujours ouvert , un autre dessin importer , ou la photo de ta dernière (petite fille , pas conquette , quoi que...)
j"'espère que l'inventeur y avait pensé
ce descriptif pourrait presque être un début de Wiki , malheureusement je sai pas les faire
aller une petite dernière pour la route :
ça fait des siècles (le dernier + celui-ci) que les adepte de Windows aimeraient bien une telle fonction .... y aurait - il moyen , celui qui la fait , il dépose l'appli et il prend sa retraite même à 20ans
Petits conseils à ceusses qui sont un peu moins bourrin que moi mais qui chercheraient quand même :
Dabord mettre Windows sur écran multiple et option "Étendu" , relier son 2em écran ou télé par câble HDMI et mettre sa télé sur Imput = HDMI
ouvrir 2 fichiers Fc ; sur celui qu'on veu mettre à gauche , lancer la macro et double clicker sur son onglet en bas de l'écran , l'image va apparaitre reduite , la faire glisser à la souris vers l'autre écran , rétablir sa taille ou pas , parcequ'on peu renouveler l'op et placer plusieurs document en vignette
Dans Fc on peu importer plusieurs type de fichier tu peu ainsi ouvrir une feuille de calcul pour avoir un équivalent de calculette toujours ouvert , un autre dessin importer , ou la photo de ta dernière (petite fille , pas conquette , quoi que...)
j"'espère que l'inventeur y avait pensé
ce descriptif pourrait presque être un début de Wiki , malheureusement je sai pas les faire
aller une petite dernière pour la route :
ça fait des siècles (le dernier + celui-ci) que les adepte de Windows aimeraient bien une telle fonction .... y aurait - il moyen , celui qui la fait , il dépose l'appli et il prend sa retraite même à 20ans
- papyblaise
- Veteran
- Posts: 8026
- Joined: Thu Jun 13, 2019 4:28 pm
- Location: France
Re: Quelques macros disponibles
je viens de découvrir une peccadille : quand ma télé est déconnectée du Pc , le pointeur de la souris lui ne sais pas que la télé n'est plus là , et il disparait sur le coté , au début , je me demandais pourquoi il avait disparut
- papyblaise
- Veteran
- Posts: 8026
- Joined: Thu Jun 13, 2019 4:28 pm
- Location: France
Re: Quelques macros disponibles
je m amuse avec ça (faut bien que vieillesse se passe)
autre truc rigolo si tu fais une copie d'écran avec l'outil capture : il sétend aux 2
à gauche mon Pc , à droite avec le cadre noir : ma télé avec un tableau Excel , un objet Fc et en fond ma p'tite dernière
et j'ai oublié de tester la touche "capture écran" ça sera pour un autre jour
Aller à chio
autre truc rigolo si tu fais une copie d'écran avec l'outil capture : il sétend aux 2
à gauche mon Pc , à droite avec le cadre noir : ma télé avec un tableau Excel , un objet Fc et en fond ma p'tite dernière
et j'ai oublié de tester la touche "capture écran" ça sera pour un autre jour
Aller à chio
- Attachments
-
- 2 écrans.PNG (321.21 KiB) Viewed 803 times
Re: Quelques macros disponibles
Autre macro pour ceux qui utilisent plusieurs workbenches et qui ne souhaitent pas créer des barres d'outils personnalisées pour tous les cas.
La macro attachée, une fois lancée, ouvrira une fenêtre avec la liste des commandes disponibles en appuyant sur 'Meta+Espace' (Meta c'est la touche avec le symbole Windows).
Les commandes disponibles sont les commandes globales + le workbench en cours + tous les workbenches qui ont été ouvert au moins une fois depuis le lancement de FreeCAD (oui, c'est comme ça que FreeCAD marche). Typiquement dans l'exemple ci-dessous, j'ai ouvert Draft et Part avant de passer dans PartDesign pour que les commandes des 2 premiers soient accessibles. Et oui, il faut connaitre les noms des commandes en anglais.
La macro attachée, une fois lancée, ouvrira une fenêtre avec la liste des commandes disponibles en appuyant sur 'Meta+Espace' (Meta c'est la touche avec le symbole Windows).
Les commandes disponibles sont les commandes globales + le workbench en cours + tous les workbenches qui ont été ouvert au moins une fois depuis le lancement de FreeCAD (oui, c'est comme ça que FreeCAD marche). Typiquement dans l'exemple ci-dessous, j'ai ouvert Draft et Part avant de passer dans PartDesign pour que les commandes des 2 premiers soient accessibles. Et oui, il faut connaitre les noms des commandes en anglais.
- Attachments
-
- cmdRunner.FCMacro
- (1.7 KiB) Downloaded 19 times
Re: Quelques macros disponibles
J'ai fait 2 macro:
-LameCurve qui permet de faire des courbes de Lamé:
scircle (cercle carré), super ellipse, astroid.
https://en.wikipedia.org/wiki/Superellipse
-Chicken qui permet de faire un oeuf.
Pas tout a fait finies: je souhaiterais que les objets soit centrés sur un point (vertex).
-LameCurve qui permet de faire des courbes de Lamé:
scircle (cercle carré), super ellipse, astroid.
https://en.wikipedia.org/wiki/Superellipse
-Chicken qui permet de faire un oeuf.
Pas tout a fait finies: je souhaiterais que les objets soit centrés sur un point (vertex).
Code: Select all
from __future__ import division
import FreeCAD, Part, math, Draft
from FreeCAD import Base
from math import pi
# Lame Curve on 2 points on XY.
# https://en.wikipedia.org/wiki/Superellipse
class LameCurveOnPoint:
def __init__(self, obj,a,b,c,d):
obj.addProperty("App::PropertyFloat","n","Curve","0-1: Astroid 1:Diamond 2:Ellipse 2+:SuperOeuf 4+:Squircle").n = 4.0
obj.addProperty("App::PropertyInteger","Iterations","Curve","Number of iterations by quadrant. Smooths the curve").Iterations = 100
obj.addProperty("App::PropertyFloat","AngleEnd","Curve","Angle end degree").AngleEnd = 90
obj.addProperty("App::PropertyFloat","AngleStart","Curve","Angle start degree").AngleStart = 0
obj.addProperty("App::PropertyBool","CreateFace","Curve","Wheter to create a face or not").CreateFace = False
obj.addProperty("App::PropertyBool","ForceClose","Curve","Help to close the curve").ForceClose = False
obj.addProperty("App::PropertyFloat","x1","Vertex Start","").x1 = a
obj.addProperty("App::PropertyFloat","y1","Vertex Start","").y1 = b
obj.addProperty("App::PropertyFloat","x2","Vertex End","").x2 = c
obj.addProperty("App::PropertyFloat","y2","Vertex End","").y2 = d
obj.Proxy = self
def onChanged(self, obj, prop):
if prop == "n" or prop == "Iterations" or prop == "AngleStart" or prop=="AngleEnd":
self.execute(obj)
def execute(self, obj):
a = obj.x1
b = obj.y1
a2 = obj.x2
b2 = obj.y2
if obj.n <= 0:
obj.n = 0.1
K = obj.n
if obj.AngleStart > 90:
obj.AngleStart = 90
tmax = math.radians(obj.AngleEnd)
intv = (math.radians(obj.AngleEnd)-math.radians(obj.AngleStart))/((obj.Iterations))
matriz = []
t = math.radians(obj.AngleStart)
x0 = (a*math.cos(t)**(2/K)).real
y0 = (b*math.sin(t)**(2/K)).real
while t<(pi/2) and t<tmax:
x = (a*math.cos(t)**(2/K)).real
y = (b*math.sin(t)**(2/K)).real
matriz.append(Base.Vector(x,y,0))
t += intv
t2 = pi/2
while t<pi and t<tmax:
x = (a2*math.cos(t2)**(2/K)).real
y = (b*math.sin(t2)**(2/K)).real
matriz.append(Base.Vector(x,y,0))
t2-= intv
t +=intv
t2 = 0
while t<(3*pi/2) and t<tmax:
x = (a2*math.cos(t2)**(2/K)).real
y = (b2*math.sin(t2)**(2/K)).real
matriz.append(Base.Vector(x,y,0))
t2 += intv
t += intv
t2 = pi/2
while t<(2*pi) and t<tmax:
x = (a*math.cos(t2)**(2/K)).real
y = (b2*math.sin(t2)**(2/K)).real
matriz.append(Base.Vector(x,y,0))
t += intv
t2 -= intv
curve = Part.BSplineCurve(matriz)
# curve.interpolate(matriz)
if obj.ForceClose == True:
curve.setPeriodic()
if obj.CreateFace == True:
pt1 = Base.Vector(x,y,0)
pt2 = Base.Vector(x0,y0,0)
ligne = Part.LineSegment(pt1,pt2)
edge = ligne.toShape()
courbe = curve.toShape()
wire = Part.Wire([courbe, edge])
sh = Part.Face(Part.Wire(wire))
else:
sh = curve.toShape()
sh.Placement = obj.Placement
obj.Shape = sh
def MakeLameCurve():
doc = FreeCAD.activeDocument()
if doc == None:
doc = FreeCAD.newDocument()
obj=doc.addObject("Part::FeaturePython","LameCurve")
try:
# deux points de deux objets
a = Gui.Selection.getSelectionEx()[0].SubObjects[0].Point.x
b = Gui.Selection.getSelectionEx()[0].SubObjects[0].Point.y
c = Gui.Selection.getSelectionEx()[1].SubObjects[0].Point.x
d = Gui.Selection.getSelectionEx()[1].SubObjects[0].Point.y
except:
try:
# deux points d'un seul objet
a = Gui.Selection.getSelectionEx()[0].SubObjects[0].Point.x
b = Gui.Selection.getSelectionEx()[0].SubObjects[0].Point.y
c = Gui.Selection.getSelectionEx()[0].SubObjects[1].Point.x
d = Gui.Selection.getSelectionEx()[0].SubObjects[1].Point.y
except:
a = 1
b = 1
c = -1
d = -1
LameCurveOnPoint(obj,a,b,c,d)
obj.ViewObject.Proxy=0
viewObject = Gui.ActiveDocument.getObject(obj.Name)
viewObject.DisplayMode = "Flat Lines"
MakeLameCurve()
Code: Select all
from __future__ import division
import FreeCAD, Part, math, Draft
from FreeCAD import Base
from math import pi
# a faire: ajouter d'autre type d'ovoide
class OvoideShape:
def __init__(self, obj):
obj.addProperty("App::PropertyFloat","RadiusA","Parameters","Set radius on X axle").RadiusA = 3.0
obj.addProperty("App::PropertyFloat","RadiusB","Parameters","Set radius on Y axle").RadiusB = 2.0
obj.addProperty("App::PropertyFloat","K","Parameters","Coefficient").K = 0.3
obj.addProperty("App::PropertyInteger","Iterations","Curve","Number of iterations. Smooths the curve").Iterations = 20
obj.addProperty("App::PropertyBool","CreateFace","Curve","Wheter to create a face or not").CreateFace = False
obj.addProperty("App::PropertyFloat","End","Curve","Angle end degree").End = 180
obj.addProperty("App::PropertyFloat","Start","Curve","Angle start degree").Start = 0
obj.Proxy = self
def onChanged(self, obj, prop):
if prop == "RadiusA" or prop == "RadiusB" or prop == "K" or prop == "Iterations" or prop == "CreateFace" or prop == "Start" or prop == "End":
self.execute(obj)
def execute(self, obj):
a = obj.RadiusA
b = obj.RadiusB
c = obj.K
sr = obj.Start *pi/180
er = obj.End *pi/180
intv = (er-sr) / obj.Iterations
matriz = []
t = sr
x0 = a*math.cos(t)+c*math.cos(2*t)
y0 = b*math.sin(t)
for i in range(obj.Iterations+1):
x = a*math.cos(t)+c*math.cos(2*t)
y = b*math.sin(t)
matriz.append(Base.Vector(x,y,0))
t+= intv
curve = Part.BSplineCurve()
curve.interpolate(matriz)
if obj.CreateFace == True:
pt1 = Base.Vector(x,y,0)
pt2 = Base.Vector(x0,y0,0)
ligne = Part.LineSegment(pt1,pt2)
edge = ligne.toShape()
courbe = curve.toShape()
wire = Part.Wire([courbe, edge])
sh = Part.Face(Part.Wire(wire))
else:
sh = curve.toShape()
obj.Shape = sh
sh.Placement = obj.Placement
def MakeEgg():
doc = FreeCAD.activeDocument()
if doc == None:
doc = FreeCAD.newDocument()
obj=doc.addObject("Part::FeaturePython","Egg")
OvoideShape(obj)
obj.ViewObject.Proxy=0
viewObject = Gui.ActiveDocument.getObject(obj.Name)
viewObject.DisplayMode = "Flat Lines"
def IsActive(self):
if FreeCAD.ActiveDocument == None:
return False
else:
return True
MakeEgg()