\section{Protractor}
Based on an idea by Yves Combe, the following macro allows you to draw a protractor. 
The operating principle is even simpler. Just name a half-line (a ray). The protractor will be placed on the origin $O$, the direction of the half-line is given by $A$. The angle is measured in the direct direction of the trigonometric circle.
\subsection{The macro \tkzcname{tkzProtractor}} % (fold)
\label{sub:the_macro_tkzcname_tkzprotractor}

% subsection the_macro_tkzcname_tkzprotractor (end)
\begin{NewMacroBox}{tkzProtractor}{\oarg{local options}\parg{$O,A$}}%
\begin{tabular}{lll}%
options    & default & definition     \\ 
\midrule
\TOline{lw}  {0.4 pt} {line thickness}
\TOline{scale}  {1} {ratio: adjusts the size of the protractor} 
\TOline{return} {false} {trigonometric circle indirect}
\end{tabular}
\end{NewMacroBox}

\subsubsection{The circular protractor} 
Measuring in the forward direction

\begin{tkzexample}[latex=7cm,small] 
\begin{tikzpicture}[scale=.5]
\tkzDefPoint(2,0){A}\tkzDefPoint(0,0){O}
\tkzDefShiftPoint[A](31:5){B}
\tkzDefShiftPoint[A](158:5){C}
\tkzDrawPoints(A,B,C)
\tkzDrawSegments[color = red,
    line width = 1pt](A,B A,C)
  \tkzProtractor[scale = 1](A,B) 
\end{tikzpicture}
\end{tkzexample}  

\subsubsection{The circular protractor, transparent and returned}

\begin{tkzexample}[latex=7cm,small] 
\begin{tikzpicture}[scale=.5]
  \tkzDefPoint(2,3){A}
  \tkzDefShiftPoint[A](31:5){B}  
   \tkzDefShiftPoint[A](158:5){C}   
  \tkzDrawSegments[color=red,line width=1pt](A,B A,C)
  \tkzProtractor[return](A,C) 
\end{tikzpicture}
\end{tkzexample}
\endinput