Added multipage warning labels.

This commit is contained in:
Jeff MacKinnon 2025-01-31 12:24:31 -04:00
parent 4d5ccd5367
commit c2569ed58f
4 changed files with 229 additions and 17 deletions

View file

@ -2,12 +2,12 @@
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"import jepl.jepl as jmk # import the module. If this file is located further up the file tree it may look like \"resources.JEPL.jepl.jepl\"\n",
"%run jepl/jeplinit.py jepl/ # This is needed to initialize the databases. Again if you are running this from a different location the run command will look like %run jeplinit.py resources/JEPL/jepl/ "
"#%run jepl/jeplinit.py jepl/ # This is needed to initialize the databases. Again if you are running this from a different location the run command will look like %run jeplinit.py resources/JEPL/jepl/ "
]
},
{
@ -775,18 +775,19 @@
},
{
"cell_type": "code",
"execution_count": 17,
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'0'"
"ename": "NameError",
"evalue": "name 'jmk' is not defined",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
"Input \u001b[1;32mIn [1]\u001b[0m, in \u001b[0;36m<cell line: 3>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m#def gloveClass(voltage,DC=False)\u001b[39;00m\n\u001b[1;32m----> 3\u001b[0m \u001b[43mjmk\u001b[49m\u001b[38;5;241m.\u001b[39mgloveClass(\u001b[38;5;241m600\u001b[39m)\n",
"\u001b[1;31mNameError\u001b[0m: name 'jmk' is not defined"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
@ -826,14 +827,12 @@
},
{
"cell_type": "code",
"execution_count": 19,
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from jepl.jepl_templates import *\n",
"#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"
"af_labels('testresults_labels.csv')"
]
}
],

View file

@ -47,7 +47,8 @@ def af_label(equipment,working_distance,incident_energy,af_boundary,energy_level
from jinja2 import Environment, FileSystemLoader
environment = Environment( block_start_string = '\BLOCK{',
environment = Environment(
block_start_string = '\BLOCK{',
block_end_string = '}',
variable_start_string = '\VAR((',
variable_end_string = '))',
@ -56,7 +57,8 @@ def af_label(equipment,working_distance,incident_energy,af_boundary,energy_level
line_comment_prefix = '%#',
loader=FileSystemLoader("jepl/templates/")
)
template = environment.get_template("template-label-ArcFlash.tex")
#template = environment.get_template("template-label-ArcFlash.tex")
template = environment.get_template("template-AF_warning_label.tex")
if test == True:
filename = "test"+str(date) + "-"+project_num+"-label-ArcFlash.tex"
@ -82,3 +84,77 @@ def af_label(equipment,working_distance,incident_energy,af_boundary,energy_level
)
with open(filename, mode="w", encoding="utf-8") as message:
message.write(content)
def af_labels(results_csv,author="JMK Engineering Inc.",warning="warning",project="Arc Flash Warning Label",project_num="2500",DC=False,fixedElectrode = True, SI=True,project_year=2015,test=False):
from datetime import date
date = date.today()
revdate = date.strftime("%m/%d/%Y")
if DC == True:
voltage_units = " Vdc"
else:
voltage_units = " Vac"
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 = ''
label_info = {'date':date,
'title':project,
'author':author,
'voltage_units':voltage_units,
'warning_colour':warning_colour,
'warning_text':warning_text,
'project':project,
'project_num':project_num,
}
import pandas as pd
results_af = pd.read_csv(results_csv)
results = results_af.T.to_dict().values()
# Need to take this information and add it to the label results dataframe above.
# This needs to include working distance, which should actually be selectable from the ETAP results
# 'working_distance':'18in' # This needs to change maybe I can get it added to the AF results.
# Then when these values are added to the results CSV we can finish the template results thing
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-label4x6-base.tex")
template = environment.get_template("template-AF_warning_label.tex")
#template = environment.get_template("testblock.txt")
if test == True:
filename = "test"+str(date) + "-"+project_num+"-label-ArcFlash.tex"
else:
filename = str(date) + "-"+project_num+"-label-ArcFlash.tex"
context = {"results":results,"project":label_info}
content = template.render(context)
with open(filename, mode="w", encoding="utf-8") as message:
message.write(content)

View file

@ -0,0 +1,91 @@
\BLOCK{ extends "template-label4x6-base.tex" }
\BLOCK{block document}
\BLOCK{for result in results }
%% Header Warning Banner %%
\definecolor{warningcolour}{RGB}{\VAR((project.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((project.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((result.working_distance))} \\ % Working Distance - This needs to be added to the results
Incident Energy & \textbf{\VAR((result.energy)) cal/cm$^2$} \\ % Incident Energy Value
Arc Flash Hazard Boundary & \textbf{\VAR((result.afb))} \\ % Arc Flash Boundary
Energy Level & \textbf{\VAR((result.level))} \\ % Energy Level
\end{tabular}
\columnbreak
\textbf{SHOCK PROTECTION}\\
\vspace{4mm}
\begin{tabular}{ l l }
Shock Hazard & \textbf{\VAR((result.voltage))} \\ % Shock voltage
Limited Approach & \textbf{\VAR((result.limited_approach))} \\ % Limited Approach boundary
Restricted Approach & \textbf{\VAR((result.restricted_approach))} \\ % Restricted Approach boundard
Glove Class & \textbf{\VAR((result.gloveclass))} \\ % 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((result.equipment))} \\
Date: \textbf{\VAR((project.date))} \\
\vspace{2mm}
\scriptsize
Arc flash analysis by \VAR((project.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
\BLOCK{ endfor }
\BLOCK{endblock document}

View file

@ -0,0 +1,46 @@
\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((project.title))}
\date{\VAR((project.date))}
\author{\VAR((project.author))}
\begin{document}
\BLOCK{block document}
\BLOCK{endblock document}
\end{document}