Macro Corner shapes wizard/fr: Difference between revisions
m (retrait des espaces) |
(Updating to match new version of source page) |
||
Line 1: | Line 1: | ||
{{Macro|Icon=Text-x-python|Name=Corner shapes wizard|Description=This macro is a complete application, it pops up a dialog asking for the dimensions of your corner piece, then creates the object in the document and creates a page view with top, front and lateral views of the piece.|Author=Nicotuf}} |
|||
=Macro_Corner_shapes_wizard/fr= |
|||
{{Macro/fr|Icon=Text-x-python|Name=Corner shapes wizard|Name/fr=Corner shapes wizard|Description=Cette macro est une application complète, il ouvre une boîte de dialogue demandant les dimensions angulaires de votre pièce, puis crée l'objet dans le document, et, crée une page avec les vues, de dessus, de face et latérale de la pièce.|Author=Nicotuf}} |
|||
This macro is a complete application, it pops up a dialog asking for the dimensions of your corner piece, then creates the object in the document and creates a page view with top, front and lateral views of the piece.<br /> |
|||
<syntaxhighlight> |
|||
There is a [https://sourceforge.net/apps/mediawiki/free-cad/index.php?title=Macro_Corner_shapes_wizard/update| modified version] with changes GUI. |
|||
# -*- coding:utf-8 -*- |
|||
##################################### |
|||
# Importation de fonctions externes : |
|||
<syntaxhighlight> |
|||
#from os import * |
|||
import FreeCAD, FreeCADGui, Part, Draft, math, MeshPart, Mesh, Drawing |
|||
from PyQt4 import QtGui,QtCore |
|||
from FreeCAD import Base |
|||
App=FreeCAD |
|||
Gui=FreeCADGui |
|||
################################## |
|||
# Défnition Class : |
|||
# -*- coding:utf-8 -*- |
|||
class Corniere: |
|||
def __init__(self, obj): |
|||
##################################### |
|||
obj.addProperty("App::PropertyLength","L1","Corniere","Largeur 1").L1=20.0 |
|||
# Importation de fonctions externes : |
|||
obj.addProperty("App::PropertyLength","L2","Corniere","Largeur 2").L2=20.0 |
|||
obj.addProperty("App::PropertyLength","e1","Corniere","Epaisseur 1").e1=2.0 |
|||
#from os import * |
|||
#obj.addProperty("App::PropertyLength","e2","Corniere","Epaisseur 2").e2=2.0 |
|||
import FreeCAD, FreeCADGui, Part, Draft, math, MeshPart, Mesh, Drawing |
|||
obj.addProperty("App::PropertyLength","Longueur","Corniere","Longueur").Longueur=200.0 |
|||
from PyQt4 import QtGui,QtCore |
|||
obj.Proxy = self |
|||
from FreeCAD import Base |
|||
App=FreeCAD |
|||
Gui=FreeCADGui |
|||
################################## |
|||
# Défnition Class : |
|||
class Corniere: |
|||
def __init__(self, obj): |
|||
obj.addProperty("App::PropertyLength","L1","Corniere","Largeur 1").L1=20.0 |
|||
obj.addProperty("App::PropertyLength","L2","Corniere","Largeur 2").L2=20.0 |
|||
obj.addProperty("App::PropertyLength","e1","Corniere","Epaisseur 1").e1=2.0 |
|||
#obj.addProperty("App::PropertyLength","e2","Corniere","Epaisseur 2").e2=2.0 |
|||
obj.addProperty("App::PropertyLength","Longueur","Corniere","Longueur").Longueur=200.0 |
|||
obj.Proxy = self |
|||
def execute(self, fp): |
|||
P1=Base.Vector(fp.e1,fp.e1,0) |
|||
S1=Part.makeBox(fp.L1,fp.L2,fp.Longueur) |
|||
S2=Part.makeBox(fp.L1-fp.e1,fp.L2-fp.e1,fp.Longueur,P1) |
|||
fp.Shape=S1.cut(S2) |
|||
################################## |
|||
# Défnition locale de fonctions : |
|||
def proceed(): |
|||
QtGui.qApp.setOverrideCursor(QtCore.Qt.WaitCursor) |
|||
if FreeCAD.ActiveDocument==None: |
|||
FreeCAD.newDocument("Corniere") |
|||
oldDocumentObjects=App.ActiveDocument.Objects |
|||
try: |
|||
QL1 = float(l1.text()) |
|||
QL2 = float(l2.text()) |
|||
Qe = float(l3.text()) |
|||
QLongueur = float(l4.text()) |
|||
except: |
|||
FreeCAD.Console.PrintError("Wrong input! Only numbers allowed...\n") |
|||
Cor=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Corniere") |
|||
Corniere(Cor) |
|||
Cor.ViewObject.Proxy=0 |
|||
Cor.L1=QL1 |
|||
Cor.L2=QL2 |
|||
Cor.e1=Qe |
|||
Cor.Longueur=QLongueur |
|||
App.ActiveDocument.recompute() |
|||
Gui.SendMsgToActiveView("ViewFit") |
|||
QtGui.qApp.restoreOverrideCursor() |
|||
Plan(Cor) |
|||
dialog.hide() |
|||
def hide(): |
|||
dialog.hide() |
|||
def Plan(obj): |
|||
ObjetProjete=obj.Shape |
|||
TailleX=ObjetProjete.BoundBox.XLength |
|||
TailleY=ObjetProjete.BoundBox.YLength |
|||
TailleZ=ObjetProjete.BoundBox.ZLength |
|||
page = App.activeDocument().addObject('Drawing::FeaturePage','Page') |
|||
page.Template = App.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg' |
|||
vueprofil = App.activeDocument().addObject('Drawing::FeatureViewPart','VueProfil') |
|||
vueprofil.Source = obj |
|||
vueprofil.Direction = (0.0,0.0,1.0) |
|||
vueprofil.Scale = 1.0 |
|||
vueprofil.X = 50.0 |
|||
vueprofil.Y = 50.0 |
|||
page.addObject(vueprofil) |
|||
vuegauche = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuegauche') |
|||
vuegauche.Source = obj |
|||
vuegauche.Direction = (-1.0,0.0,0.0) |
|||
vuegauche.ShowHiddenLines = True |
|||
vuegauche.Scale = 1.0 |
|||
vuegauche.Rotation = 180.0 |
|||
vuegauche.X = 50.0+TailleX/2+TailleX |
|||
vuegauche.Y = 50.0 |
|||
page.addObject(vuegauche) |
|||
vuedessus = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuedessus') |
|||
vuedessus.Source = obj |
|||
vuedessus.Direction = (0.0,-1.0,0.0) |
|||
vuedessus.ShowHiddenLines = True |
|||
vuedessus.Scale = 1.0 |
|||
vuedessus.Rotation = 180.0 |
|||
vuedessus.X = 50.0+TailleX/2+TailleX |
|||
vuedessus.Y = 50.0+TailleX/2+TailleY+TailleX |
|||
page.addObject(vuedessus) |
|||
vueiso = App.activeDocument().addObject('Drawing::FeatureViewPart','VueIso') |
|||
vueiso.Source = obj |
|||
vueiso.Direction = (-1.0,-1.0,0.5) |
|||
vueiso.Scale = 1.0 |
|||
vueiso.ShowSmoothLines = True |
|||
vueiso.X = TailleZ+TailleX/2 |
|||
vueiso.Y = 7*TailleZ+3*TailleY |
|||
page.addObject(vueiso) |
|||
App.activeDocument().recompute() |
|||
PageFile = open(page.PageResult,'r') |
|||
OutFile = open('temp.svg','w') |
|||
OutFile.write(PageFile.read()) |
|||
del OutFile,PageFile |
|||
dialog = QtGui.QDialog() |
|||
dialog.resize(200,200) |
|||
dialog.setWindowTitle("Corniere") |
|||
la = QtGui.QVBoxLayout(dialog) |
|||
e1 = QtGui.QLabel("Dimensions de la corniere") |
|||
commentFont=QtGui.QFont("Arial",10,True) |
|||
e1.setFont(commentFont) |
|||
la.addWidget(e1) |
|||
t1 = QtGui.QLabel("L1") |
|||
la.addWidget(t1) |
|||
l1 = QtGui.QLineEdit() |
|||
l1.setText("20") |
|||
la.addWidget(l1) |
|||
t2 = QtGui.QLabel("L2") |
|||
la.addWidget(t2) |
|||
l2 = QtGui.QLineEdit() |
|||
l2.setText("20") |
|||
la.addWidget(l2) |
|||
t3 = QtGui.QLabel("e") |
|||
la.addWidget(t3) |
|||
l3 = QtGui.QLineEdit() |
|||
l3.setText("2") |
|||
la.addWidget(l3) |
|||
t4 = QtGui.QLabel("Longueur") |
|||
la.addWidget(t4) |
|||
l4 = QtGui.QLineEdit() |
|||
l4.setText("300") |
|||
la.addWidget(l4) |
|||
okbox = QtGui.QDialogButtonBox(dialog) |
|||
okbox.setOrientation(QtCore.Qt.Horizontal) |
|||
okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) |
|||
la.addWidget(okbox) |
|||
QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), proceed) |
|||
QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), hide) |
|||
QtCore.QMetaObject.connectSlotsByName(dialog) |
|||
dialog.show() |
|||
def execute(self, fp): |
|||
P1=Base.Vector(fp.e1,fp.e1,0) |
|||
S1=Part.makeBox(fp.L1,fp.L2,fp.Longueur) |
|||
S2=Part.makeBox(fp.L1-fp.e1,fp.L2-fp.e1,fp.Longueur,P1) |
|||
fp.Shape=S1.cut(S2) |
|||
################################## |
|||
# Défnition locale de fonctions : |
|||
def proceed(): |
|||
QtGui.qApp.setOverrideCursor(QtCore.Qt.WaitCursor) |
|||
if FreeCAD.ActiveDocument==None: |
|||
FreeCAD.newDocument("Corniere") |
|||
oldDocumentObjects=App.ActiveDocument.Objects |
|||
try: |
|||
QL1 = float(l1.text()) |
|||
QL2 = float(l2.text()) |
|||
Qe = float(l3.text()) |
|||
QLongueur = float(l4.text()) |
|||
except: |
|||
FreeCAD.Console.PrintError("Wrong input! Only numbers allowed...\n") |
|||
Cor=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Corniere") |
|||
Corniere(Cor) |
|||
Cor.ViewObject.Proxy=0 |
|||
Cor.L1=QL1 |
|||
Cor.L2=QL2 |
|||
Cor.e1=Qe |
|||
Cor.Longueur=QLongueur |
|||
App.ActiveDocument.recompute() |
|||
Gui.SendMsgToActiveView("ViewFit") |
|||
QtGui.qApp.restoreOverrideCursor() |
|||
Plan(Cor) |
|||
dialog.hide() |
|||
def hide(): |
|||
dialog.hide() |
|||
def Plan(obj): |
|||
ObjetProjete=obj.Shape |
|||
TailleX=ObjetProjete.BoundBox.XLength |
|||
TailleY=ObjetProjete.BoundBox.YLength |
|||
TailleZ=ObjetProjete.BoundBox.ZLength |
|||
page = App.activeDocument().addObject('Drawing::FeaturePage','Page') |
|||
page.Template = App.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg' |
|||
vueprofil = App.activeDocument().addObject('Drawing::FeatureViewPart','VueProfil') |
|||
vueprofil.Source = obj |
|||
vueprofil.Direction = (0.0,0.0,1.0) |
|||
vueprofil.Scale = 1.0 |
|||
vueprofil.X = 50.0 |
|||
vueprofil.Y = 50.0 |
|||
page.addObject(vueprofil) |
|||
vuegauche = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuegauche') |
|||
vuegauche.Source = obj |
|||
vuegauche.Direction = (-1.0,0.0,0.0) |
|||
vuegauche.ShowHiddenLines = True |
|||
vuegauche.Scale = 1.0 |
|||
vuegauche.Rotation = 180.0 |
|||
vuegauche.X = 50.0+TailleX/2+TailleX |
|||
vuegauche.Y = 50.0 |
|||
page.addObject(vuegauche) |
|||
vuedessus = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuedessus') |
|||
vuedessus.Source = obj |
|||
vuedessus.Direction = (0.0,-1.0,0.0) |
|||
vuedessus.ShowHiddenLines = True |
|||
vuedessus.Scale = 1.0 |
|||
vuedessus.Rotation = 180.0 |
|||
vuedessus.X = 50.0+TailleX/2+TailleX |
|||
vuedessus.Y = 50.0+TailleX/2+TailleY+TailleX |
|||
page.addObject(vuedessus) |
|||
vueiso = App.activeDocument().addObject('Drawing::FeatureViewPart','VueIso') |
|||
vueiso.Source = obj |
|||
vueiso.Direction = (-1.0,-1.0,0.5) |
|||
vueiso.Scale = 1.0 |
|||
vueiso.ShowSmoothLines = True |
|||
vueiso.X = TailleZ+TailleX/2 |
|||
vueiso.Y = 7*TailleZ+3*TailleY |
|||
page.addObject(vueiso) |
|||
App.activeDocument().recompute() |
|||
PageFile = open(page.PageResult,'r') |
|||
OutFile = open('temp.svg','w') |
|||
OutFile.write(PageFile.read()) |
|||
del OutFile,PageFile |
|||
dialog = QtGui.QDialog() |
|||
dialog.resize(200,200) |
|||
dialog.setWindowTitle("Corniere") |
|||
la = QtGui.QVBoxLayout(dialog) |
|||
e1 = QtGui.QLabel("Dimensions de la corniere") |
|||
commentFont=QtGui.QFont("Arial",10,True) |
|||
e1.setFont(commentFont) |
|||
la.addWidget(e1) |
|||
t1 = QtGui.QLabel("L1") |
|||
la.addWidget(t1) |
|||
l1 = QtGui.QLineEdit() |
|||
l1.setText("20") |
|||
la.addWidget(l1) |
|||
t2 = QtGui.QLabel("L2") |
|||
la.addWidget(t2) |
|||
l2 = QtGui.QLineEdit() |
|||
l2.setText("20") |
|||
la.addWidget(l2) |
|||
t3 = QtGui.QLabel("e") |
|||
la.addWidget(t3) |
|||
l3 = QtGui.QLineEdit() |
|||
l3.setText("2") |
|||
la.addWidget(l3) |
|||
t4 = QtGui.QLabel("Longueur") |
|||
la.addWidget(t4) |
|||
l4 = QtGui.QLineEdit() |
|||
l4.setText("300") |
|||
la.addWidget(l4) |
|||
okbox = QtGui.QDialogButtonBox(dialog) |
|||
okbox.setOrientation(QtCore.Qt.Horizontal) |
|||
okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) |
|||
la.addWidget(okbox) |
|||
QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), proceed) |
|||
QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), hide) |
|||
QtCore.QMetaObject.connectSlotsByName(dialog) |
|||
dialog.show() |
|||
</syntaxhighlight> |
</syntaxhighlight> |
||
{{clear}} |
|||
<languages/> |
|||
{{languages/fr | {{en|Macro_Corner_shapes_wizard}} {{es|Macro_Corner_shapes_wizard/es}} {{it|Macro_Corner_shapes_wizard/it}} }} |
Revision as of 17:48, 25 December 2013
File:Text-x-python Corner shapes wizard |
Description |
---|
This macro is a complete application, it pops up a dialog asking for the dimensions of your corner piece, then creates the object in the document and creates a page view with top, front and lateral views of the piece. Author: Nicotuf |
Author |
Nicotuf |
Download |
None |
Links |
Macros recipes How to install macros How to customize toolbars |
Macro Version |
1.0 |
Date last modified |
None |
FreeCAD Version(s) |
None |
Default shortcut |
None |
See also |
None |
This macro is a complete application, it pops up a dialog asking for the dimensions of your corner piece, then creates the object in the document and creates a page view with top, front and lateral views of the piece.
There is a modified version with changes GUI.
# -*- coding:utf-8 -*-
#####################################
# Importation de fonctions externes :
#from os import *
import FreeCAD, FreeCADGui, Part, Draft, math, MeshPart, Mesh, Drawing
from PyQt4 import QtGui,QtCore
from FreeCAD import Base
App=FreeCAD
Gui=FreeCADGui
##################################
# Défnition Class :
class Corniere:
def __init__(self, obj):
obj.addProperty("App::PropertyLength","L1","Corniere","Largeur 1").L1=20.0
obj.addProperty("App::PropertyLength","L2","Corniere","Largeur 2").L2=20.0
obj.addProperty("App::PropertyLength","e1","Corniere","Epaisseur 1").e1=2.0
#obj.addProperty("App::PropertyLength","e2","Corniere","Epaisseur 2").e2=2.0
obj.addProperty("App::PropertyLength","Longueur","Corniere","Longueur").Longueur=200.0
obj.Proxy = self
def execute(self, fp):
P1=Base.Vector(fp.e1,fp.e1,0)
S1=Part.makeBox(fp.L1,fp.L2,fp.Longueur)
S2=Part.makeBox(fp.L1-fp.e1,fp.L2-fp.e1,fp.Longueur,P1)
fp.Shape=S1.cut(S2)
##################################
# Défnition locale de fonctions :
def proceed():
QtGui.qApp.setOverrideCursor(QtCore.Qt.WaitCursor)
if FreeCAD.ActiveDocument==None:
FreeCAD.newDocument("Corniere")
oldDocumentObjects=App.ActiveDocument.Objects
try:
QL1 = float(l1.text())
QL2 = float(l2.text())
Qe = float(l3.text())
QLongueur = float(l4.text())
except:
FreeCAD.Console.PrintError("Wrong input! Only numbers allowed...\n")
Cor=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Corniere")
Corniere(Cor)
Cor.ViewObject.Proxy=0
Cor.L1=QL1
Cor.L2=QL2
Cor.e1=Qe
Cor.Longueur=QLongueur
App.ActiveDocument.recompute()
Gui.SendMsgToActiveView("ViewFit")
QtGui.qApp.restoreOverrideCursor()
Plan(Cor)
dialog.hide()
def hide():
dialog.hide()
def Plan(obj):
ObjetProjete=obj.Shape
TailleX=ObjetProjete.BoundBox.XLength
TailleY=ObjetProjete.BoundBox.YLength
TailleZ=ObjetProjete.BoundBox.ZLength
page = App.activeDocument().addObject('Drawing::FeaturePage','Page')
page.Template = App.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg'
vueprofil = App.activeDocument().addObject('Drawing::FeatureViewPart','VueProfil')
vueprofil.Source = obj
vueprofil.Direction = (0.0,0.0,1.0)
vueprofil.Scale = 1.0
vueprofil.X = 50.0
vueprofil.Y = 50.0
page.addObject(vueprofil)
vuegauche = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuegauche')
vuegauche.Source = obj
vuegauche.Direction = (-1.0,0.0,0.0)
vuegauche.ShowHiddenLines = True
vuegauche.Scale = 1.0
vuegauche.Rotation = 180.0
vuegauche.X = 50.0+TailleX/2+TailleX
vuegauche.Y = 50.0
page.addObject(vuegauche)
vuedessus = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuedessus')
vuedessus.Source = obj
vuedessus.Direction = (0.0,-1.0,0.0)
vuedessus.ShowHiddenLines = True
vuedessus.Scale = 1.0
vuedessus.Rotation = 180.0
vuedessus.X = 50.0+TailleX/2+TailleX
vuedessus.Y = 50.0+TailleX/2+TailleY+TailleX
page.addObject(vuedessus)
vueiso = App.activeDocument().addObject('Drawing::FeatureViewPart','VueIso')
vueiso.Source = obj
vueiso.Direction = (-1.0,-1.0,0.5)
vueiso.Scale = 1.0
vueiso.ShowSmoothLines = True
vueiso.X = TailleZ+TailleX/2
vueiso.Y = 7*TailleZ+3*TailleY
page.addObject(vueiso)
App.activeDocument().recompute()
PageFile = open(page.PageResult,'r')
OutFile = open('temp.svg','w')
OutFile.write(PageFile.read())
del OutFile,PageFile
dialog = QtGui.QDialog()
dialog.resize(200,200)
dialog.setWindowTitle("Corniere")
la = QtGui.QVBoxLayout(dialog)
e1 = QtGui.QLabel("Dimensions de la corniere")
commentFont=QtGui.QFont("Arial",10,True)
e1.setFont(commentFont)
la.addWidget(e1)
t1 = QtGui.QLabel("L1")
la.addWidget(t1)
l1 = QtGui.QLineEdit()
l1.setText("20")
la.addWidget(l1)
t2 = QtGui.QLabel("L2")
la.addWidget(t2)
l2 = QtGui.QLineEdit()
l2.setText("20")
la.addWidget(l2)
t3 = QtGui.QLabel("e")
la.addWidget(t3)
l3 = QtGui.QLineEdit()
l3.setText("2")
la.addWidget(l3)
t4 = QtGui.QLabel("Longueur")
la.addWidget(t4)
l4 = QtGui.QLineEdit()
l4.setText("300")
la.addWidget(l4)
okbox = QtGui.QDialogButtonBox(dialog)
okbox.setOrientation(QtCore.Qt.Horizontal)
okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
la.addWidget(okbox)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), proceed)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), hide)
QtCore.QMetaObject.connectSlotsByName(dialog)
dialog.show()