Schémas de la théorie des poutres avec TikZ

Pour le plus grand plaisir de mes amis profs de mécanique, je présente dans cet article une façon de réaliser des schémas pour la théorie des poutres sous TikZ.

Exemple

Schéma d'une poutre (très) hyperstatique
Schéma d’une poutre (très) hyperstatique

Code associé

Préambule

Le préambule du document doit contenir les lignes suivantes :

\usepackage{tikz}
\usetikzlibrary{patterns}
 
\newcommand*{\Rayon}{0.15}
\newcommand*{\tailleTriangle}{0.5}
\newcommand*{\largeurSol}{1}
\newcommand*{\hauteurSol}{0.4}
\pgfmathsetmacro{\basTriangle}{sin(60)*\tailleTriangle}
\newcommand*{\nbFlechesCont}{10}
\newcommand*{\rayonCouple}{0.1}
\newcommand*{\angleCouple}{110}
 
 
\tikzset{
	sol/.pic ={
		\draw[thick](-\largeurSol/2,0)--(\largeurSol/2,0);
		\fill[fill,pattern=north east lines] (-\largeurSol/2,0) rectangle++ (\largeurSol,-\hauteurSol);
	},
	mur/.pic ={
		\draw[thick](0,-\largeurSol/2)--(0,\largeurSol/2);
		\fill[fill,pattern=north east lines] (0,-\largeurSol/2) rectangle++ (\hauteurSol,\largeurSol);
	},	
	triangle/.pic ={
		\draw(0,0)--++(-60:\tailleTriangle)--++(-\tailleTriangle,0)--cycle;
		\node[anchor=south]{ \tikzpictext};
	},
	pivot/.pic ={
		\pic{triangle};
		\pic at (0,-\basTriangle){sol};
	},
	ponctuelle/.pic ={
		\pic{triangle};
		\draw(-\Rayon,-\basTriangle-\Rayon) circle(\Rayon);
		\draw(\Rayon,-\basTriangle-\Rayon) circle(\Rayon);
		\pic at(0,-\basTriangle-2*\Rayon){sol};
	},
	encastrd/.pic ={
		\pic{mur};
		\node{ \tikzpictext};		
	},
	encastrg/.pic ={
		\pic[xscale=-1]{mur};
		\node{ \tikzpictext};		
	}	
}
\newcommand{\chargecont}[4][]{% #1 (optionnel) style, #2 point de départ, #3 longueur, #4 nom de la charge
	\pgfmathsetmacro{\pas}{#3/\nbFlechesCont}
	\foreach \x in {0,\pas,...,#3}{
		\draw[latex-,#1] ([xshift=\x cm]C) --++(0,0.5);
	}
	\draw[#1]([yshift=0.5 cm]#2)--++(#3,0) node[midway,above]{#4};
}
\newcommand{\couple}[3][]{% #1 (optionnel) style, #2 point d'application, #3 nom du couple
	\draw[->,#1] (#2) +(\angleCouple:\rayonCouple) arc(\angleCouple:-\angleCouple:\rayonCouple) node[anchor=north] {$\mathcal{C}$};
}

Exemple d’utilisation

Pour réaliser l’exemple illustré plus haut, il suffit d’utiliser le code suivant :

\begin{tikzpicture}[scale=2]
	\coordinate(A) at (0,0);
	\coordinate(B) at (1,0);
	\coordinate(C) at (2,0);
	\coordinate(D) at (3,0);
	\coordinate(E) at (4,0);
	\coordinate(F) at (5,0);
	\draw[ultra thick,anchor=south west,blue]
		(A) node[anchor=south west]{A}
		--(B) node[anchor=north]{B} 
		--(C) node[anchor=south east]{C} 
		--(D) node[anchor=south west]{D} 
		--(E) node[anchor=south east]{E}
		--(F) node[anchor=south east]{F};
	\pic at (A) {encastrg};
	\draw[very thick,red,latex-] (B) --++(0,1) node[anchor=east]{$F$};
	\chargecont[green,thick]{C}{1}{$p$}		
	\pic at (2,0) {pivot};	
	\pic at (3,0) {ponctuelle};	
	\pic at (F) {encastrd};
	\couple[red,thick]{E}{$\mathcal{C}$};
\end{tikzpicture}

Explications

Les liaisons sont dessinées à l’aide de la commande \pic. Celle-ci s’utilise comme la commande \node, sauf qu’il faut remplacer le contenu du nœud par le nom de la liaison que l’on souhaite dessiner : pivot, ponctuelle, encastrg (encastrement à gauche) ou encastrd (encastrement à droite).

Les forces ponctuelles se dessinent simplement avec la commande \draw (voir exemple). Les forces réparties de façon homogène se définissent ainsi :

\chargecont[<style (optionnel)>]{<point de départ>}{<longueur d'application>}{<nom de la charge>}

Les couples sont définis à l’aide de la commande suivante :

\couple[<style (optionnel)>]{<point d'application>}{<nom du couple>};

Pour aller plus loin

Si vous avez des schémas plus complexes (poutre non rectiligne, ensemble de solides etc.), vous pouvez regarder du côté de la librairie Structural Analysis.