Difference between revisions of "Macro Corner shapes wizard/cs"

From FreeCAD Documentation
Jump to: navigation, search
m
 
(20 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Macro|Icon=Text-x-python|Name=Corner shapes wizard|Description=Toto makro je kompletní aplikace, vytvoří vyskakovací dailog pro zadání rozměrů rohového dílu, potom vytvoří objekt v dokumentu a vytvoří stránku s pohledem na díl shora, zepředu a z boku.|Author=Nicotuf}}
+
<languages/>
 +
{{Macro/cs
 +
|Name=Corner shapes wizard
 +
|Translate=Corner shapes wizard
 +
|Icon=Macro_Corner_shapes_wizard.png
 +
|Description=Toto makro je kompletní aplikace, vytvoří vyskakovací dailog pro zadání rozměrů rohového dílu, potom vytvoří objekt v dokumentu a vytvoří stránku s pohledem na díl shora, zepředu a z boku.<br/>This macro use the DrawingWorkBench
 +
|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]
 +
}}
  
Toto makro je kompletní aplikace, vytvoří vyskakovací dailog pro zadání rozměrů rohového dílu, potom vytvoří objekt v dokumentu a vytvoří stránku s pohledem na díl shora, zepředu a z boku.<br />
+
==Deskriptivní==
Na [http://www.freecadweb.org/wiki/index.php?title=Macro_Corner_shapes_wizard/update| této stránce ] je modifikovaná verze se změnami GUI.
 
  
 +
Toto makro je kompletní aplikace, vytvoří vyskakovací dailog pro zadání rozměrů rohového dílu, potom vytvoří objekt v dokumentu a vytvoří stránku s pohledem na díl shora, zepředu a z boku.
  
<syntaxhighlight>
+
Na [[Macro_Corner_shapes_wizard/update|modifikované verzi]] jsou změny GUI.
  
 +
[[File:CornerShape1.png]]
  
    # -*- coding:utf-8 -*-
+
==Skript==
 +
 
 +
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 FreeCAD import Base
+
from PySide import QtGui,QtCore
    App=FreeCAD
+
from FreeCAD import Base
    Gui=FreeCADGui
+
App=FreeCAD
 +
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)
 
     
 
      dialog.hide()
 
 
   
 
   
    def hide():
+
  Plan(Cor)
 
   
 
   
      dialog.hide()
+
  dialog.hide()
 
   
 
   
    def Plan(obj):
+
def hide():
 
   
 
   
      ObjetProjete=obj.Shape
+
  dialog.hide()
 
   
 
   
      TailleX=ObjetProjete.BoundBox.XLength
+
def Plan(obj):
      TailleY=ObjetProjete.BoundBox.YLength
 
      TailleZ=ObjetProjete.BoundBox.ZLength
 
 
   
 
   
      page = App.activeDocument().addObject('Drawing::FeaturePage','Page')
+
  ObjetProjete=obj.Shape
      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')
+
  TailleX=ObjetProjete.BoundBox.XLength
      vuegauche.Source = obj
+
  TailleY=ObjetProjete.BoundBox.YLength
      vuegauche.Direction = (-1.0,0.0,0.0)
+
  TailleZ=ObjetProjete.BoundBox.ZLength
      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')
+
  page = App.activeDocument().addObject('Drawing::FeaturePage','Page')
      vuedessus.Source = obj
+
  page.Template = App.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg' 
      vuedessus.Direction = (0.0,-1.0,0.0)
+
  vueprofil = App.activeDocument().addObject('Drawing::FeatureViewPart','VueProfil')
      vuedessus.ShowHiddenLines = True
+
  vueprofil.Source = obj
      vuedessus.Scale = 1.0
+
  vueprofil.Direction = (0.0,0.0,1.0)
      vuedessus.Rotation = 180.0
+
  vueprofil.Scale = 1.0
      vuedessus.X = 50.0+TailleX/2+TailleX
+
  vueprofil.X = 50.0
      vuedessus.Y = 50.0+TailleX/2+TailleY+TailleX
+
  vueprofil.Y = 50.0
      page.addObject(vuedessus)
+
  page.addObject(vueprofil)
 
   
 
   
      vueiso = App.activeDocument().addObject('Drawing::FeatureViewPart','VueIso')
+
  vuegauche = App.activeDocument().addObject('Drawing::FeatureViewPart','Vuegauche')
      vueiso.Source = obj
+
  vuegauche.Source = obj
      vueiso.Direction = (-1.0,-1.0,0.5)
+
  vuegauche.Direction = (-1.0,0.0,0.0)
      vueiso.Scale = 1.0
+
  vuegauche.ShowHiddenLines = True
      vueiso.ShowSmoothLines = True
+
  vuegauche.Scale = 1.0
      vueiso.X = TailleZ+TailleX/2
+
  vuegauche.Rotation = 180.0
      vueiso.Y = 7*TailleZ+3*TailleY
+
  vuegauche.X = 50.0+TailleX/2+TailleX
      page.addObject(vueiso)
+
  vuegauche.Y = 50.0
     
+
  page.addObject(vuegauche)
 
   
 
   
      App.activeDocument().recompute()
+
  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)
 
   
 
   
      PageFile = open(page.PageResult,'r')
+
  vueiso = App.activeDocument().addObject('Drawing::FeatureViewPart','VueIso')
      OutFile = open('temp.svg','w')
+
  vueiso.Source = obj
      OutFile.write(PageFile.read())
+
  vueiso.Direction = (-1.0,-1.0,0.5)
      del OutFile,PageFile
+
  vueiso.Scale = 1.0
     
+
  vueiso.ShowSmoothLines = True
 +
  vueiso.X = TailleZ+TailleX/2
 +
  vueiso.Y = 7*TailleZ+3*TailleY
 +
  page.addObject(vueiso)
 
   
 
   
    dialog = QtGui.QDialog()
 
    dialog.resize(200,200)
 
    dialog.setWindowTitle("Corniere")
 
    la = QtGui.QVBoxLayout(dialog)
 
 
   
 
   
    e1 = QtGui.QLabel("Dimensions de la corniere")
+
  App.activeDocument().recompute()
    commentFont=QtGui.QFont("Arial",10,True)
 
    e1.setFont(commentFont)
 
    la.addWidget(e1)
 
 
   
 
   
    t1 = QtGui.QLabel("L1")
+
  PageFile = open(page.PageResult,'r')
    la.addWidget(t1)
+
  OutFile = open('temp.svg','w')
    l1 = QtGui.QLineEdit()
+
  OutFile.write(PageFile.read())
    l1.setText("20")
+
  del OutFile,PageFile
    la.addWidget(l1)
 
 
   
 
   
    t2 = QtGui.QLabel("L2")
 
    la.addWidget(t2)
 
    l2 = QtGui.QLineEdit()
 
    l2.setText("20")
 
    la.addWidget(l2)
 
 
   
 
   
    t3 = QtGui.QLabel("e")
+
dialog = QtGui.QDialog()
    la.addWidget(t3)
+
dialog.resize(200,200)
    l3 = QtGui.QLineEdit()
+
dialog.setWindowTitle("Corniere")
    l3.setText("2")
+
la = QtGui.QVBoxLayout(dialog)
    la.addWidget(l3)
 
 
   
 
   
    t4 = QtGui.QLabel("Longueur")
+
e1 = QtGui.QLabel("Dimensions de la corniere")
    la.addWidget(t4)
+
commentFont=QtGui.QFont("Arial",10,True)
    l4 = QtGui.QLineEdit()
+
e1.setFont(commentFont)
    l4.setText("300")
+
la.addWidget(e1)
    la.addWidget(l4)
 
 
   
 
   
    okbox = QtGui.QDialogButtonBox(dialog)
+
t1 = QtGui.QLabel("L1")
    okbox.setOrientation(QtCore.Qt.Horizontal)
+
la.addWidget(t1)
    okbox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
+
l1 = QtGui.QLineEdit()
    la.addWidget(okbox)
+
l1.setText("20")
    QtCore.QObject.connect(okbox, QtCore.SIGNAL("accepted()"), proceed)
+
la.addWidget(l1)
    QtCore.QObject.connect(okbox, QtCore.SIGNAL("rejected()"), hide)
+
    QtCore.QMetaObject.connectSlotsByName(dialog)
+
t2 = QtGui.QLabel("L2")
    dialog.show()
+
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>
+
</pre>
 
{{clear}}
 
{{clear}}
<languages/>
 

Latest revision as of 15:14, 24 July 2019

Other languages:
čeština • ‎Deutsch • ‎English • ‎español • ‎français • ‎italiano

Macro Corner shapes wizard.png Corner shapes wizard

Popis
Toto makro je kompletní aplikace, vytvoří vyskakovací dailog pro zadání rozměrů rohového dílu, potom vytvoří objekt v dokumentu a vytvoří stránku s pohledem na díl shora, zepředu a z boku.
This macro use the DrawingWorkBench

Version macro : 1.0
Date last modification : 2011-08-01
FreeCAD version : <= 0.17
Download : ToolBar Icon
Autor
Nicotuf
Download
ToolBar Icon
Odkazy
Verze
1.0
Datum poslední úpravy
2011-08-01
Verze FreeCAD
<= 0.17
Výchozí zástupce
None
Viz též
None


Deskriptivní

Toto makro je kompletní aplikace, vytvoří vyskakovací dailog pro zadání rozměrů rohového dílu, potom vytvoří objekt v dokumentu a vytvoří stránku s pohledem na díl shora, zepředu a z boku.

Na modifikované verzi jsou změny GUI.

CornerShape1.png

Skript

ToolBar Icon Macro Corner shapes wizard.png

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()