\pgfkeys{
        /press/dimension/height/.code = {#1},
        /press/dimension/height/.initial = {0.75 cm},
        /press/dimension/width top/.code = {#1},
        /press/dimension/width top/.initial = {0.75 cm},
        /press/dimension/width bottom/.code = {#1},
        /press/dimension/width bottom/.initial = {1.5 cm},
        /press/.is choice,
        /press/basic/.code = {#1},
        /press/basic/.default = {},
        /press/roller/.code = {
            \pgfkeys{/press/basic/.append code = {
                \pgfpointscale{0.5}{\north}
                \pgf@ya = \pgf@y

                \pgfpointscale{0.2}{\southeast}
                \pgf@xa = \pgf@x
                
                \pgfpathmoveto{\pgfpoint{0}{\pgf@ya}}
                \pgfpatharc{0}{360}{\pgf@xa}
                \pgfpathclose
                \pgfpatharc{180}{540}{\pgf@xa}
                \pgfpathclose
                
                \pgfusepath{stroke}
            }
        }},
        /press/piston/.code = {
            \pgfkeys{/press/basic/.append code = {
                \pgfpointscale{0.9}{\north}
                \pgf@ya = \pgf@y

                \pgfpointscale{0.5}{\north}
                \pgf@yb = \pgf@y

                \pgfpointscale{0.6}{\northeast}
                \pgf@xa = \pgf@x
                
                \pgfpathmoveto{\pgfpoint{0}{\pgf@ya}}
                \pgfpathlineto{\pgfpoint{0}{\pgf@yb}}
                
                \pgfpathmoveto{\pgfpoint{-\pgf@xa}{\pgf@yb}}
                \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
                
                \pgfusepath{stroke}
            }
        }},
        /press/pelletizing/.code = {
            \pgfkeys{/press/basic/.append code = {
                \pgfpointscale{0.5}{\north}
                \pgf@ya = \pgf@y

                \pgfpointscale{0.4}{\northeast}
                \pgf@xa = \pgf@x
                
                \pgfpathcircle{\pgfpoint{0}{\pgf@ya}}{\pgf@xa}
                \pgfusepath{stroke}
            }
        }},
        /press/.default = {\pgfkeys{/pump/basic}}  
}


\pgfdeclareshape{press}{
    \savedanchor{\centerpoint}{
        \pgfpointorigin
    }
    \savedanchor{\north}{
        \pgfpointscale{0.67}{\pgfpoint{0}{\pgfkeysvalueof{/press/dimension/height}}}
    }
    \savedanchor{\northeast}{
        \pgfpointscale{0.67}{\pgfpoint{0}{\pgfkeysvalueof{/press/dimension/height}}}
        \pgf@ya = \pgf@y
        \pgfpointscale{0.5}{\pgfpoint{\pgfkeysvalueof{/press/dimension/width top}}{0}}
        \pgf@y = \pgf@ya
    }
    \savedanchor{\southeast}{
        \pgfpointscale{0.33}{\pgfpoint{0}{\pgfkeysvalueof{/press/dimension/height}}}
        \pgf@ya = -\pgf@y
        \pgfpointscale{0.5}{\pgfpoint{\pgfkeysvalueof{/press/dimension/width bottom}}{0}}
        \pgf@y = \pgf@ya
    }
    
    \anchor{center}{
        \centerpoint
    }
    \anchor{north}{
        \north
    }
    \anchor{east}{
        \southeast
        \pgfpointscale{0.84}{\pgfpoint{\pgf@x}{0}}
    }
    \anchor{west}{
        \southeast
        \pgfpointscale{0.84}{\pgfpoint{-\pgf@x}{0}}
    }
    \anchor{south}{
        \southeast
        \pgfpoint{0}{\pgf@y}
    }
    \anchor{northeast}{
        \northeast
    }
    \anchor{near northeast}{
        \northeast
        \pgf@x = 1.33\pgf@x
        \pgf@y = 0.5\pgf@y
    }
    \anchor{northwest}{
        \northeast
        \pgfpoint{-\pgf@x}{\pgf@y}
    }
    \anchor{near northwest}{
        \northeast
        \pgf@x = -1.33\pgf@x
        \pgf@y = 0.5\pgf@y
    }
    \anchor{southeast}{
        \southeast
    }
    \anchor{near southeast}{
        \southeast
        \pgf@x = 0.8\pgf@x
    }
    \anchor{southwest}{
        \southeast
        \pgfpoint{-\pgf@x}{\pgf@y}
    }
    \anchor{near southwest}{
        \southeast
        \pgf@x = -0.8\pgf@x
    }

    
    \backgroundpath{
        \pgfpathmoveto{\northeast}
        \pgfpathlineto{\southeast}
        \southeast
        \pgfpathlineto{\pgfpoint{-\pgf@x}{\pgf@y}}
        \northeast
        \pgfpathlineto{\pgfpoint{-\pgf@x}{\pgf@y}}
        \pgfpathclose

        \pgfusepath{stroke, clip}

        \southeast
        
        \southeast
        \pgfpathmoveto{\pgfpoint{-\pgf@x}{0}}
        \southeast
        \pgfpathlineto{\pgfpoint{\pgf@x}{0}}

        \pgfpointscale{0.6}{\southeast}
        \pgf@xa = \pgf@x

        \southeast
        \pgf@ya = \pgf@y

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

        \pgfusepath{stroke}
        
        \pgfkeys{/press/basic}
    
        \pgfusepath{stroke}
    }
}