#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

# SIMPLE 3D PITCHED ROOF PLANE FROM WCS POLYLINE

Hi All

One of the characteristics of a roof plane is the fasia edge is usually vertical not sloping as per the various methods in Bricscad

I need a simple routine that will take a polyline drawn in the xy plane and project it on to an inclined UCS, from where it can be converted to a region or extruded along a vertical path to the roof thickness. (roof plan is made of WCS closed polylines representing each surface). I do this manually now and it does ALL roof surfaces except lofted.

My lisp skills are very rusty but I think the simplest approach would be:

1. Find pline segment representing edge of roof from closed pline
3. Extract a list of vertices from closed pline in xy plane
4. Use the TRANS function and draw a polyline from them in the relevant UCS ie pitch from horizontal
5. Convert pline to a region
6. Extrude vertically to required thickness as option.

Can somebody help on this please?

Thanks very much if somebody can!

Cheers Ken Taylor

• I am not sure if I get the question correct ...
I see everything slopy and Roof(y) always from the Gable Side.
E.g. in YZ Plane, by an Elevation or Section.
In that 2D Plane is where all the complexity with different angles
happens for the Profiles. But everything from there, extruded in
the 3rd dimension is a rectangular simple 1D process again.

Beside that approach, for me it is mostly easier to extend things
when drawing and cut them with Boolean Operations, extend
to dummy geometry or BIMCONNECT with Bricscad's Direct Modeling,
later.

• Watch the movie in attachment.
This is the procedure:
1. Draw a closed polyline that defines the outline of building.
2. Draw an offset of the polyline which defines the roof overhang.
3. With 'Boundary Detection' on, create the fascia: extrude the boundary between the polylines.
4. Extrude the outer polyline to create the roof. Hit the TAB key to taper the extrusion.
5. Define the roof pitch either dynamically or by keying in the desired angle.
6. Use the Body/Shell option of the SolidEdit command to create the roof solid. Remove the base face of the solid, then define the thickness of the roof.

• Thanks Michael and Louis for your work. I use Louis technique for hip roofs, and at times sectional extrudes for gables as suggested by Michael

Here in NZ (and Australia) we have to deal with hip, gable and monopitch roofs and combinations making up very complex roofs.

Hence the closed poly technique as the same tool does all......a tradeoff between time and flexible use. Years ago Facade used this technique,the LISP was encoded so it cant be reused in Bricscad, and Archicad uses a similar technique albeit rather clunky. The Facade system allowed editing pitch, and adding and subtracting sections of roof (based on polylines overlapping). The best roof editor I have ever seen.....it auto constructed dormers and skyights of various sorts, and intersecting a gable to a main roof at different soffit levels. The polylines were save on a hidden layer much like BIM_SUBTRACT

As it is LISP Bricscad could do this given the code cutting.

There is a workaround making it in Sketchup using a Hawaian architect's routines and importing the SU. You can edit these in SU but its a one way data trip.

• edited October 30

@Ken Taylor:
Try CreateRoof.lsp.

• Heck Roy it works a treat.....exactly. A huge THANK YOU and I owe you a carton of beer if we ever meet!

The other routines work fine for their specialist tasks but this is like the Russians make things, simple, very robust and very flexible.

Thanks again

Cheers

Ken T

PS Bricscad is lacking specialist routines like this, and the likes of stairs

• Uh, didn't think of hip roofs.

Thanks for the nice video Louis !
Lots of options I didn't thought of either.

• Thanks Roy for the LSP routine.

However, I cant get it to work. I select the roof polyline at the gutter. Then I enter the pitch in degrees (say25 degrees). I then get an error message stating Error: pitch invalid.

What could I be doing wrong?

• @Walter Vardanega:
I think that this may be related to your AUNITS setting. Can you give me that setting? And also your ANGBASE and ANGDIR settings?

• Hi Roy
My settings are as follows:
AUNITS: 0
ANGBASE: 90 &
ANGDIR: 1

• Select the outermost segment of polyline in any direction. It needs a bit more polishing but it works......wont work picking on re-entrant sections of polyline.Roof pitch direction is perpendicular to the section of line you select.

• I changed my settings to the following and the routine works marvelously.
AUNITS: 0
ANGBASE: 0 &
ANGDIR: 0 for Off

Thanks so much for this routine Roy

• The problem is caused by the getangle function which respects the ANGDIR, and if the user clicks points, the ANGBASE settings. Avoiding that function is the best solution I think.

Revised code attached.

• Sorry Roy the fasias are no longer vertical under the revised routine. That is important to make roof segments meet OK
The old version still works fine for me.

• @Ken Taylor: I cannot reproduce that issue. The part of the code that creates the extrusion (the code just calls the _Extrude command) has not been changed in the new version. Can you post your dwg?

• Hi Roy

The roof face is in the plane of the roof, all edge faces are vertical in World UCS is the end result needed. The first routine does this, the second the edge faces are inclined 90deg to roof plane UCS. Hope that explains. The first routine is quite OK for my purposes. I have angle compass bog standard Autocad with 0 degrees "east" and angle increase anteclockwise.....ie 90deg is "north".

Cheers Ken T