This is really just to inform you about the perspective
library. Your target picture seems to be drawn in perspective, so you may want to check it out. A possible starting point for the power station is
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{perspective}
\begin{document}
\begin{tikzpicture}[3d view]
\fill [black!17] (tpp cs:x=0,y=0,z=0) -- (tpp cs:x=1.5,y=0,z=0)
-- (tpp cs:x=1.5,y=0,z=1) -- (tpp cs:x=0,y=0,z=1) -- cycle;%right side
\fill [black!25] (tpp cs:x=0,y=0,z=0) -- (tpp cs:x=0,y=1,z=0)
-- (tpp cs:x=0,y=1,z=1) -- (tpp cs:x=0,y=0,z=1) -- cycle;%left side
\fill [black!20] (tpp cs:x=0,y=0,z=1) -- (tpp cs:x=0,y=1,z=1)
-- (tpp cs:x=1.5,y=1,z=1) -- (tpp cs:x=1.5,y=0,z=1) -- cycle;%roof
\path[left color=black!25,right color=black!17,middle color=black!20]
(tpp cs:x=1.1,y=0.9,z=1) to[out=70,in=-90] (tpp cs:x=1.1,y=0.8,z=2)
to[bend left=20] (tpp cs:x=1.3,y=0.2,z=2) to[out=-90,in=110] (tpp cs:x=1.3,y=0.1,z=1)
to[bend left=30] cycle;
\path[left color=black!25,right color=black!17,middle color=black!20]
(tpp cs:x=0.4,y=0.9,z=1) to[out=70,in=-90] (tpp cs:x=0.4,y=0.8,z=2)
to[bend left=20] (tpp cs:x=0.6,y=0.2,z=2) to[out=-90,in=110] (tpp cs:x=0.6,y=0.1,z=1)
to[bend left=30] cycle;
\end{tikzpicture}
\end{document}

This is certainly just a start, but arguably using 3d coordinates makes it easier to draw these things, and you can change the view later if needed.
One may make things simpler by introducing styles for the planes, and more realistic by computing the visibility angles.
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{perspective}
\begin{document}
\begin{tikzpicture}[3d view,
xy plane at z/.style={insert path={
(tpp cs:x=\xmin,y=\ymin,z=#1) -- (tpp cs:x=\xmax,y=\ymin,z=#1)
-- (tpp cs:x=\xmax,y=\ymax,z=#1) -- (tpp cs:x=\xmin,y=\ymax,z=#1) -- cycle}},
xz plane at y/.style={insert path={
(tpp cs:x=\xmin,y=#1,z=\zmin) -- (tpp cs:x=\xmax,y=#1,z=\zmin)
-- (tpp cs:x=\xmax,y=#1,z=\zmax) -- (tpp cs:x=\xmin,y=#1,z=\zmax) -- cycle}},
yz plane at x/.style={insert path={
(tpp cs:x=#1,y=\ymin,z=\zmin) -- (tpp cs:x=#1,y=\ymin,z=\zmax)
-- (tpp cs:x=#1,y=\ymax,z=\zmax) -- (tpp cs:x=#1,y=\ymax,z=\zmin) -- cycle}},
x domain/.code args={#1:#2}{\def\xmin{#1}\def\xmax{#2}},x domain=0:1,
y domain/.code args={#1:#2}{\def\ymin{#1}\def\ymax{#2}},y domain=0:1,
z domain/.code args={#1:#2}{\def\zmin{#1}\def\zmax{#2}},z domain=0:1,
]
\fill [black!25,y domain=0:1,z domain=0:1,yz plane at x=0];%left side
\fill [black!17,x domain=0:1.5,z domain=0:1,xz plane at y=0];%right side
\fill [black!20,x domain=0:1.5,y domain=0:1,xy plane at z=1];%roof
\def\mytmin{0}%
\def\mytmax{0}%
\def\myxmax{-1000pt}%
\def\myxmin{1000pt}%
\foreach \t in {0,1,...,360}
{\path (tpp cs:x={cos(\t)},y={sin(\t)},z=0) ;
\pgfgetlastxy{\myx}{\myy}
\ifdim\myx<\myxmin
\xdef\myxmin{\myx}%
\xdef\mytmin{\t}%
\fi
\ifdim\myx>\myxmax
\xdef\myxmax{\myx}%
\xdef\mytmax{\t}%
\fi
}
\foreach \X in {1.1,0.4}
{\path[left color=black!25,right color=black!17,middle color=black!20]
plot[variable=\t,domain=\mytmin:\mytmax,smooth]
(tpp cs:x={\X+0.3*cos(\t)},y={0.5+0.3*sin(\t)},z=1)
to[out=100,in=-100]
(tpp cs:x={\X+0.3*cos(\mytmax)},y={0.5+0.3*sin(\mytmax)},z=2)
plot[variable=\t,domain=\mytmax:\mytmin,smooth]
(tpp cs:x={\X+0.3*cos(\t)},y={0.5+0.3*sin(\t)},z=2)
to[out=-80,in=80]
(tpp cs:x={\X+0.3*cos(\mytmin)},y={0.5+0.3*sin(\mytmin)},z=1);
\path[fill=black!40] plot[variable=\t,domain=0:360,smooth cycle]
(tpp cs:x={\X+0.3*cos(\t)},y={0.5+0.3*sin(\t)},z=2);}
\end{tikzpicture}
\end{document}

You can then vary the view parameters.
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{perspective}
\tikzset{xy plane at z/.style={insert path={
(tpp cs:x=\xmin,y=\ymin,z=#1) -- (tpp cs:x=\xmax,y=\ymin,z=#1)
-- (tpp cs:x=\xmax,y=\ymax,z=#1) -- (tpp cs:x=\xmin,y=\ymax,z=#1) -- cycle}},
xz plane at y/.style={insert path={
(tpp cs:x=\xmin,y=#1,z=\zmin) -- (tpp cs:x=\xmax,y=#1,z=\zmin)
-- (tpp cs:x=\xmax,y=#1,z=\zmax) -- (tpp cs:x=\xmin,y=#1,z=\zmax) -- cycle}},
yz plane at x/.style={insert path={
(tpp cs:x=#1,y=\ymin,z=\zmin) -- (tpp cs:x=#1,y=\ymin,z=\zmax)
-- (tpp cs:x=#1,y=\ymax,z=\zmax) -- (tpp cs:x=#1,y=\ymax,z=\zmin) -- cycle}},
x domain/.code args={#1:#2}{\def\xmin{#1}\def\xmax{#2}},x domain=-1:1,
y domain/.code args={#1:#2}{\def\ymin{#1}\def\ymax{#2}},y domain=-1:1,
z domain/.code args={#1:#2}{\def\zmin{#1}\def\zmax{#2}},z domain=-1:1}
\begin{document}
\foreach \Y in {6,8,...,24,22,20,...,8}
{\begin{tikzpicture}[scale=4,3d view,
perspective={p = {(\Y/2,0,0)}, q = {(0,10,0)},r={(0,0,\Y/2)}}]
\fill [black!25,y domain=0:1,z domain=0:1,yz plane at x=0];%left side
\fill [black!17,x domain=0:1.5,z domain=0:1,xz plane at y=0];%right side
\fill [black!20,x domain=0:1.5,y domain=0:1,xy plane at z=1];%roof
\def\mytmin{0}%
\def\mytmax{0}%
\def\myxmax{-1000pt}%
\def\myxmin{1000pt}%
\foreach \t in {0,1,...,360}
{\path (tpp cs:x={cos(\t)},y={sin(\t)},z=0) ;
\pgfgetlastxy{\myx}{\myy}
\ifdim\myx<\myxmin
\xdef\myxmin{\myx}%
\xdef\mytmin{\t}%
\fi
\ifdim\myx>\myxmax
\xdef\myxmax{\myx}%
\xdef\mytmax{\t}%
\fi
}
\foreach \X in {1.1,0.4}
{\path[left color=black!25,right color=black!17,middle color=black!20]
plot[variable=\t,domain=\mytmin:\mytmax,smooth]
(tpp cs:x={\X+0.3*cos(\t)},y={0.5+0.3*sin(\t)},z=1)
to[out=100,in=-100]
(tpp cs:x={\X+0.3*cos(\mytmax)},y={0.5+0.3*sin(\mytmax)},z=2)
plot[variable=\t,domain=\mytmax:\mytmin,smooth]
(tpp cs:x={\X+0.3*cos(\t)},y={0.5+0.3*sin(\t)},z=2)
to[out=-80,in=80]
(tpp cs:x={\X+0.3*cos(\mytmin)},y={0.5+0.3*sin(\mytmin)},z=1);
\path[fill=black!40] plot[variable=\t,domain=0:360,smooth cycle]
(tpp cs:x={\X+0.3*cos(\t)},y={0.5+0.3*sin(\t)},z=2);}
\end{tikzpicture}}
\end{document}
