\pgfkeys{
        /liquid filter/dimension/height/.code = {#1},
        /liquid filter/dimension/height/.initial = {1.75 cm},
        /liquid filter/dimension/width/.code = {#1},
        /liquid filter/dimension/width/.initial = {1 cm},
        /liquid filter/.is choice,
        /liquid filter/basic/.code = {#1},
        /liquid filter/basic/.default = {},
        /liquid filter/helper/striped line/.code n args = {1}{
            \pgfusepath{stroke}

            \pgfpointscale{#1}{\north}
            \pgf@ya = \pgf@y
            
            \east
            \pgf@xa = \pgf@x

            \pgfsetdash{{0.20 cm}{0.20 cm}}{0 cm}

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

            \pgfusepath{stroke}

            \pgfsetdash{}{0pt}
        },
        /liquid filter/helper/striped line/.default = {0},
        /liquid filter/general/.code = {
            \pgfkeys{/liquid filter/basic/.append code = {
                \pgfkeys{/liquid filter/helper/striped line = {0}}
            }
        }},
        /liquid filter/bag/.code = {
            \pgfkeys{/liquid filter/basic/.append code = {
                \pgfkeys{/liquid filter/helper/striped line = {0.6}}
                \pgfkeys{/liquid filter/helper/striped line = {-0.6}}

                \pgfpointscale{0.3}{\east}
                \pgf@xa = \pgf@x

                \east
                \pgfpathmoveto{\pgfpoint{-\pgf@x}{0}}
                \pgfpathlineto{\pgfpoint{-\pgf@xa}{0}}

                \pgfpathmoveto{\east}
                \pgfpathlineto{\pgfpoint{\pgf@xa}{0}}

                \pgfusepath{stroke}

                \pgfsetdash{{0.10 cm}{0.05 cm}}{0 cm}

                \pgfpointscale{0.3}{\east}
                \pgf@xa = \pgf@x
                
                \pgfpointscale{0.4}{\north}
                \pgf@ya = \pgf@y
            
                \pgfpathmoveto{\pgfpoint{-\pgf@xa}{0}}
                \pgfpathlineto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}
                \pgfpathlineto{\pgfpoint{\pgf@xa}{-\pgf@ya}}
                \pgfpathlineto{\pgfpoint{\pgf@xa}{0}}

                \pgfusepath{stroke} 
                \pgfsetdash{}{0pt}
            }
        }},
        /liquid filter/bed/.code = {
            \pgfkeys{/liquid filter/basic/.append code = {
                \pgfkeys{/liquid filter/helper/striped line = {0.6}}
                \pgfkeys{/liquid filter/helper/striped line = {-0.6}}
                
                \east
                \pgf@xa = \pgf@x

                \pgfpointscale{0.6}{\north}
                \pgf@ya = \pgf@y

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

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

                \pgfusepath{stroke}
            }
        }},
        /liquid filter/suction/.code = {
            \pgfkeys{/liquid filter/basic/.append code = {
                \pgfusepath{stroke}

                \pgfpointscale{-0.5}{\north}
                \pgf@ya = \pgf@y
                
                \east
                \pgf@xa = \pgf@x

                \pgfsetdash{{0.20 cm}{0.05 cm}}{0.1 cm}

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

                \pgfusepath{stroke}

                \pgfsetdash{}{0pt}
                }
        }},
        /liquid filter/rotary/.code = {
            \pgfkeys{/liquid filter/basic/.append code = {
                \pgfkeys{/liquid filter/helper/striped line = {0.6}}
                \pgfkeys{/liquid filter/helper/striped line = {-0.6}}

                \pgfsetdash{{0.2 cm}{0.05 cm}}{0 cm}

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

                \pgfpathcircle{\centerpoint}{\pgf@yb}

                \pgfusepath{stroke} 
                \pgfsetdash{}{0pt}

                \pgfpointscale{0.4}{\north}
                \pgf@ya = \pgf@y

                \pgfpathmoveto{\pgfpointpolar{45}{\pgf@ya}}
                \pgfpatharc{45}{135}{\pgf@ya}

                \pgfusepath{stroke}
            }
        }},
        /liquid filter/rotary with scraper/.code = {
            \pgfkeys{/liquid filter/basic/.append code = {
                \pgfkeys{/liquid filter/helper/striped line = {0.6}}
                \pgfkeys{/liquid filter/helper/striped line = {-0.6}}

                \pgfsetdash{{0.2 cm}{0.05 cm}}{0 cm}

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

                \pgfpathcircle{\pgfpoint{-\pgf@yb}{0}}{\pgf@yb}

                \pgfusepath{stroke} 
                \pgfsetdash{}{0pt}

                \pgfpointscale{0.4}{\north}
                \pgf@ya = \pgf@y

                \pgfpathmoveto{\pgfpoint{\pgf@yb}{\pgf@ya}}
                \pgfpatharc{90}{45}{\pgf@ya}
                
                \pgfpathmoveto{\pgfpoint{\pgf@yb}{\pgf@ya}}
                \pgfpatharc{90}{135}{\pgf@ya}

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

                
                \pgfpathmoveto{\centerpoint}
                \pgfpathlineto{\pgfpoint{0}{\pgf@yb}}
                \east
                \pgfpathlineto{\pgfpoint{1.3 \pgf@x}{\pgf@yb}}

                \pgfusepath{stroke}
            }
        }},
        /liquid filter/belt/.code = {
            \pgfkeys{/liquid filter/basic/.append code = {
                \pgfkeys{/liquid filter/helper/striped line = {0.6}}
                \pgfkeys{/liquid filter/helper/striped line = {-0.6}}
                
                \pgfpointscale{0.3}{\east}
                \pgf@xa = \pgf@x

                \pgfpointscale{1 - 0.3}{\east}
                \pgf@xb = \pgf@x

                \pgfpathmoveto{\pgfpoint{\pgf@xb}{0}}
                \pgfpatharc{90}{450}{\pgf@xa}
                \pgfpathclose

                \pgfpathmoveto{\pgfpoint{-\pgf@xb}{0}}
                \pgfpatharc{90}{450}{\pgf@xa}
                \pgfpathclose

                \pgfusepath{stroke}
                
                \pgfsetdash{{0.2 cm}{0.05 cm}}{0 cm}
                \pgfpathmoveto{\pgfpoint{\pgf@xb}{0}}
                \pgfpathlineto{\pgfpoint{-\pgf@xb}{0}}

                
                \pgfpathmoveto{\pgfpoint{\pgf@xb}{-2 \pgf@xa}}
                \pgfpathlineto{\pgfpoint{-\pgf@xb}{-2 \pgf@xa}}
                \pgfusepath{stroke}
                \pgfsetdash{}{0pt}
            }
        }},
        /liquid filter/press/.code = {
            \pgfkeys{/liquid filter/basic/.append code = {
                \pgfusepath{stroke}

                \pgfsetdash{{0.20 cm}{0.1 cm}}{0 cm}

                \foreach \j in {-0.6, -0.2, 0.2, 0.6} {
                    \pgfpointscale{\j}{\north}
                    \pgf@ya = \pgf@y

                    \east
                    \pgfpathmoveto{\pgfpoint{-\pgf@x}{\pgf@ya}}
                    \east
                    \pgfpathlineto{\pgfpoint{\pgf@x}{\pgf@ya}}
                }
                \pgfusepath{stroke}
                \pgfsetdash{}{0pt}

                \pgfpointscale{0.75}{\east}
                \pgf@xa = \pgf@x

                \foreach \j in {-0.8, -0.4, 0, 0.4, 0.8} {
                    \pgfpointscale{\j}{\north}
                    \pgf@ya = \pgf@y

                    \pgfpathmoveto{\pgfpoint{-\pgf@xa}{\pgf@ya}}
                    \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@ya}}
                }
                \pgfusepath{stroke}
            }
        }},
        /liquid filter/ion/.code = {
            \pgfkeys{/liquid filter/basic/.append code = {
                \pgfkeys{/liquid filter/helper/striped line = {0.6}}
                \pgfkeys{/liquid filter/helper/striped line = {-0.6}}

                \pgftext[]{\tiny ION}
                \pgfusepath{stroke}
            }
        }},
        /liquid filter/bio/.code = {
            \pgfkeys{/liquid filter/basic/.append code = {
                \pgfkeys{/liquid filter/helper/striped line = {0.6}}
                \pgfkeys{/liquid filter/helper/striped line = {-0.6}}

                \pgftext[]{\tiny BIO}
                \pgfusepath{stroke}
            }
        }},
        /liquid filter/.default = {\pgfkeys{/liquid filter/basic}}
}


\pgfdeclareshape{liquid filter}{
    \savedanchor{\centerpoint}{
        \pgfpointorigin
    }
    \savedanchor{\north}{
        \pgfpointscale{0.5}{\pgfpoint{0}{\pgfkeysvalueof{/liquid filter/dimension/height}}}
    }
    \savedanchor{\northeast}{
        \pgfpointscale{0.5}{\pgfpoint{\pgfkeysvalueof{/liquid filter/dimension/width}}{\pgfkeysvalueof{/liquid filter/dimension/height}}}
    }
    \savedanchor{\east}{
        \pgfpointscale{0.5}{\pgfpoint{\pgfkeysvalueof{/liquid filter/dimension/width}}{0}}
    }
    
    \anchor{center}{
        \centerpoint
    }
    \anchor{north}{
        \north
    }
    \anchor{east}{
        \east
    }
    \anchor{south}{
        \north
        \pgf@y = -\pgf@y
    }
    \anchor{west}{
        \east
        \pgf@x = -\pgf@x
    }
    \anchor{northeast}{
        \northeast
        \pgf@y = 0.8\pgf@y
    }
    \anchor{near northeast}{
        \northeast
        \pgf@y = 0.4 \pgf@y
    }
    \anchor{far northeast}{
        \northeast
    }
    \anchor{northwest}{
        \northeast
        \pgf@y = 0.8\pgf@y
        \pgf@x = -\pgf@x
    }
    \anchor{near northwest}{
        \northeast
        \pgf@y = 0.4 \pgf@y
        \pgf@x = -\pgf@x
    }
    \anchor{far northwest}{
        \northeast
        \pgf@x = -\pgf@x
    }
    \anchor{southeast}{
        \northeast
        \pgf@y = -0.8\pgf@y
    }
    \anchor{near southeast}{
        \northeast
        \pgf@y = -0.4\pgf@y
    }
    \anchor{far southeast}{
        \northeast
        \pgf@y = -\pgf@y
    }
    \anchor{southwest}{
        \northeast
        \pgf@y = -0.8\pgf@y
        \pgf@x = -\pgf@x
    }
    \anchor{near southwest}{
        \northeast
        \pgf@y = -0.4\pgf@y
        \pgf@x = -\pgf@x
    }
    \anchor{far southwest}{
        \northeast
        \pgf@y = -\pgf@y
        \pgf@x = -\pgf@x
    }

    
    \backgroundpath{
        \pgfpathmoveto{\northeast}
        \northeast
        \pgfpathlineto{\pgfpoint{\pgf@x}{-\pgf@y}}
        \northeast
        \pgfpathlineto{\pgfpoint{-\pgf@x}{-\pgf@y}}
        \northeast
        \pgfpathlineto{\pgfpoint{-\pgf@x}{\pgf@y}}
        \pgfpathclose
        
        \pgfkeys{/liquid filter/basic}
    
        \pgfusepath{stroke}
    }
}