#*************************************************************************** #* * #* Copyright (c) 2015 * #* Yorik van Havre * #* * #* This program is free software; you can redistribute it and/or modify * #* it under the terms of the GNU Lesser General Public License (LGPL) * #* as published by the Free Software Foundation; either version 2 of * #* the License, or (at your option) any later version. * #* for detail see the LICENCE text file. * #* * #* This program is distributed in the hope that it will be useful, * #* but WITHOUT ANY WARRANTY; without even the implied warranty of * #* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * #* GNU Library General Public License for more details. * #* * #* You should have received a copy of the GNU Library General Public * #* License along with this program; if not, write to the Free Software * #* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * #* USA * #* * #*************************************************************************** __title__= "FreeCAD GbXml exporter" __author__ = "Yorik van Havre" __url__ = "http://www.freecadweb.org" import os,FreeCAD,Draft if FreeCAD.GuiUp: from DraftTools import translate else: def translate(ctx,txt): return txt if open.__module__ == '__builtin__': pyopen = open # because we'll redefine open below def export(objectslist,filename): if len(objectslist) != 1: FreeCAD.Console.PrintError(translate("Arch","This exporter can currently only export one site object")) return site = objectslist[0] if Draft.getType(site) != "Site": FreeCAD.Console.PrintError(translate("Arch","This exporter can currently only export one site object")) return filestream = pyopen(filename,"wb") # header filestream.write( '\n' ) filestream.write( '\n' % FreeCAD.Version()[0]+FreeCAD.Version()[1]+FreeCAD.Version()[2] ) filestream.write( '\n' ) filestream.write( '\n' ) # campus filestream.write( '\n' % site.Name ) filestream.write( '\n' ) filestream.write( ' %s\n' % site.PostalCode ) filestream.write( '\n' ) # building for building in site.Group: if Draft.getType(building) == "Building": area = 10000.0 # TODO calculate filestream.write( ' \n' % (building.Name,building.BuildingType) ) filestream.write( ' $f\n' % area ) # space for space in Draft.getGroupContents(building): if Draft.getType(space) == "Space": zone = "BLABLA" # TODO build values filestream.write( ' \n' % (space.Name, space.SpaceType, zone) ) filestream.write( ' %s\n' % space.Label ) filestream.write( ' %s\n' % space.Description ) filestream.write( ' %s\n' % space.Label ) #filestream.write( ' 1.00000\n' ) #filestream.write( ' 1.50000\n' ) #filestream.write( ' 0.00000\n' ) filestream.write( ' $f\n' % space.Area filestream.write( ' \n' ) filestream.write( '\n' ) filestream.write( '' ) ''' 18000.00000 Lab corridor 1.00000 1.50000 0.00000 800.00000 6400.00000 0.00000 1200.00000 0.00000 0.00000 1200.00000 96.00000 480.00000 1200.00000 96.00000 480.00000 1200.00000 0.00000 ... repeat 21E2 ... repeat Floor 90.00 0.00000 1320.00000 0.00000 180.00 480.00000 240.00000 0.00000 1320.00000 0.00000 480.00000 1320.00000 0.00000 960.00000 1320.00000 0.00000 960.00000 1200.00000 0.00000 480.00000 1200.00000 0.00000 0.00000 1200.00000 0.00000 Surface 4 180.00 960.00000 0.00000 0.00000 90.00 114.00000 480.00000 960.00000 0.00000 0.00000 1440.00000 0.00000 0.00000 1440.00000 0.00000 114.00000 960.00000 0.00000 114.00000 Opening1 96.00000 24.00000 72.00000 48.00000 1056.00000 0.00000 24.00000 1104.00000 0.00000 24.00000 1104.00000 0.00000 96.00000 1056.00000 0.00000 96.00000 Opening2 216.00000 24.00000 72.00000 48.00000 1176.00000 0.00000 24.00000 1224.00000 0.00000 24.00000 1224.00000 0.00000 96.00000 1176.00000 0.00000 96.00000 Opening3 336.00000 24.00000 72.00000 48.00000 1296.00000 0.00000 24.00000 1344.00000 0.00000 24.00000 1344.00000 0.00000 96.00000 1296.00000 0.00000 96.00000 ... repeat Standard Standard Standard Standard Lab and Corridor 0" 0.00000 0.00000 2.37037 812.69841 72.00000 75.00000 Office 1" 0.13333 20.00000 0.05333 8.00000 72.00000 75.00000 Warehouse 5/32" 0.05000 25.71429 0.00000 0.00000 60.00000 80.00000 sp3_LabandCorridor_Lab1 5534.837890625 Space Cooling Roof Cond 21E3 ... repeat '''