Regarding drawing internal force diagrams through the use of the Stanli package. The following parameters are required for 2D internal forces command:
- Start point
- End point
- Value at start point
- Value at end point
- Parabola height
- Color
- Bend position
In addition, the 3D internal forces commands uses the same parameters with 2 extra ones
- Plane
- Plane distance
- Start point
- End point
- Value at start point
- Value at end point
- Parabola height
- Color
- Bend position
How can I add an two additional optional parameters to hatch the area under diagram (Area between the parabola and the beam):
- A parameter to select a hatching pattern
- Another parameter to set color of such hatching pattern
Such that if such patterns are not entered, no hatching is applied
MWE is shown below
\documentclass{article}
\usepackage{amsmath}
\usepackage{stanli}
\begin{document}
\begin{center}
\begin{tikzpicture}
\draw[help lines,step=0.5](0,0) grid(15,24);
%%%%%%%%%%%%%%%%%%%%%%%%Loading%%%%%%%%%%%%%%%%
\point{a-LD}{0}{22.5};
\point{b-LD}{10}{22.5};
\point{su-LD}{2}{22.5+1.5};
\point{s-LD}{2}{22.5};
\point{sl-LD}{2}{22.5-0.5};
\point{TL-LD}{10}{22.5+2};
\point{CAP-LD}{10/2}{22.5-2.5};
% Elements
\beam{4}{a-LD}{b-LD};
%Supports
\support {1}{a-LD};
\support {2}{b-LD};
%Loads
\lineload{1}{a-LD}{b-LD}[0][2][0.035]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%First diagram%%%%%%%%%%%%%%%%%%
\point{a-FBD}{0}{22.5-6};
\point{b-FBD}{10}{22.5-6};
\point{TL-FBD}{2*10/3}{22.5-6};
\point{TLA-FBD}{2*10/3}{22.5-6+1.75};
\point{HR}{0-1.5}{22.5-6};
\point{VRA}{0}{22.5-6-1};
\point{VRB}{10}{22.5-6-1};
\point{CAP-FBD}{10/2}{22.5-6-3.5};
% Elements
\beam{4}{a-FBD}{b-FBD};
%%%%%%%%%%%%%%%%%Second diagram%%%%%%%%%%%%%%%%%%
\internalforces{a-FBD}{b-FBD}{-3}{6}[0][red]%[0]
\point{a-SFD}{0}{22.5-14};
\point{b-SFD}{10}{22.5-14};
\point{TL-SFD}{2*10/3}{22.5-14};
\point{TLA-SFD}{2*10/3}{22.5-14+1.75};
\point{VRA}{0}{22.5-14-1};
\point{VRB}{10}{22.5-14-1};
\point{CAP-SFD}{10/2}{22.5-14-3.5};
% Elements
\beam{4}{a-SFD}{b-SFD};
\internalforces{a-SFD}{b-SFD}{-3}{6}[3][red]%[0]
\end{tikzpicture}
\end{center}
\newpage
\begin{tikzpicture}[coords]
\dpoint{a}{0}{0}{0};
\dpoint{b}{0}{3}{-1};
\dpoint{c}{1.5}{3}{ -1};
\dbeam{1}{a}{b}[0][1];
\dbeam{1}{b}{c};
\dinternalforces{yz}{a}{b}{.5}{-1}[ -.4][blue];
\dinternalforces{xz}{b}{c}{1}{0};
\end{tikzpicture}
\end{document}
This is the macro for the internal force command
% internalforces
%------------------------------------------------
% \internalforces{initial point}{end point}{initial value}{end value}[parabola height][color][bend position]
% [parabola height][color][bend position] are optional
%
\newcommandx{\internalforces}[7][5=0,6=red,7=.6667]{%
\coordinate (internalforcesVarA) at ($ (#1)!#3cm!-90:(#2) $);
\coordinate (internalforcesVarB) at ($ (#2)!#4cm!90:(#1)$);
\coordinate (internalforcesVarAB) at ($ (internalforcesVarA)!.5!(internalforcesVarB)$);
\coordinate (internalforcesVarC) at ($ (internalforcesVarAB)+2*(0,#5)$);
\coordinate (internalforcesVarAC) at ($ (internalforcesVarA)!#7!(internalforcesVarC)$);
\coordinate (internalforcesVarBC) at ($ (internalforcesVarB)!#7!(internalforcesVarC)$);
\ifthenelse{\equal{#5}{0}}{
\draw [bigLine,color=#6] (#1) -- (internalforcesVarA) (internalforcesVarA) -- (internalforcesVarB) (internalforcesVarB) -- (#2);
\fill [color=#6] (internalforcesVarA) circle (\bigLineWidth/2);
\fill [color=#6] (internalforcesVarB) circle (\bigLineWidth/2);
\fill [color=#6] (#1) circle (\bigLineWidth/2);
\fill [color=#6] (#2) circle (\bigLineWidth/2);
}
{
%\draw [bigLine,color=#6](internalforcesVarA) parabola[parabola height=#5cm] (internalforcesVarB);
%\draw [bigLine,color=#6](internalforcesVarA)--(internalforcesVarAC)--(internalforcesVarBC)--(internalforcesVarB);
%\draw [bigLine,color=blue](internalforcesVarA)--(internalforcesVarB)
%(internalforcesVarAB) -- (internalforcesVarC);
\draw [bigLine,color=#6] (#1) -- (internalforcesVarA) (internalforcesVarA) .. controls (internalforcesVarAC) and (internalforcesVarBC) .. (internalforcesVarB) (internalforcesVarB) -- (#2);
\fill [color=#6] (internalforcesVarA) circle (\bigLineWidth/2);
\fill [color=#6] (internalforcesVarB) circle (\bigLineWidth/2);
\fill [color=#6] (#1) circle (\bigLineWidth/2);
\fill [color=#6] (#2) circle (\bigLineWidth/2);
}
}
Macro for points
%------------------------------------------------
% point
%------------------------------------------------
% \point{name}{x-coordiante}{y-coordiante}
%
\newcommandx{\point}[3]{
\node[coordinate][
shift={(#2*\scalingParameter,#3*\scalingParameter)}](#1){};
}
`````````````````````````````````````````````````
Macro for beam
`````````````````````````````````````````````````
%------------------------------------------------
% beam
%------------------------------------------------
% \beam{type}{initial point}{end point}[rounded initial point][rounded end point]
\newcommandx{\beam}[5][4=0,5=0]{
\ifthenelse{\equal{#1}{1}}{ %
\draw [hugeLine] (#2) -- (#3);
\coordinate (barVarA) at ($ (#2)!\barGap!-\barAngle:(#3) $);
\coordinate (barVarB) at ($ (#3)!\barGap!\barAngle:(#2) $);
\draw [smallLine,dashed] (barVarA) -- (barVarB);
\ifthenelse{\equal{#4}{0}}{}
{\fill (#2) circle (\hugeLineWidth/2);}
\ifthenelse{\equal{#5}{0}}{}
{\fill (#3) circle (\hugeLineWidth/2);}
}{}
\ifthenelse{\equal{#1}{2}}{ %
\draw [bigLine] (#2) -- (#3);
\ifthenelse{\equal{#4}{0}}{}
{\fill (#2) circle (\bigLineWidth/2);}
\ifthenelse{\equal{#5}{0}}{}
{\fill (#3) circle (\bigLineWidth/2);}
}{}
\ifthenelse{\equal{#1}{3}}{ %
\draw [normalLine,dashed] (#2) -- (#3);
}{}
\ifthenelse{\equal{#1}{4}}{ %
\draw [hugeLine] (#2) -- (#3);
\ifthenelse{\equal{#4}{0}}{}
{\fill (#2) circle (\hugeLineWidth/2);}
\ifthenelse{\equal{#5}{0}}{}
{\fill (#3) circle (\hugeLineWidth/2);}
}{}
}
%------------------------------------------------
MAcro for 3Dinternal forces command
``````````````````````````````````````````````
%------------------------------------------------
% 3dinternalforces
%------------------------------------------------
% \dinternalforces{plane}[plane distance]{initial point}{end point}{initial value}{end value}[parabola height][color][bend position];
%
\newcommandx{\dinternalforces}[9][2=0,7=0,8=red,9=.6667]{
%
\ifthenelse{\equal{#1}{xy}}
{\renewcommand{\DhelpVarA}{z}}{}
\ifthenelse{\equal{#1}{yx}}
{\renewcommand{\DhelpVarA}{z}}{}
\ifthenelse{\equal{#1}{xz}}
{\renewcommand{\DhelpVarA}{y}}{}
\ifthenelse{\equal{#1}{zx}}
{\renewcommand{\DhelpVarA}{y}}{}
\ifthenelse{\equal{#1}{yz}}
{\renewcommand{\DhelpVarA}{x}}{}
\ifthenelse{\equal{#1}{zy}}
{\renewcommand{\DhelpVarA}{x}}{}
\begin{scope}[canvas is #1 plane at \DhelpVarA=#2]
\subinternalforces{#3}{#4}{#5}{#6}[#7][#8][#9];
\end{scope}
}
\newcommandx{\subinternalforces}[7][5=0,6=red,7=.6667]{%
\coordinate (internalforcesVarA) at ($ (#1)!#3cm!-90:(#2) $);
\coordinate (internalforcesVarB) at ($ (#2)!#4cm!90:(#1)$);
\coordinate (internalforcesVarAB) at ($ (internalforcesVarA)!.5!(internalforcesVarB)$);
\coordinate (internalforcesVarC) at ($ (internalforcesVarAB)+2*(0,#5)$);
\coordinate (internalforcesVarAC) at ($ (internalforcesVarA)!#7!(internalforcesVarC)$);
\coordinate (internalforcesVarBC) at ($ (internalforcesVarB)!#7!(internalforcesVarC)$);
\ifthenelse{\equal{#5}{0}}{
\draw [bigLine,color=#6] (#1) -- (internalforcesVarA) (internalforcesVarA) -- (internalforcesVarB) (internalforcesVarB) -- (#2);
\fill [color=#6] (internalforcesVarA) circle (\DbigLineWidth/2);
\fill [color=#6] (internalforcesVarB) circle (\DbigLineWidth/2);
\fill [color=#6] (#1) circle (\DbigLineWidth/2);
\fill [color=#6] (#2) circle (\DbigLineWidth/2);
}
{
\draw [bigLine,color=#6] (#1) -- (internalforcesVarA) (internalforcesVarA) .. controls (internalforcesVarAC) and (internalforcesVarBC) .. (internalforcesVarB) (internalforcesVarB) -- (#2);
\fill [color=#6] (internalforcesVarA) circle (\DbigLineWidth/2);
\fill [color=#6] (internalforcesVarB) circle (\DbigLineWidth/2);
\fill [color=#6] (#1) circle (\DbigLineWidth/2);
\fill [color=#6] (#2) circle (\DbigLineWidth/2);
}
}
``````````````````````````````````````````````
[![enter image description here][1]][1]
[![enter image description here][2]][2]
[1]: https://i.stack.imgur.com/IQTkm.jpg
[2]: https://i.stack.imgur.com/m9li2.jpg