Modifying Fence Code

2449
0
04-10-2016 03:21 PM
F_RContreras
New Contributor II

Some time ago I found on another thread a fence code, I studied it and now I tried to made it into a fence that includes doors (entrances), but I can't make it work when there's sloped terrain:

attr poleHeight = 2

attr barHeight1 = 0.15

attr barHeight2 = 1.7

attr barHeightDoor1 = 0.25

attr barHeightDoor2 = 1.6

attr barDimension = 0.08

attr poleWidth = 0.08

attr poleDist = 3

attr poleThickness = 0.08

attr boardWidth = 0.03

attr boardDist = .08

attr boardHeight = 1.9

attr boardThickness = 0.03

Lot -->

    extrude(world.y, poleHeight)

    comp(f){side: FrontFence}

FrontFence -->

    split(x){~.5:Reja("fence") | 2.5: Reja("door") | ~.5:Reja("fence") | .75: Reja("door") | ~.5:Reja("fence")}

##########################################################################

# Fence

##########################################################################

Reja(Tipo) -->

    case Tipo =="fence" :

        MakeBar1("fence")

        MakeBar2("fence")

        PutPoles

    else:

        MakeBar1("door")

        MakeBar2("door")

        PutPoles

##########################################################################

# Fence

##########################################################################

MakeBar1(Tipo) -->

    case Tipo == "fence" :

        split(y) {barHeight1 : NIL | barDimension : extrude(barDimension / 5) t(0,'-1.2,0) Bar | ~1 : NIL}

    else:

        split(y) {barHeightDoor1 : NIL | barDimension : extrude(barDimension / 2) t(0,'-1.2,0) Bar | ~1 : NIL}

MakeBar2(Tipo) -->

    case Tipo == "fence" :

        split(y) {barHeight2 : NIL | barDimension : extrude(barDimension / 5) t(0,'-1.2,0) Bar | ~1 : NIL}

    else:

        split(y) {barHeightDoor2 : NIL | barDimension : extrude(barDimension / 2) t(0,'-1.2,0) Bar | ~1 : NIL}

   

Bar -->

    color(.1,.1,.15)

    alignScopeToAxes(y)

    comp(f) {front : BarBevel | back : BarBevel | all : Bar.}

BarBevel -->

    roofGable(45)

    split(y) {'.1 :comp(f) {bottom : NIL | all : Bar.} | ~1 : NIL}

   

##########################################################################

# Poles

##########################################################################

   

PutPoles -->

    alignScopeToAxes(y)

    split(x) {{ poleWidth: MakePole | ~poleDist : PutBoards}* | poleWidth: MakePole }

MakePole -->

    color("#706050")

    alignScopeToAxes(y)

    innerRect

    s('1,'1,poleThickness)

    i("assets/fencePole.obj")

    t(0,0,'-1)

    Pole.

##########################################################################

# Boards

##########################################################################

PutBoards -->

    alignScopeToAxes(y)

    split(x) {{ ~boardDist : NIL | boardWidth: MakeBoard}* | boardDist : NIL }   

MakeBoard -->

    alignScopeToGeometry(zUp, 0, world.lowest)

    s('1,boardHeight,'1)

    Board

Board -->

    color("#706050")

    alignScopeToAxes(y)

    innerRect

    s('1,'1,boardThickness)

    i("assets/fenceBoard.obj")

    Board.

When I raise a point on the polygon it starts to distort, how can I fix it?

Thanks

0 Kudos
0 Replies