Arch: Adapted all other tools to doCommand() + translatable

This commit is contained in:
Yorik van Havre 2012-05-31 12:30:20 -03:00
parent 539cad092a
commit 2a3ff10d84
9 changed files with 173 additions and 86 deletions

View File

@ -25,12 +25,13 @@ import FreeCAD,FreeCADGui,Draft,math,DraftVecUtils
from FreeCAD import Vector
from PyQt4 import QtCore, QtGui
from pivy import coin
from DraftTools import translate
__title__="FreeCAD Axis System"
__author__ = "Yorik van Havre"
__url__ = "http://free-cad.sourceforge.net"
def makeAxis(num=0,size=0,name="Axes"):
def makeAxis(num=5,size=1,name=str(translate("Arch","Axes"))):
'''makeAxis(num,size): makes an Axis System
based on the given number of axes and interval distances'''
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython",name)
@ -56,16 +57,17 @@ class _CommandAxis:
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Axis","Creates an axis system.")}
def Activated(self):
FreeCAD.ActiveDocument.openTransaction("Axis")
makeAxis(5,1)
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Axis")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("Arch.makeAxis()")
FreeCAD.ActiveDocument.commitTransaction()
class _Axis:
"The Axis object"
def __init__(self,obj):
obj.addProperty("App::PropertyFloatList","Distances","Base", "The intervals between axes")
obj.addProperty("App::PropertyFloatList","Angles","Base", "The angles of each axis")
obj.addProperty("App::PropertyFloat","Length","Base", "The length of the axes")
obj.addProperty("App::PropertyFloatList","Distances","Base", str(translate("Arch","The intervals between axes")))
obj.addProperty("App::PropertyFloatList","Angles","Base", str(translate("Arch","The angles of each axis")))
obj.addProperty("App::PropertyFloat","Length","Base", str(translate("Arch","The length of the axes")))
self.Type = "Axis"
obj.Length=1.0
obj.Proxy = self
@ -98,8 +100,8 @@ class _ViewProviderAxis:
"A View Provider for the Axis object"
def __init__(self,vobj):
vobj.addProperty("App::PropertyLength","BubbleSize","Base", "The size of the axis bubbles")
vobj.addProperty("App::PropertyEnumeration","NumerationStyle","Base", "The numeration style")
vobj.addProperty("App::PropertyLength","BubbleSize","Base", str(translate("Arch","The size of the axis bubbles")))
vobj.addProperty("App::PropertyEnumeration","NumerationStyle","Base", str(translate("Arch","The numeration style")))
vobj.NumerationStyle = ["1,2,3","01,02,03","001,002,003","A,B,C","a,b,c","I,II,III","L0,L1,L2"]
vobj.Proxy = self
vobj.BubbleSize = .1

View File

@ -23,12 +23,13 @@
import FreeCAD,FreeCADGui,Draft,ArchCommands
from PyQt4 import QtCore
from DraftTools import translate
__title__="FreeCAD Building"
__author__ = "Yorik van Havre"
__url__ = "http://free-cad.sourceforge.net"
def makeBuilding(objectslist=None,join=False,name="Building"):
def makeBuilding(objectslist=None,join=False,name=str(translate("Arch","Building"))):
'''makeBuilding(objectslist,[joinmode]): creates a building including the
objects from the given list. If joinmode is True, components will be joined.'''
obj = FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroupPython",name)
@ -51,15 +52,24 @@ class _CommandBuilding:
ok = False
if (len(sel) == 1):
if Draft.getType(sel[0]) in ["Cell","Site","Floor"]:
FreeCAD.ActiveDocument.openTransaction("Type conversion")
nobj = makeBuilding()
ArchCommands.copyProperties(sel[0],nobj)
FreeCAD.ActiveDocument.removeObject(sel[0].Name)
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Type conversion")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("obj = Arch.makeBuilding()")
FreeCADGui.doCommand("Arch.copyProperties(FreeCAD.ActiveDocument."+sel[0].Name+",obj)")
FreeCADGui.doCommand("FreeCAD.ActiveDocument.removeObject("+sel[0].Name+")")
FreeCAD.ActiveDocument.commitTransaction()
ok = True
if not ok:
FreeCAD.ActiveDocument.openTransaction("Building")
makeBuilding(sel)
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch"," Create Building")))
ss = "["
for o in sel:
if len(ss) > 1:
ss += ","
ss += "FreeCAD.ActiveDocument."+o.Name
ss += "]"
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Floor")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("Arch.makeBuilding("+ss+")")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()

View File

@ -24,6 +24,7 @@
import FreeCAD,FreeCADGui,Draft,ArchComponent,DraftVecUtils
from FreeCAD import Vector
from PyQt4 import QtCore
from DraftTools import translate
__title__="FreeCAD Arch Commands"
__author__ = "Yorik van Havre"
@ -341,11 +342,20 @@ class _CommandAdd:
def Activated(self):
sel = FreeCADGui.Selection.getSelection()
FreeCAD.ActiveDocument.openTransaction("Grouping")
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Grouping")))
if not mergeCells(sel):
host = sel.pop()
addComponents(sel,host)
ss = "["
for o in sel:
if len(ss) > 1:
ss += ","
ss += "FreeCAD.ActiveDocument."+o.Name
ss += "]"
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("Arch.addComponents("+ss+",FreeCAD.ActiveDocument."+host.Name+")")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
class _CommandRemove:
"the Arch Add command definition"
@ -362,13 +372,22 @@ class _CommandRemove:
def Activated(self):
sel = FreeCADGui.Selection.getSelection()
FreeCAD.ActiveDocument.openTransaction("Ungrouping")
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Ungrouping")))
if Draft.getType(sel[-1]) in ["Wall","Structure"]:
host = sel.pop()
removeComponents(sel,host)
ss = "["
for o in sel:
if len(ss) > 1:
ss += ","
ss += "FreeCAD.ActiveDocument."+o.Name
ss += "]"
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("Arch.removeComponents("+ss+",FreeCAD.ActiveDocument."+host.Name+")")
else:
removeComponents(sel)
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("Arch.removeComponents("+ss+")")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
class _CommandSplitMesh:
@ -387,7 +406,7 @@ class _CommandSplitMesh:
def Activated(self):
if FreeCADGui.Selection.getSelection():
sel = FreeCADGui.Selection.getSelection()
FreeCAD.ActiveDocument.openTransaction("Split Mesh")
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Split Mesh")))
for obj in sel:
n = obj.Name
nobjs = splitMesh(obj)
@ -396,6 +415,7 @@ class _CommandSplitMesh:
for o in nobjs:
g.addObject(o)
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
class _CommandMeshToShape:
@ -424,7 +444,7 @@ class _CommandMeshToShape:
if f.InList:
if f.InList[0].isDerivedFrom("App::DocumentObjectGroup"):
g = f.InList[0]
FreeCAD.ActiveDocument.openTransaction("Mesh to Shape")
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Mesh to Shape")))
for obj in FreeCADGui.Selection.getSelection():
newobj = meshToShape(obj)
if g and newobj:

View File

@ -23,12 +23,13 @@
import FreeCAD,FreeCADGui,Draft,ArchCommands
from PyQt4 import QtCore
from DraftTools import translate
__title__="FreeCAD Arch Floor"
__author__ = "Yorik van Havre"
__url__ = "http://free-cad.sourceforge.net"
def makeFloor(objectslist=None,join=True,name="Floor"):
def makeFloor(objectslist=None,join=True,name=str(translate("Arch","Floor"))):
'''makeFloor(objectslist,[joinmode]): creates a floor including the
objects from the given list. If joinmode is False, components will
not be joined.'''
@ -52,23 +53,31 @@ class _CommandFloor:
ok = False
if (len(sel) == 1):
if Draft.getType(sel[0]) in ["Cell","Site","Building"]:
FreeCAD.ActiveDocument.openTransaction("Type conversion")
nobj = makeFloor()
ArchCommands.copyProperties(sel[0],nobj)
FreeCAD.ActiveDocument.removeObject(sel[0].Name)
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Type conversion")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("obj = Arch.makeFloor()")
FreeCADGui.doCommand("Arch.copyProperties(FreeCAD.ActiveDocument."+sel[0].Name+",obj)")
FreeCADGui.doCommand("FreeCAD.ActiveDocument.removeObject("+sel[0].Name+")")
FreeCAD.ActiveDocument.commitTransaction()
ok = True
if not ok:
FreeCAD.ActiveDocument.openTransaction("Floor")
makeFloor(sel)
ss = "["
for o in sel:
if len(ss) > 1:
ss += ","
ss += "FreeCAD.ActiveDocument."+o.Name
ss += "]"
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Floor")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("Arch.makeFloor("+ss+")")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
FreeCAD.ActiveDocument.recompute()
class _Floor:
"The Cell object"
def __init__(self,obj):
obj.addProperty("App::PropertyLength","Height","Base",
"The height of this floor")
str(translate("Arch","The height of this floor")))
self.Type = "Floor"
obj.Proxy = self
self.Object = obj

View File

@ -24,12 +24,13 @@
import FreeCAD,FreeCADGui,Draft,ArchComponent, DraftVecUtils
from FreeCAD import Vector
from PyQt4 import QtCore
from DraftTools import translate
__title__="FreeCAD Roof"
__author__ = "Yorik van Havre"
__url__ = "http://free-cad.sourceforge.net"
def makeRoof(baseobj,facenr=1,angle=45,name="Roof"):
def makeRoof(baseobj,facenr=1,angle=45,name=str(translate("Arch","Roof"))):
'''makeRoof(baseobj,[facenr],[angle],[name]) : Makes a roof based on a
face from an existing object. You can provide the number of the face
to build the roof on (default = 1), the angle (default=45) and a name (default
@ -64,35 +65,38 @@ class _CommandRoof:
if sel.HasSubObjects:
if "Face" in sel.SubElementNames[0]:
idx = int(sel.SubElementNames[0][4:])
FreeCAD.ActiveDocument.openTransaction("Create Roof")
makeRoof(obj,idx)
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Roof")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("Arch.makeRoof(FreeCAD.ActiveDocument."+obj.Name+","+str(idx)+")")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
elif obj.isDerivedFrom("Part::Feature"):
if len(obj.Shape.Faces) == 1:
FreeCAD.ActiveDocument.openTransaction("Create Roof")
makeRoof(obj,1)
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Roof")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("Arch.makeRoof(FreeCAD.ActiveDocument."+obj.Name+",1)")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
elif obj.isDerivedFrom("Part::Feature"):
if len(obj.Shape.Faces) == 1:
FreeCAD.ActiveDocument.openTransaction("Create Roof")
makeRoof(obj,1)
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Roof")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("Arch.makeRoof(FreeCAD.ActiveDocument."+obj.Name+",1)")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
else:
FreeCAD.Console.PrintMessage("Unable to create a roof")
FreeCAD.Console.PrintMessage(str(translate("Arch","Unable to create a roof")))
else:
FreeCAD.Console.PrintMessage("No object selected")
FreeCAD.Console.PrintMessage(str(translate("Arch","No object selected")))
class _Roof(ArchComponent.Component):
"The Roof object"
def __init__(self,obj):
ArchComponent.Component.__init__(self,obj)
obj.addProperty("App::PropertyAngle","Angle","Base",
"The angle of this roof")
str(translate("Arch","The angle of this roof")))
obj.addProperty("App::PropertyInteger","Face","Base",
"The face number of the base object used to build this roof")
str(translate("Arch","The face number of the base object used to build this roof")))
self.Type = "Structure"
def execute(self,obj):

View File

@ -25,7 +25,45 @@ import FreeCAD,FreeCADGui,ArchComponent,WorkingPlane,math,Draft,ArchCommands, Dr
from FreeCAD import Vector
from PyQt4 import QtCore
from pivy import coin
from DraftTools import translate
def makeSectionPlane(objectslist=None):
"""makeSectionPlane([objectslist]) : Creates a Section plane objects including the
given objects. If no object is given, the whole document will be considered."""
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Section")
_SectionPlane(obj)
_ViewProviderSectionPlane(obj.ViewObject)
if objectslist:
g = []
for o in objectslist:
if o.isDerivedFrom("Part::Feature"):
g.append(o)
elif o.isDerivedFrom("App::DocumentObjectGroup"):
g.append(o)
obj.Objects = g
def makeSectionView(section):
"""makeSectionView(section) : Creates a Drawing view of the given Section Plane
in the active Page object (a new page will be created if none exists"""
page = None
for o in FreeCAD.ActiveDocument.Objects:
if o.isDerivedFrom("Drawing::FeaturePage"):
page = o
break
if not page:
page = FreeCAD.ActiveDocument.addObject("Drawing::FeaturePage",str(translate("Arch","Page")))
template = Draft.getParam("template")
if not template:
template = FreeCAD.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg'
page.ViewObject.HintOffsetX = 200
page.ViewObject.HintOffsetY = 100
page.ViewObject.HintScale = 20
page.Template = template
view = FreeCAD.ActiveDocument.addObject("Drawing::FeatureViewPython","View")
page.addObject(view)
_ArchDrawingView(view)
view.Source = section
class _CommandSectionPlane:
"the Arch SectionPlane command definition"
@ -37,30 +75,17 @@ class _CommandSectionPlane:
def Activated(self):
sel = FreeCADGui.Selection.getSelection()
FreeCAD.ActiveDocument.openTransaction("Section Plane")
obj = FreeCAD.ActiveDocument.addObject("Part::FeaturePython","Section")
_SectionPlane(obj)
_ViewProviderSectionPlane(obj.ViewObject)
FreeCAD.ActiveDocument.commitTransaction()
g = []
ss = "["
for o in sel:
if o.isDerivedFrom("Part::Feature"):
g.append(o)
elif o.isDerivedFrom("App::DocumentObjectGroup"):
g.append(o)
obj.Objects = g
page = FreeCAD.ActiveDocument.addObject("Drawing::FeaturePage","Page")
template = Draft.getParam("template")
if not template:
template = FreeCAD.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg'
page.ViewObject.HintOffsetX = 200
page.ViewObject.HintOffsetY = 100
page.ViewObject.HintScale = 20
page.Template = template
view = FreeCAD.ActiveDocument.addObject("Drawing::FeatureViewPython","View")
page.addObject(view)
_ArchDrawingView(view)
view.Source = obj
if len(ss) > 1:
ss += ","
ss += "FreeCAD.ActiveDocument."+o.Name
ss += "]"
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Section Plane")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("section = Arch.makeSectionPlane("+ss+")")
FreeCADGui.doCommand("Arch.makeSectionView(section)")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
class _SectionPlane:
@ -68,7 +93,7 @@ class _SectionPlane:
def __init__(self,obj):
obj.Proxy = self
obj.addProperty("App::PropertyLinkList","Objects","Base",
"The objects that must be considered by this section plane. Empty means all document")
str(translate("Arch","The objects that must be considered by this section plane. Empty means all document")))
self.Type = "SectionPlane"
def execute(self,obj):
@ -89,7 +114,7 @@ class _ViewProviderSectionPlane(ArchComponent.ViewProviderComponent):
"A View Provider for Section Planes"
def __init__(self,vobj):
vobj.addProperty("App::PropertyLength","DisplaySize","Base",
"The display size of the section plane")
str(translate("Arch","The display size of this section plane")))
vobj.DisplaySize = 1
vobj.Transparency = 85
vobj.LineWidth = 1

View File

@ -23,12 +23,13 @@
import FreeCAD,FreeCADGui,Draft,ArchCommands
from PyQt4 import QtCore
from DraftTools import translate
__title__="FreeCAD Site"
__author__ = "Yorik van Havre"
__url__ = "http://free-cad.sourceforge.net"
def makeSite(objectslist=None,name="Site"):
def makeSite(objectslist=None,name=str(translate("Arch","Site"))):
'''makeBuilding(objectslist): creates a site including the
objects from the given list.'''
obj = FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroupPython",name)
@ -51,15 +52,27 @@ class _CommandSite:
ok = False
if (len(sel) == 1):
if Draft.getType(sel[0]) in ["Cell","Building","Floor"]:
FreeCAD.ActiveDocument.openTransaction("Type conversion")
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Type conversion")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("obj = Arch.makeSite()")
FreeCADGui.doCommand("Arch.copyProperties(FreeCAD.ActiveDocument."+sel[0].Name+",obj)")
FreeCADGui.doCommand("FreeCAD.ActiveDocument.removeObject("+sel[0].Name+")")
nobj = makeSite()
ArchCommands.copyProperties(sel[0],nobj)
FreeCAD.ActiveDocument.removeObject(sel[0].Name)
FreeCAD.ActiveDocument.commitTransaction()
ok = True
if not ok:
FreeCAD.ActiveDocument.openTransaction("Site")
makeSite(sel)
ss = "["
for o in sel:
if len(ss) > 1:
ss += ","
ss += "FreeCAD.ActiveDocument."+o.Name
ss += "]"
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Site")))
FreeCADGui.doCommand("import Arch")
FreeCADGui.doCommand("Arch.makeSite("+ss+")")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()

View File

@ -24,12 +24,13 @@
import FreeCAD,FreeCADGui,Draft,ArchComponent,DraftVecUtils
from FreeCAD import Vector
from PyQt4 import QtCore
from DraftTools import translate
__title__="FreeCAD Structure"
__author__ = "Yorik van Havre"
__url__ = "http://free-cad.sourceforge.net"
def makeStructure(baseobj=None,length=None,width=None,height=None,name="Structure"):
def makeStructure(baseobj=None,length=None,width=None,height=None,name=str(translate("Arch","Structure"))):
'''makeStructure([obj],[length],[width],[heigth],[swap]): creates a
structure element based on the given profile object and the given
extrusion height. If no base object is given, you can also specify
@ -64,29 +65,31 @@ class _CommandStructure:
'ToolTip': QtCore.QT_TRANSLATE_NOOP("Arch_Structure","Creates a structure object from scratch or from a selected object (sketch, wire, face or solid)")}
def Activated(self):
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Structure")))
FreeCADGui.doCommand("import Arch")
sel = FreeCADGui.Selection.getSelection()
if sel:
FreeCAD.ActiveDocument.openTransaction("Structure")
for obj in sel:
makeStructure(obj)
FreeCAD.ActiveDocument.commitTransaction()
FreeCADGui.doCommand("Arch.makeStructure(FreeCAD.ActiveDocument."+obj.Name+")")
else:
makeStructure()
FreeCADGui.doCommand("Arch.makeStructure()")
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
class _Structure(ArchComponent.Component):
"The Structure object"
def __init__(self,obj):
ArchComponent.Component.__init__(self,obj)
obj.addProperty("App::PropertyLength","Length","Base",
"The length of this element, if not based on a profile")
str(translate("Arch","The length of this element, if not based on a profile")))
obj.addProperty("App::PropertyLength","Width","Base",
"The width of this element, if not based on a profile")
str(translate("Arch","The width of this element, if not based on a profile")))
obj.addProperty("App::PropertyLength","Height","Base",
"The height or extrusion depth of this element. Keep 0 for automatic")
str(translate("Arch","The height or extrusion depth of this element. Keep 0 for automatic")))
obj.addProperty("App::PropertyLinkList","Axes","Base",
"Axes systems this structure is built on")
str(translate("Arch","Axes systems this structure is built on")))
obj.addProperty("App::PropertyVector","Normal","Base",
"The normal extrusion direction of this object (keep (0,0,0) for automatic normal)")
str(translate("Arch","The normal extrusion direction of this object (keep (0,0,0) for automatic normal)")))
self.Type = "Structure"
def execute(self,obj):
@ -167,7 +170,6 @@ class _Structure(ArchComponent.Component):
if hasattr(hole,"Proxy"):
if hasattr(hole.Proxy,"Subvolume"):
if hole.Proxy.Subvolume:
print "cutting subvolume",hole.Proxy.Subvolume
base = base.cut(hole.Proxy.Subvolume)
cut = True
if not cut:

View File

@ -24,12 +24,13 @@
import FreeCAD,FreeCADGui,Draft,ArchComponent,DraftVecUtils
from FreeCAD import Vector
from PyQt4 import QtCore,QtGui
from DraftTools import translate
__title__="FreeCAD Wall"
__author__ = "Yorik van Havre"
__url__ = "http://free-cad.sourceforge.net"
def makeWindow(baseobj=None,width=None,name="Window"):
def makeWindow(baseobj=None,width=None,name=str(translate("Arch","Window"))):
'''makeWindow(obj,[name]): creates a window based on the
given object'''
if baseobj:
@ -87,9 +88,10 @@ class _CommandWindow:
def Activated(self):
sel = FreeCADGui.Selection.getSelection()
FreeCAD.ActiveDocument.openTransaction("Create Window")
FreeCAD.ActiveDocument.openTransaction(str(translate("Arch","Create Window")))
FreeCADGui.doCommand("import Arch")
for obj in sel:
makeWindow(obj)
FreeCADGui.doCommand("Arch.makeWindow(FreeCAD.ActiveDocument."+obj.Name+")")
FreeCAD.ActiveDocument.commitTransaction()
class _Window(ArchComponent.Component):
@ -97,7 +99,7 @@ class _Window(ArchComponent.Component):
def __init__(self,obj):
ArchComponent.Component.__init__(self,obj)
obj.addProperty("App::PropertyStringList","WindowParts","Base",
"the components of this window")
str(translate("Arch","the components of this window")))
self.Type = "Window"
def execute(self,obj):