\documentclass[12pt,a4paper]{article}

%******************************* Paquetages ******************************

%Conventions fran\c{c}aises
\usepackage[francais]{babel}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listing}
%Pour la g\'eom\'etrie.
\usepackage{pstricks-add}
%pour les calculs
\usepackage{fp}

\author{Fran\c cois Boerkmann \\francois.boerkmann@ac-poitiers.fr}
\title{R\'ealisation d'une r\`egle en Pstricks}

\newcommand{\reglecasseedg}[2]{
\FPset{\longueur}{#2}
\FPclip{\longueur}{\longueur}
\FPset{\longregle}{#2}
\FPadd{\longregle}{\longregle}{1}
\FPclip{\longregle}{\longregle}
\psframe(-1,0)(\longregle,2)
\pspolygon[fillstyle=solid,fillcolor=white,linecolor=white](-1,0)(-0.5,0)(-0.25,0.5)(-0.6,1.25)(-0.5,1.5)(-0.5,2)(-1,2)
%la ligne \`a gauche qui fait l'effet cass\'ee.
\psline[linecolor=black](-0.5,0)(-0.25,0.5)(-0.6,1.25)(-0.5,1.5)(-0.5,2)
\FPadd{\a}{\longregle}{0.5}
\FPadd{\b}{\longregle}{0.25}
\FPclip{\a}{\a}
\FPclip{\b}{\b}
%la ligne \`a droite qui fait l'effet cass\'ee.
\psline(\longregle,0)(\a,0.5)(\b,1)(\a,1.25)(\a,1.5)(\longregle,2)
\psline[linecolor=white](\longregle,0)(\longregle,2)
%les petits graduations
\FPmul{\nbpetitesgrad}{\longueur}{10}
\FPadd{\nbpetitesgrad}{\nbpetitesgrad}{1}
\FPclip{\nbpetitesgrad}{\nbpetitesgrad}
  \multido{\r=0+0.1}{\nbpetitesgrad}
  {
  \psline(\r,2)(\r,1.75)
  }
%les moyennes graduations
\FPmul{\nbmoygrad}{\longueur}{2}
\FPadd{\nbmoygrad}{\nbmoygrad}{1}
\FPtrunc{\nbmoygrad}{\nbmoygrad}{0}
\FPclip{\nbmoygrad}{\nbmoygrad}
  \multido{\r=0+0.5}{\nbmoygrad}
  {
  \psline(\r,2)(\r,1.55)
  }
%les grandes graduations
\FPset{\nbgrdgrad}{#2}
\FPadd{\nbgrdgrad}{\nbgrdgrad}{1}
\FPtrunc{\nbgrdgrad}{\nbgrdgrad}{0}
\FPclip{\nbgrdgrad}{\nbgrdgrad}
\multido{\r=0+1}{\nbgrdgrad}
  {
  \psline(\r,2)(\r,1.25)
  }
%la num\'erotation
\FPset{\nombre}{#1}
\multido{\r=0+1}{\nbgrdgrad}
{\FPclip{\nombre}{\nombre}
\rput(\r,1){\nombre}
\FPadd{\nombre}{\nombre}{1}
}
}


\newcommand{\reglecasseed}[1]{
\FPset{\longueur}{#1}
\FPclip{\longueur}{\longueur}
\FPset{\longregle}{#1}
\FPadd{\longregle}{\longregle}{1}
\FPclip{\longregle}{\longregle}
\psframe(-1,0)(\longregle,2)
\pscircle(-0.5,0.5){0.12}
\FPadd{\a}{\longregle}{0.5}
\FPadd{\b}{\longregle}{0.25}
\FPclip{\a}{\a}
\FPclip{\b}{\b}
%la ligne \`a droite qui fait l'effet cass\'ee.
\psline(\longregle,0)(\a,0.5)(\b,1)(\a,1.25)(\a,1.5)(\longregle,2)
\psline[linecolor=white](\longregle,0)(\longregle,2)

%les petits graduations
\FPmul{\nbpetitesgrad}{\longueur}{10}
\FPadd{\nbpetitesgrad}{\nbpetitesgrad}{1}
\FPclip{\nbpetitesgrad}{\nbpetitesgrad}
  \multido{\r=0+0.1}{\nbpetitesgrad}
  {
  \psline(\r,2)(\r,1.75)
  }
%les moyennes graduations
\FPmul{\nbmoygrad}{\longueur}{2}
\FPadd{\nbmoygrad}{\nbmoygrad}{1}
\FPtrunc{\nbmoygrad}{\nbmoygrad}{0}
\FPclip{\nbmoygrad}{\nbmoygrad}
  \multido{\r=0+0.5}{\nbmoygrad}
  {
  \psline(\r,2)(\r,1.55)
  }
%les grandes graduations
\FPset{\nbgrdgrad}{#1}
\FPadd{\nbgrdgrad}{\nbgrdgrad}{1}
\FPtrunc{\nbgrdgrad}{\nbgrdgrad}{0}
\FPclip{\nbgrdgrad}{\nbgrdgrad}
\multido{\r=0+1}{\nbgrdgrad}
  {
  \psline(\r,2)(\r,1.25)
  }
%la num\'erotation
\FPset{\nombre}{0}
\multido{\r=0+1}{\nbgrdgrad}
{\FPclip{\nombre}{\nombre}
\rput(\r,1){\nombre}
\FPadd{\nombre}{\nombre}{1}
}
}


\newcommand{\regle}[1]{
\FPset{\longueur}{#1}
\FPclip{\longueur}{\longueur}
\FPset{\longregle}{#1}
\FPadd{\longregle}{\longregle}{1}
\FPclip{\longregle}{\longregle}
\psframe(-1,0)(\longregle,2)
\pscircle(-0.5,0.5){0.12}
\FPadd{\a}{\longregle}{0.5}
\FPadd{\b}{\longregle}{0.25}
\FPclip{\a}{\a}
\FPclip{\b}{\b}
%les petits graduations
\FPmul{\nbpetitesgrad}{\longueur}{10}
\FPadd{\nbpetitesgrad}{\nbpetitesgrad}{1}
\FPclip{\nbpetitesgrad}{\nbpetitesgrad}
  \multido{\r=0+0.1}{\nbpetitesgrad}
  {
  \psline(\r,2)(\r,1.75)
  }
%les moyennes graduations
\FPmul{\nbmoygrad}{\longueur}{2}
\FPadd{\nbmoygrad}{\nbmoygrad}{1}
\FPtrunc{\nbmoygrad}{\nbmoygrad}{0}
\FPclip{\nbmoygrad}{\nbmoygrad}
  \multido{\r=0+0.5}{\nbmoygrad}
  {
  \psline(\r,2)(\r,1.55)
  }
%les grandes graduations
\FPset{\nbgrdgrad}{#1}
\FPadd{\nbgrdgrad}{\nbgrdgrad}{1}
\FPtrunc{\nbgrdgrad}{\nbgrdgrad}{0}
\FPclip{\nbgrdgrad}{\nbgrdgrad}
\multido{\r=0+1}{\nbgrdgrad}
  {
  \psline(\r,2)(\r,1.25)
  }
%la num\'erotation
\FPset{\nombre}{0}
\multido{\r=0+1}{\nbgrdgrad}
{\FPclip{\nombre}{\nombre}
\rput(\r,1){\nombre}
\FPadd{\nombre}{\nombre}{1}
}
}



\begin{document}
\maketitle

La macro \og regle \fg:\\
\begin{pspicture}(-1,-1)(8,3)
 \regle{5.3}
\end{pspicture}


La macro \og reglecasseed \fg:\\
\begin{pspicture}(-1,-1)(8,3)
 \reglecasseed{3.8}
\end{pspicture}

La macro \og reglecasseedg \fg:\\
\begin{pspicture}(-1,-1)(8,3)
 \reglecasseedg{23}{3.8}
\end{pspicture}

\newpage
Exemple d'utilisation:\\
\begin{pspicture}(-1,-1)(6,3)
 \reglecasseed{5.5}
\psline{|-|}(0,2.25)(4.8,2.25)
\psline[linestyle=dotted,linewidth=0.05](1.7,2.25)(1.7,2)
\uput{0.15}[180](0,2.25){A}
\uput{0.15}[0](4.8,2.25){B}
\psdots[dotstyle=x,dotscale=1.25](1.7,2.25)
\uput{0.15}[90](1.7,2.25){C}
\end{pspicture}
\begin{enumerate}
\item Lire sur le dessin ci-dessus la longueur des segments [AB] et [AC].
\item Calculer la longueur du segment [BC].
\end{enumerate}
\end{document}
