Macro Corner shapes wizard
Beschreibung |
---|
Dieses Makro ist eine vollständige Anwendung. Es öffnet sich ein Dialogfeld, in dem Sie nach den Abmessungen Ihres Eckstücks gefragt werden. Anschließend wird das Objekt im Dokument erstellt und eine Seitenansicht mit den Ansichten von oben, von vorne und von der Seite erstellt. Versionsmakro : 1.0 Datum der letzten Änderung : 2011-08-01 Autor: Nicotuf |
Autor |
Nicotuf |
Herunterladen |
None |
Links |
Makros Rezepte Wie installiere ich Makros So passen Sie Symbolleisten an |
Macro-Version |
1.0 |
Datum der letzten Änderung |
2011-08-01 |
FreeCAD-Version(s) |
None |
Standardverknüpfung |
None |
Siehe auch |
None |
Description
Dieses Makro ist eine vollständige Anwendung. Es öffnet ein Dialogfeld, in dem Sie nach den Abmessungen Ihres Eckstücks gefragt werden. Anschließend wird das Objekt im Dokument erstellt und eine Seitenansicht mit den Ansichten von oben, von vorne und von der Seite erstellt.
Es gibt eine modified version mit Änderungen GUI.
There is a modified version with changes GUI.
Script
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