Yes we can. The following `DashedGraphics3D[ ]` function is designed to convert ordinary `Graphics3D` object to the "line-drawing" style raster image.

    Clear[DashedGraphics3D]
    DashedGraphics3D::optx = 
            "Invalid options for Graphics3D are omitted: `1`.";
    Options[DashedGraphics3D] = {ViewAngle -> 0.4, 
                ViewPoint -> {3, -1, 0.5}, ViewVertical -> {0, 0, 1}, 
                ImageSize -> 800};
    DashedGraphics3D[basegraph_, effectFunction_: Identity, 
                opts : OptionsPattern[]] /; ! 
                MatchQ[Flatten[{effectFunction}], {(Rule | RuleDelayed)[__] ..}] :=
        
        Module[{exceptopts, fullopts, frontlayer, dashedlayer, borderlayer,
                face3DPrimitives = {Polygon, Cuboid, Cone, Cylinder, Sphere, Tube, 
                        BSplineSurface}
                },
            
            exceptopts = FilterRules[{opts}, Except[Options[Graphics3D]]];
            If[exceptopts =!= {},
                Message[DashedGraphics3D::optx, exceptopts]
                ];
            fullopts = 
                Join[FilterRules[Options[DashedGraphics3D], Except[#]], #] &@
                    FilterRules[{opts}, Options[Graphics3D]];
            
            frontlayer = Show[
                        basegraph /. Line[pts__] :> {Thick, Line[pts]},
                        fullopts,
                        Lighting -> {{"Ambient", White}}
                        ] // Rasterize;
            
            dashedlayer = Show[
                        basegraph /.
                                {Polygon[__] :> {}, Line[pts__] :> {Dashed, Line[pts]}} /.
                            h_[pts___] /; MemberQ[face3DPrimitives, h] :> {FaceForm[], 
                                    EdgeForm[{Dashed, Black}], h[pts]},
                        fullopts
                        ] // Rasterize;
            
            borderlayer = Show[basegraph /. RGBColor[__] :> Black,
                                ViewAngle -> (1 - .001) OptionValue[ViewAngle],
                                fullopts,
                                Lighting -> {{"Ambient", Black}},
                                Axes -> False, Boxed -> False
                                ] // Rasterize // GradientFilter[#, 1] & // ImageAdjust;
            
            ImageSubtract[frontlayer, dashedlayer] // effectFunction //
                            ImageAdd[frontlayer // ColorNegate, #] & //
                        ImageAdd[#, borderlayer] & //
                    ColorNegate // ImageCrop
            ]

Usage:
-

`DashedGraphics3D[ ]` has three kinds of arguments. The `basegraph` is the `Graphics3D[ ]` you want to convert. The `effectFunction` is an optional argument, which when used will perform corresponding image effect to the hiden part. The `opts` are options intended for internal `Graphics3D[ ]`, which are mainly used to determine the posture of the final output. When omitted, it takes values as defined by `Options[DashedGraphics3D]`.

Example:
-

    graph1 = Show[{
                    SphericalPlot3D[
                        1, {θ, 1/5 1.2 π, π/2}, {ϕ, 0, 1.8 π},
                        PlotPoints -> 50, Mesh -> None, BoundaryStyle -> Black],
                    SphericalPlot3D[
                        1, {θ, 0, π/5}, {ϕ, π/4, 2.1 π},
                        PlotStyle -> FaceForm[Lighter[Blue, .9], GrayLevel[.9]],
                        PlotPoints -> 50, Mesh -> None, BoundaryStyle -> Black],
                    Graphics3D[{FaceForm[Lighter[Pink, .8], GrayLevel[.8]], 
                            Cylinder[{{0, 0, 0}, {0, 0, .8 Cos[π/5]}}, Sin[π/5]]}]
                    },
                PlotRange -> 1.2 {{-1, 1}, {-1, 1}, {0, 1}}, 
                AxesOrigin -> {0, 0, 0}, Boxed -> False,
                SphericalRegion -> True];

    DashedGraphics3D[graph1]

![hemisphere][1]

**Sidenote:** The hiden border of the cylinder's side-wall can not be extracted by the shaow method (described below) used in `DashedGraphics3D[ ]`, so `ParametricPlot3D[ ]`-akin functions are needed instead of simply `Cylinder[ ]`.

    graph2 = ParametricPlot3D[
                {u Cos[v], u Sin[v], Im[(u Exp[I v]^5)^(1/5)]},
                {u, 0, 2}, {v, 0, 2 π},
                PlotPoints -> 20, Mesh -> {2, 5}, MeshStyle -> Red, Boxed -> False,
                BoundaryStyle -> Black, ExclusionsStyle -> {None, Black}];
    
    DashedGraphics3D[graph2]

![fan][2]

Add an oil-painting effect:

    DashedGraphics3D[graph2,
        ImageAdjust[ImageEffect[Blur[#, 3], {"OilPainting", 3}]] &
        ]

![fan with special image effect][3]

As for OP's example:

    graph3 = Show[{
                ContourPlot3D[(4 - z)^2 == x^2 + y^2, {x, -3, 3}, {y, -3, 3}, {z, 2, 4},
                    Mesh -> None, BoundaryStyle -> Black, PlotPoints -> 20],
                ContourPlot3D[x^2 + y^2 == 4, {x, -3, 3}, {y, -3, 3}, {z, -2, 2},
                    Mesh -> None, BoundaryStyle -> Black]
                },
            PlotRange -> {{-3, 3}, {-3, 3}, {-2, 4}}]
    
    DashedGraphics3D[graph3, ViewAngle -> .6, ViewPoint -> {3, 2, 1}]

![OP's graphics][4]

Explanation:
-

Take `graph1` as example. The `frontlayer` generate a solid style graphics using `{"Ambient", White}` lighting, where every object supposed to be hiden are all invisible:

![frontlayer][5]

The `dashedlayer` does the opposite to the `frontlayer`. It set all faces transparent, and all edges and lines `Dashed`:

![dashedlayer][6]

Apparently, subtracting `frontlayer` from `dashedlayer`, we can extract the hiden part with dashed-style (On which `effectFunction` is applied.), then we add it back to `frontlayer`:

![innerlines][7]

Now the only missed part is the outline contour. We solve this problem by first using `{"Ambient", Black}` lighting to generate the shadow of the whole graphics, then using `GradientFilter` to extract the outline, which is the `borderlayer`:

![borderlayer][8]

Combine `frontlayer`, `dashedlayer` and `borderlayer` properly, we get our final result.


  [1]: https://i.sstatic.net/35jfH.png
  [2]: https://i.sstatic.net/dNU9K.png
  [3]: https://i.sstatic.net/z2v3e.png
  [4]: https://i.sstatic.net/VNqiO.png
  [5]: https://i.sstatic.net/aufwp.png
  [6]: https://i.sstatic.net/An9fy.png
  [7]: https://i.sstatic.net/pgH6K.png
  [8]: https://i.sstatic.net/4VdK1.png