Macro Corner shapes wizard/fr: Difference between revisions

From FreeCAD Documentation
m (remplacement des balise <pre> par <syntaxhighlight>)
m (retrait des espaces)
Line 3: Line 3:


<syntaxhighlight>
<syntaxhighlight>
# -*- coding:utf-8 -*-
# -*- 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 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):
obj.addProperty("App::PropertyLength","L1","Corniere","Largeur 1").L1=20.0
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","L2","Corniere","Largeur 2").L2=20.0
obj.addProperty("App::PropertyLength","e1","Corniere","Epaisseur 1").e1=2.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","e2","Corniere","Epaisseur 2").e2=2.0
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)
S1=Part.makeBox(fp.L1,fp.L2,fp.Longueur)
S1=Part.makeBox(fp.L1,fp.L2,fp.Longueur)
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())
QL2 = float(l2.text())
QL2 = float(l2.text())
Qe = float(l3.text())
Qe = float(l3.text())
QLongueur = float(l4.text())
QLongueur = float(l4.text())
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)
Cor.ViewObject.Proxy=0
Cor.ViewObject.Proxy=0
Cor.L1=QL1
Cor.L1=QL1
Cor.L2=QL2
Cor.L2=QL2
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'
vueprofil = App.activeDocument().addObject('Drawing::FeatureViewPart','VueProfil')
vueprofil = App.activeDocument().addObject('Drawing::FeatureViewPart','VueProfil')
vueprofil.Source = obj
vueprofil.Source = obj
vueprofil.Direction = (0.0,0.0,1.0)
vueprofil.Direction = (0.0,0.0,1.0)
vueprofil.Scale = 1.0
vueprofil.Scale = 1.0
vueprofil.X = 50.0
vueprofil.X = 50.0
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
vuegauche.Direction = (-1.0,0.0,0.0)
vuegauche.Direction = (-1.0,0.0,0.0)
vuegauche.ShowHiddenLines = True
vuegauche.ShowHiddenLines = True
vuegauche.Scale = 1.0
vuegauche.Scale = 1.0
vuegauche.Rotation = 180.0
vuegauche.Rotation = 180.0
vuegauche.X = 50.0+TailleX/2+TailleX
vuegauche.X = 50.0+TailleX/2+TailleX
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
vuedessus.Direction = (0.0,-1.0,0.0)
vuedessus.Direction = (0.0,-1.0,0.0)
vuedessus.ShowHiddenLines = True
vuedessus.ShowHiddenLines = True
vuedessus.Scale = 1.0
vuedessus.Scale = 1.0
vuedessus.Rotation = 180.0
vuedessus.Rotation = 180.0
vuedessus.X = 50.0+TailleX/2+TailleX
vuedessus.X = 50.0+TailleX/2+TailleX
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
vueiso.Direction = (-1.0,-1.0,0.5)
vueiso.Direction = (-1.0,-1.0,0.5)
vueiso.Scale = 1.0
vueiso.Scale = 1.0
vueiso.ShowSmoothLines = True
vueiso.ShowSmoothLines = True
vueiso.X = TailleZ+TailleX/2
vueiso.X = TailleZ+TailleX/2
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)
l1 = QtGui.QLineEdit()
l1 = QtGui.QLineEdit()
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)
l2 = QtGui.QLineEdit()
l2 = QtGui.QLineEdit()
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)
l3 = QtGui.QLineEdit()
l3 = QtGui.QLineEdit()
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)
l4 = QtGui.QLineEdit()
l4 = QtGui.QLineEdit()
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)
okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
la.addWidget(okbox)
la.addWidget(okbox)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), proceed)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), proceed)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), hide)
QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), hide)
QtCore.QMetaObject.connectSlotsByName(dialog)
QtCore.QMetaObject.connectSlotsByName(dialog)
dialog.show()
dialog.show()
</syntaxhighlight>
</syntaxhighlight>



Revision as of 09:00, 19 September 2013

Macro_Corner_shapes_wizard/fr

File:Text-x-python 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.

Auteur: Nicotuf
Auteur
Nicotuf
Téléchargement
None
Liens
Version Macro
1.0
Dernière modification
None
Version(s) FreeCAD
None
Raccourci clavier
None
Voir aussi
None

# -*- 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()
Traductions disponibles de cette page :