#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from math import *
import time
import sys
import os
import numpy
from GWL.GWL_parser import *
[docs]def createSubstrate(DSTDIR,
NAME = 'Substrate.gwl',
box_size = 10,
substrate_height = 1,
LineDistance_Horizontal = 0.350,
LineDistance_Vertical = 0.350,
BottomToTop = False,
writingOffset = [0,0,0,0]):
LineNumber_Horizontal = int(box_size/LineDistance_Horizontal)+1
LineNumber_Vertical = int(substrate_height/LineDistance_Vertical)+1
box = GWLobject()
box.addXblock([-0.5*box_size,0,0.5*substrate_height], [0.5*box_size,0,0.5*substrate_height], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
box.write_GWL(DSTDIR + os.path.sep + NAME, writingOffset = writingOffset )
return
[docs]def createLegs(DSTDIR,
NAME = 'Legs.gwl',
wall_thickness = 1,
leg_height = 3,
hole_width = 4,
box_size = 10,
overshoot = 1,
LineDistance_Horizontal = 0.350,
LineDistance_Vertical = 0.350,
BottomToTop = False,
writingOffset = [0,0,0,0]):
LineNumber_Horizontal = int(wall_thickness/LineDistance_Horizontal)+1
LineNumber_Vertical = int(leg_height/LineDistance_Vertical)+1
A = 0.5*hole_width
B = 0.5*box_size + overshoot
C = 0.5*box_size
Z = 0.5*leg_height
box = GWLobject()
# top
box.addXblock([ B, C, Z], [ A, C, Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
box.addXblock([-A, C, Z], [-B, C, Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
# left
box.addYblock([-C, B, Z], [-C, A, Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
box.addYblock([-C,-A, Z], [-C,-B, Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
# bottom
box.addXblock([-B,-C, Z], [-A,-C, Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
box.addXblock([ A,-C, Z], [ B,-C, Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
# right
box.addYblock([ C,-B, Z], [ C,-A, Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
box.addYblock([ C, A, Z], [ C, B, Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
box.write_GWL(DSTDIR + os.path.sep + NAME, writingOffset = writingOffset )
return
[docs]def createSimpleBox(DSTDIR,
NAME = 'SimpleBox.gwl',
box_size = 10,
wall_height = 5,
wall_thickness = 0,
overshoot = 3,
LineDistance_Horizontal = 0.350,
LineDistance_Vertical = 0.350,
BottomToTop = False,
writingOffset = [0,0,0,0]):
LineNumber_Horizontal = int(wall_thickness/LineDistance_Horizontal)+1
LineNumber_Vertical = int(wall_height/LineDistance_Vertical)+1
A = 0.5*box_size
B = 0.5*box_size+overshoot
Z = 0.5*wall_height
box = GWLobject()
box.addXblock([-B,-A,Z], [B,-A,Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
box.addYblock([A,-B,Z], [A,B,Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
box.addXblock([-B,A,Z], [B,A,Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
box.addYblock([-A,-B,Z], [-A,B,Z], LineNumber_Horizontal, LineDistance_Horizontal, LineNumber_Vertical, LineDistance_Vertical, BottomToTop)
box.write_GWL(DSTDIR + os.path.sep + NAME, writingOffset = writingOffset )
return
[docs]def createElevatedBoxWithSubstrate(DSTDIR):
box_size = 10
substrate_height = 1
leg_height = 3
wall_height = 5
wall_thickness = 1
hole_width = 6
overshoot = 0.5*wall_thickness
LineDistance_Horizontal = 0.350
LineDistance_Vertical = 0.350
BottomToTop = False
writingOffset = numpy.array([0,0,0,0])
createSubstrate(DSTDIR,NAME='ElevatedBoxWithSubstrate.substrate.gwl',box_size=box_size+wall_thickness,substrate_height=substrate_height)
createLegs(DSTDIR,NAME='ElevatedBoxWithSubstrate.legs.gwl',box_size=box_size,leg_height=leg_height,hole_width=hole_width,wall_thickness=wall_thickness,overshoot=overshoot,writingOffset=writingOffset+numpy.array([0,0,substrate_height,0]))
createSimpleBox(DSTDIR,NAME='ElevatedBoxWithSubstrate.box.gwl',box_size=box_size,wall_height=wall_height,wall_thickness=wall_thickness,overshoot=overshoot,writingOffset=writingOffset+numpy.array([0,0,substrate_height+leg_height,0]))
return
[docs]def main():
time_start = time.time()
if len(sys.argv)>1:
DSTDIR = sys.argv[1]
else:
DSTDIR = os.getcwd()
createSubstrate(DSTDIR)
createLegs(DSTDIR)
createSimpleBox(DSTDIR)
createElevatedBoxWithSubstrate(DSTDIR)
print( 'Output in ' + DSTDIR)
print("My Script Finished: %.4f sec" % (time.time() - time_start))
if __name__ == "__main__":
main()