Macro Corner shapes wizard/fr: Difference between revisions

From FreeCAD Documentation
m (retrait des espaces)
(Created page with "Ici la macro upgradéé version modifiée avec changement d'interface GUI.")
 
(25 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
=Macro_Corner_shapes_wizard/fr=
{{Macro/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}}
|Name=Corner shapes wizard
|Icon=Macro_Corner_shapes_wizard.png
|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.<br/>Cette macro utilise l'atelier Drawing
|Author=Nicotuf
|Version=1.0
|Date=2011-08-01
|FCVersion= <= 0.17
|Download=[https://www.freecadweb.org/wiki/images/6/60/Macro_Corner_shapes_wizard.png ToolBar Icon]
}}


==Description==
<syntaxhighlight>
# -*- coding:utf-8 -*-


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.

Ici la macro upgradéé [[Macro_Corner_shapes_wizard/update/fr|version modifiée]] avec changement d'interface GUI.

[[File:CornerShape1.png]]

==Script==

ToolBar Icon [[Image:Macro_Corner_shapes_wizard.png]]

'''Macro_Corner_shapes_wizard.FCMacro'''

<!--NOT CHANGE THE <pre> </pre> BALISE CAUSE THE PIPE IN MACRO CODE CUT THE MACRO-->
<pre>
# -*- coding:utf-8 -*-
#####################################
#####################################
# Importation de fonctions externes :
# Importation de fonctions externes :

#from os import *
#from os import *
import FreeCAD, FreeCADGui, Part, Draft, math, MeshPart, Mesh, Drawing
import FreeCAD, FreeCADGui, Part, Draft, math, MeshPart, Mesh, Drawing
from PyQt4 import QtGui,QtCore
#from PyQt4 import QtGui,QtCore
from PySide import QtGui,QtCore
from FreeCAD import Base
from FreeCAD import Base
App=FreeCAD
App=FreeCAD
Gui=FreeCADGui
Gui=FreeCADGui

##################################
##################################
# Défnition Class :
# Défnition Class :

class Corniere:
class Corniere:
def __init__(self, obj):
def __init__(self, obj):
Line 26: Line 51:
obj.addProperty("App::PropertyLength","Longueur","Corniere","Longueur").Longueur=200.0
obj.addProperty("App::PropertyLength","Longueur","Corniere","Longueur").Longueur=200.0
obj.Proxy = self
obj.Proxy = self

def execute(self, fp):
def execute(self, fp):
P1=Base.Vector(fp.e1,fp.e1,0)
P1=Base.Vector(fp.e1,fp.e1,0)
Line 32: Line 57:
S2=Part.makeBox(fp.L1-fp.e1,fp.L2-fp.e1,fp.Longueur,P1)
S2=Part.makeBox(fp.L1-fp.e1,fp.L2-fp.e1,fp.Longueur,P1)
fp.Shape=S1.cut(S2)
fp.Shape=S1.cut(S2)

##################################
##################################
# Défnition locale de fonctions :
# Défnition locale de fonctions :


def proceed():
def proceed():
QtGui.qApp.setOverrideCursor(QtCore.Qt.WaitCursor)
QtGui.qApp.setOverrideCursor(QtCore.Qt.WaitCursor)

if FreeCAD.ActiveDocument==None:
if FreeCAD.ActiveDocument==None:
FreeCAD.newDocument("Corniere")
FreeCAD.newDocument("Corniere")

oldDocumentObjects=App.ActiveDocument.Objects
oldDocumentObjects=App.ActiveDocument.Objects

try:
try:
QL1 = float(l1.text())
QL1 = float(l1.text())
Line 52: Line 77:
except:
except:
FreeCAD.Console.PrintError("Wrong input! Only numbers allowed...\n")
FreeCAD.Console.PrintError("Wrong input! Only numbers allowed...\n")

Cor=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Corniere")
Cor=FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Corniere")
Corniere(Cor)
Corniere(Cor)
Line 60: Line 85:
Cor.e1=Qe
Cor.e1=Qe
Cor.Longueur=QLongueur
Cor.Longueur=QLongueur

App.ActiveDocument.recompute()
App.ActiveDocument.recompute()
Gui.SendMsgToActiveView("ViewFit")
Gui.SendMsgToActiveView("ViewFit")

QtGui.qApp.restoreOverrideCursor()
QtGui.qApp.restoreOverrideCursor()
Plan(Cor)
Plan(Cor)
dialog.hide()
dialog.hide()

def hide():
def hide():

dialog.hide()
dialog.hide()

def Plan(obj):
def Plan(obj):

ObjetProjete=obj.Shape
ObjetProjete=obj.Shape

TailleX=ObjetProjete.BoundBox.XLength
TailleX=ObjetProjete.BoundBox.XLength
TailleY=ObjetProjete.BoundBox.YLength
TailleY=ObjetProjete.BoundBox.YLength
TailleZ=ObjetProjete.BoundBox.ZLength
TailleZ=ObjetProjete.BoundBox.ZLength

page = App.activeDocument().addObject('Drawing::FeaturePage','Page')
page = App.activeDocument().addObject('Drawing::FeaturePage','Page')
page.Template = App.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg'
page.Template = App.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg'
Line 91: Line 116:
vueprofil.Y = 50.0
vueprofil.Y = 50.0
page.addObject(vueprofil)
page.addObject(vueprofil)

vuegauche = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuegauche')
vuegauche = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuegauche')
vuegauche.Source = obj
vuegauche.Source = obj
Line 101: Line 126:
vuegauche.Y = 50.0
vuegauche.Y = 50.0
page.addObject(vuegauche)
page.addObject(vuegauche)

vuedessus = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuedessus')
vuedessus = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuedessus')
vuedessus.Source = obj
vuedessus.Source = obj
Line 111: Line 136:
vuedessus.Y = 50.0+TailleX/2+TailleY+TailleX
vuedessus.Y = 50.0+TailleX/2+TailleY+TailleX
page.addObject(vuedessus)
page.addObject(vuedessus)

vueiso = App.activeDocument().addObject('Drawing::FeatureViewPart','VueIso')
vueiso = App.activeDocument().addObject('Drawing::FeatureViewPart','VueIso')
vueiso.Source = obj
vueiso.Source = obj
Line 120: Line 145:
vueiso.Y = 7*TailleZ+3*TailleY
vueiso.Y = 7*TailleZ+3*TailleY
page.addObject(vueiso)
page.addObject(vueiso)

App.activeDocument().recompute()
App.activeDocument().recompute()

PageFile = open(page.PageResult,'r')
PageFile = open(page.PageResult,'r')
OutFile = open('temp.svg','w')
OutFile = open('temp.svg','w')
OutFile.write(PageFile.read())
OutFile.write(PageFile.read())
del OutFile,PageFile
del OutFile,PageFile

dialog = QtGui.QDialog()
dialog = QtGui.QDialog()
dialog.resize(200,200)
dialog.resize(200,200)
dialog.setWindowTitle("Corniere")
dialog.setWindowTitle("Corniere")
la = QtGui.QVBoxLayout(dialog)
la = QtGui.QVBoxLayout(dialog)

e1 = QtGui.QLabel("Dimensions de la corniere")
e1 = QtGui.QLabel("Dimensions de la corniere")
commentFont=QtGui.QFont("Arial",10,True)
commentFont=QtGui.QFont("Arial",10,True)
e1.setFont(commentFont)
e1.setFont(commentFont)
la.addWidget(e1)
la.addWidget(e1)

t1 = QtGui.QLabel("L1")
t1 = QtGui.QLabel("L1")
la.addWidget(t1)
la.addWidget(t1)
Line 145: Line 170:
l1.setText("20")
l1.setText("20")
la.addWidget(l1)
la.addWidget(l1)

t2 = QtGui.QLabel("L2")
t2 = QtGui.QLabel("L2")
la.addWidget(t2)
la.addWidget(t2)
Line 151: Line 176:
l2.setText("20")
l2.setText("20")
la.addWidget(l2)
la.addWidget(l2)

t3 = QtGui.QLabel("e")
t3 = QtGui.QLabel("e")
la.addWidget(t3)
la.addWidget(t3)
Line 157: Line 182:
l3.setText("2")
l3.setText("2")
la.addWidget(l3)
la.addWidget(l3)

t4 = QtGui.QLabel("Longueur")
t4 = QtGui.QLabel("Longueur")
la.addWidget(t4)
la.addWidget(t4)
Line 163: Line 188:
l4.setText("300")
l4.setText("300")
la.addWidget(l4)
la.addWidget(l4)

okbox = QtGui.QDialogButtonBox(dialog)
okbox = QtGui.QDialogButtonBox(dialog)
okbox.setOrientation(QtCore.Qt.Horizontal)
okbox.setOrientation(QtCore.Qt.Horizontal)
Line 172: Line 197:
QtCore.QMetaObject.connectSlotsByName(dialog)
QtCore.QMetaObject.connectSlotsByName(dialog)
dialog.show()
dialog.show()
</syntaxhighlight>


</pre>
{{languages/fr | {{en|Macro_Corner_shapes_wizard}} {{es|Macro_Corner_shapes_wizard/es}} {{it|Macro_Corner_shapes_wizard/it}} }}
{{clear}}

Latest revision as of 14:12, 24 July 2019

Other languages:

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.
Cette macro utilise l'atelier Drawing

Version macro : 1.0
Date dernière modification : 2011-08-01
Version FreeCAD : <= 0.17
Téléchargement : ToolBar Icon
Auteur: Nicotuf
Auteur
Nicotuf
Téléchargement
ToolBar Icon
Liens
Version Macro
1.0
Dernière modification
2011-08-01
Version(s) FreeCAD
<= 0.17
Raccourci clavier
None
Voir aussi
None

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.

Ici la macro upgradéé version modifiée avec changement d'interface GUI.

Script

ToolBar Icon

Macro_Corner_shapes_wizard.FCMacro

# -*- 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 PySide 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()