\pgfkeys{
        /drier/dimension/height/.code = {#1},
        /drier/dimension/height/.initial = 2 cm,
        /drier/dimension/width bottom/.code = {#1},
        /drier/dimension/width bottom/.initial = 1 cm,
        /drier/dimension/width top/.code = {#1},
        /drier/dimension/width top/.initial = 0.7 cm,
        /drier/.is choice,
        /drier/basic/.code = {#1},
        /drier/basic/.initial = {},
        /drier/.default = {\pgfkeys{/drier/basic}},
        /drier/oven/.code = {
            \pgfkeys{/drier/basic/.append code = {
                \northeast
                \pgf@xa = \pgf@x
                \pgf@ya = \pgf@y

                \pgfpointscale{0.75}{\pgfpoint{\pgf@xa}{0}}
                \pgf@xa = \pgf@x
                
                \foreach \j in {0.1, 0.2, 0.3} {
                    \pgfpointscale{0.3 + \j}{\pgfpoint{0}{\pgf@ya}}
                    \pgf@yb = \pgf@y

                    \pgfpathmoveto{\pgfpoint{-\pgf@xa}{\pgf@yb}}
                    \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
                }
            }
        }},
        /drier/turbo/.code = {
            \pgfkeys{/drier/basic/.append code = {
                \pgfpointscale{0.2}{\east}
                \pgf@xa = \pgf@x
                
                \pgfpointscale{0.15}{\north}
                \pgf@ya = \pgf@y

                \pgfpathmoveto{\pgfpoint{-2 \pgf@xa}{\pgf@ya}}
                \pgfpathlineto{\pgfpoint{2 \pgf@xa}{\pgf@ya}}

                \east
                \pgfpathmoveto{\pgfpoint{- \pgf@x}{2 \pgf@ya}}
                \pgfpathlineto{\pgfpoint{-1.5 \pgf@xa}{2 \pgf@ya}}

                \east
                \pgfpathmoveto{\pgfpoint{\pgf@x}{2 \pgf@ya}}
                \pgfpathlineto{\pgfpoint{1.5 \pgf@xa}{2 \pgf@ya}}

                \pgfpathmoveto{\pgfpoint{-2 \pgf@xa}{3 \pgf@ya}}
                \pgfpathlineto{\pgfpoint{2 \pgf@xa}{3 \pgf@ya}}

                \pgfpathmoveto{\pgfpoint{0}{\pgf@ya}}
                \pgfpathlineto{\north}
            }
        }},
        /drier/fluidized/.code = {
            \pgfkeys{/drier/basic/.append code = {
                \east
                \pgf@xa = \pgf@x
                
                \pgfpointscale{0.12}{\north}
                \pgf@ya = \pgf@y
                
                \pgfpathmoveto{\pgfpoint{- \pgf@xa}{\pgf@ya}}
                \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@ya}}

                \pgfusepath{stroke}
                
                \foreach \j in {-0.75, -0.25, 0.25, 0.75} {
                    \pgfpointscale{\j}{\pgfpoint{\pgf@xa}{0}}
                    \pgfpathcircle{\pgfpoint{\pgf@x}{2 \pgf@ya}}{1 pt}
                }
                
                \foreach \j in {-0.5, 0, 0.5} {
                    \pgfpointscale{\j}{\pgfpoint{\pgf@xa}{0}}
                    \pgfpathcircle{\pgfpoint{\pgf@x}{3 \pgf@ya}}{1 pt}
                }
                \pgfusepath{fill}
                
                \pgfpathmoveto{\pgfpoint{- \pgf@xa}{4 \pgf@ya}}
                \pgfpathlineto{\pgfpoint{\pgf@xa}{4 \pgf@ya}}
            }
        }},
        /drier/spray/.code = {
            \pgfkeys{/drier/basic/.append code = {
                \north
                \pgf@ya = 0.85 \pgf@y

                \pgf@xa = 0.2 cm

                \pgfpathmoveto{\north}
                \pgfpathlineto{\pgfpoint{-\pgf@xa}{\pgf@ya}}
                \pgfpathmoveto{\north}
                \pgfpathlineto{\pgfpoint{0}{\pgf@ya}}
                \pgfpathmoveto{\north}
                \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@ya}}
            }
        }},
        /drier/belt/.code = {
            \pgfkeys{/drier/basic/.append code = {
                \north
                \pgf@ya = 0.6 \pgf@y    % Line above circles

                \north
                \pgf@yb = 0.4 \pgf@y    % Line underneath circles

                \east
                \pgf@xa = 0.6 \pgf@x    % Position center of circles

                \east
                \pgf@xb = 0.2 \pgf@x    % Radius of circles

                \pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
                \pgfpatharc{90}{450}{\pgf@xb}
                
                \pgfpathlineto{\pgfpoint{-\pgf@xa}{\pgf@ya}}
                \pgfpatharc{90}{450}{\pgf@xb}

                \pgfpathmoveto{\pgfpoint{-\pgf@xa}{\pgf@yb}}
                \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}

                \pgfusepath{stroke}
            }
        }},
        /drier/rotary/.code = {
            \pgfkeys{/drier/basic/.append code = {
                \north
                \pgf@ya = 0.3 \pgf@y
                \pgf@yb = 0.8 \pgf@y

                \east 
                \pgf@xa = 0.5 \pgf@x
                \pgf@xb = 0.8 \pgf@x
                
                \pgfpathmoveto{\pgfpoint{0}{\pgf@yb}}
                \pgfpatharc{90}{45}{\pgf@xb}
                \pgfpatharc{45}{135}{\pgf@xb}
                
                \pgfpathcircle{\pgfpoint{0}{\pgf@ya}}{\pgf@xa}
            }
        }}
}

\pgfdeclareshape{drier}{
    \savedanchor{\centerpoint}{\pgfpointorigin}
    \savedanchor{\east}{
        \pgfpointscale{0.5}{\pgfpoint{\pgfkeysvalueof{/drier/dimension/width bottom}}{0}}
    }
    \savedanchor{\north}{
        \pgfpointscale{0.5}{\pgfpoint{0}{\pgfkeysvalueof{/drier/dimension/height}}}
    }
    \savedanchor{\eastnorth}{
        \pgfpointscale{0.35}{\pgfpoint{0}{\pgfkeysvalueof{/drier/dimension/height}}}
        \pgf@ya = \pgf@y
        \pgfpointscale{0.5}{\pgfpoint{\pgfkeysvalueof{/drier/dimension/width bottom}}{0}}
        \pgf@y = \pgf@ya
    }
    \savedanchor{\northeast}{
         \pgfpointscale{0.5}{\pgfpoint{\pgfkeysvalueof{/drier/dimension/width top}}{\pgfkeysvalueof{/drier/dimension/height}}}
    }
    

    \anchor{center}{
        \centerpoint
    }
    \anchor{east}{
        \east
    }
    \anchor{north}{
        \north
    }
    \anchor{west}{
        \east 
        \pgf@x = -\pgf@x
    }
    \anchor{south}{
        \north
        \pgf@y = -\pgf@y
    }
    \anchor{northeast}{
        \eastnorth
    }
    \anchor{far northeast}{
        \northeast
    }
    \anchor{near northeast}{
        \eastnorth
        \pgf@y = 0.71\pgf@y
    }
    \anchor{northwest}{
        \eastnorth
        \pgf@x = -\pgf@x
    }
    \anchor{far northwest}{
        \northeast
        \pgf@x = -\pgf@x
    }
    \anchor{near northwest}{
        \eastnorth
        \pgf@y = 0.71\pgf@y
        \pgf@x = -\pgf@x
    }
    \anchor{southeast}{
        \east
        \pgf@xa = \pgf@x
        \north
        \pgf@y = -\pgf@y
        \pgf@x = \pgf@xa
    }
    \anchor{near southeast}{
        \east
        \pgf@xa = \pgf@x
        \north
        \pgf@y = -0.5\pgf@y
        \pgf@x = \pgf@xa
    }
    \anchor{southwest}{
        \east
        \pgf@xa = \pgf@x
        \north
        \pgf@y = -\pgf@y
        \pgf@x = -\pgf@xa
    }
    \anchor{near southwest}{
        \east
        \pgf@xa = \pgf@x
        \north
        \pgf@y = -0.5\pgf@y
        \pgf@x = -\pgf@xa
    }


    \backgroundpath{
        \pgfpathmoveto{\east}
        \pgfpathlineto{\eastnorth}
        \pgfpathlineto{\northeast}
        
        \northeast
        \pgfpathlineto{\pgfpoint{-\pgf@x}{\pgf@y}}
        \eastnorth
        \pgf@xa = \pgf@x
        \pgfpathlineto{\pgfpoint{-\pgf@x}{\pgf@y}}

        \north
        \pgf@ya = \pgf@y
        \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}
        \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}}
        \pgfpathclose
        
        \pgfkeys{/drier/basic}
        
        \pgfusepath{stroke}
    }
}