diff --git a/example_notebook.ipynb b/example_notebook.ipynb index b9c8d23..fa079c4 100644 --- a/example_notebook.ipynb +++ b/example_notebook.ipynb @@ -775,16 +775,16 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'00'" + "'0'" ] }, - "execution_count": 3, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -797,9 +797,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "'00'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "jmk.gloveClass(600,DC=True)" ] @@ -815,13 +826,14 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from jepl.jepl_templates import *\n", - "#af_label(equipment,working_distance,incident_energy,af_boundary,energy_level,voltage,limited_approach,restricted_approach, glove_class,author=\"Jeff MacKinnon\",warning=\"warning\",project=\"Arc Flash Warning Label\",project_num=\"####\")\n", - "af_label(\"equipnum\",\"3 ft\",3,\"36 in\",\"B\",\"480 Vac\",\"10 ft\",\"1 ft\", \"00\",author=\"Jeff MacKinnon\",warning=\"warning\",project=\"Arc Flash Warning Label\",project_num=\"####\")" + "#af_label(equipment,working_distance,incident_energy,af_boundary,energy_level,voltage, author=\"Jeff MacKinnon\",warning=\"warning\",project=\"Arc Flash Warning Label\",project_num=\"####\",DC=False,fixedElectrode = True, SI=True,project_year=2015)\n", + "af_label(\"equipnum\",\"3 ft\",3,\"36 in\",\"B\",480,author=\"Jeff MacKinnon\",warning=\"warning\",project=\"Arc Flash Warning Label\",test=True)\n", + "\n" ] }, { diff --git a/jepl/jepl_templates.py b/jepl/jepl_templates.py new file mode 100644 index 0000000..3b8a831 --- /dev/null +++ b/jepl/jepl_templates.py @@ -0,0 +1,84 @@ +''' +JMK Engineering Inc. Python Library for design and such. +by: Jeff MacKinnon + +email: jeff@jmkengineering.com + +Template Generation + +These functions are used to create labels, reports, etc. + +''' +from .jepl_safety import * + +def af_label(equipment,working_distance,incident_energy,af_boundary,energy_level,voltage, author="Jeff MacKinnon",warning="warning",project="Arc Flash Warning Label",project_num="2500",DC=False,fixedElectrode = True, SI=True,project_year=2015,test=False): + + ''' + This function is for printing a single label with all the information in the function above. Include the units (in, Vac, Vdc, ft, m, mm, etc.) in the values. All values are strings. + ''' + + from datetime import date + date = date.today() + revdate = date.strftime("%m/%d/%Y") + + if DC == True: + voltage_units = " Vdc" + else: + voltage_units = " Vac" + + label_voltage = str(voltage) + voltage_units + + + + glove_class = gloveClass(voltage,DC=DC) + limited_approach = limitedApproach(voltage,fixed=fixedElectrode,DC=DC,unitsSI=SI,year=project_year) + restricted_approach = restrictedApproach(voltage,DC=DC,unitsSI=SI,year=project_year) + + + if warning =="warning": + warning_colour = '242,85,31' + warning_text = '\warning WARNING' + elif warning == "danger": + warning_colour = '242,85,31' # This colour needs to change + warning_text = '\warning DANGER' + else: + warning_colour = '255,255,255' # This colour needs to change + warning_text = '' + + from jinja2 import Environment, FileSystemLoader + + environment = Environment( block_start_string = '\BLOCK{', + block_end_string = '}', + variable_start_string = '\VAR((', + variable_end_string = '))', + comment_start_string = '\#{', + comment_end_string = '}', + line_comment_prefix = '%#', + loader=FileSystemLoader("jepl/templates/") + ) + template = environment.get_template("template-label-ArcFlash.tex") + + if test == True: + filename = "test"+str(date) + "-"+project_num+"-label-ArcFlash.tex" + else: + filename = str(date) + "-"+project_num+"-label-ArcFlash.tex" + content = template.render( + DATE = revdate, + EQUIPMENT = equipment, + WORKING_DISTANCE = working_distance, + INCIDENT_ENERGY = incident_energy, + AF_BOUNDARY = af_boundary, + ENERGY_LEVEL = energy_level, + VOLTAGE = label_voltage, + LIMITED_APPROACH = limited_approach, + RESTRICTED_APPROACH = restricted_approach, + GLOVE_CLASS = glove_class, + AUTHOR = author, + TITLE = project, + WARNING_COLOUR = warning_colour, + WARNING_TEXT = warning_text, + + + ) + with open(filename, mode="w", encoding="utf-8") as message: + message.write(content) diff --git a/jepl/templates/static/logo.png b/jepl/templates/static/logo.png new file mode 100644 index 0000000..6a71a0c Binary files /dev/null and b/jepl/templates/static/logo.png differ diff --git a/jepl/templates/template-label-ArcFlash.tex b/jepl/templates/template-label-ArcFlash.tex new file mode 100644 index 0000000..9b9360f --- /dev/null +++ b/jepl/templates/template-label-ArcFlash.tex @@ -0,0 +1,127 @@ + +\documentclass[12pt]{article} +\pagestyle{empty} + +%\usepackage[utf8]{inputenc} +\usepackage{tikz} +\usepackage{fourier} +\usepackage{geometry} + +\usepackage{anyfontsize} +\usepackage{multicol} + +\usepackage[export]{adjustbox} + + +\usetikzlibrary{calc} + +\geometry{% + paperheight=105mm, + paperwidth=160mm, + top=2mm, + bottom=2mm, + right=2mm, + left=2mm, +} + + +\usepackage{layout} + \setlength{\parindent}{1pt} + + +\title{\VAR((TITLE))} +\date{\VAR((DATE))} +\author{\VAR((AUTHOR))} + + + +\begin{document} + +%% Header Warning Banner %% +\definecolor{warningcolour}{RGB}{\VAR((WARNING_COLOUR))} + + + % \thispagestyle{empty} + \begin{tikzpicture}[overlay, remember picture]% + \node[] + at ($(current page.north)+(0cm, -13mm)$) {% + \begin{tikzpicture} + \node[rectangle, + draw = white, + text = black, + minimum width = \textwidth, + minimum height = 23mm, + fill = warningcolour] (r) at (0,0) + {% + \fontfamily{phv}\fontsize{36pt}{40pt}\selectfont \textbf{\VAR((WARNING_TEXT))}% This is the warning text + }; + \end{tikzpicture} + }; +% This is the main message + \node[% + text width=\textwidth, + align=center, + ] + at ($(current page.center) + (0cm,18mm)$) {% + \fontfamily{phv} + \fontsize{20pt}{100pt}\selectfont + \textbf{% + Arc Flash and Shock Hazard Present \\ + Appropriate PPE Required + } + }; +% This is the study Results + \node[text width=\textwidth, align=center] + at ($(current page.center) + (5mm,-7mm)$) {% + \begin{multicols}{2} + \textbf{ARC FLASH PROTECTION} \\ + \vspace{3mm} + + \begin{tabular}{ l l } + Working Distance & \textbf{\VAR((WORKING_DISTANCE))} \\ % Working Distance + Incident Energy & \textbf{\VAR((INCIDENT_ENERGY)) cal/cm$^2$} \\ % Incident Energy Value + Arc Flash Hazard Boundary & \textbf{\VAR((AF_BOUNDARY))} \\ % Arc Flash Boundary + Energy Level & \textbf{Level \VAR((ENERGY_LEVEL))} \\ % Energy Level + \end{tabular} + + \columnbreak + + \textbf{SHOCK PROTECTION}\\ + \vspace{4mm} + + \begin{tabular}{ l l } + Shock Hazard & \textbf{\VAR((VOLTAGE))} \\ % Shock voltage + Limited Approach & \textbf{\VAR((LIMITED_APPROACH))} \\ % Limited Approach boundary + Restricted Approach & \textbf{\VAR((RESTRICTED_APPROACH))} \\ % Restricted Approach boundard + Glove Class & \textbf{\VAR((GLOVE_CLASS))} \\ % Glove Class + \end{tabular} + + \end{multicols} + }; +% This is the equipment information + \node[text width=0.5\textwidth, align=left] + at ($(current page.west) + (45mm,-40mm)$) {% + \large + Equipment: \textbf{\VAR((EQUIPMENT))} \\ + + Date: \textbf{\VAR((DATE))} \\ + \vspace{2mm} + \scriptsize + Arc flash analysis by \VAR((AUTHOR)) + + }; +% This is the logo + \node[text width=0.5\textwidth, align=right] + at ($(current page.east) + (-40mm,-4cm)$) {% + \includegraphics[width=70mm,left]{jepl/templates/static/logo.png} + }; + + \end{tikzpicture} + + +\newpage + + + + +\end{document}