Macro Corner shapes wizard

From FreeCAD Documentation
Revision as of 08:59, 19 September 2013 by Mario52 (talk | contribs) (remplacement des balise <pre> par <syntaxhighlight>)

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 :