puts "========"
puts "OCC29333"
puts "========"
puts ""
#################################################
# Boolean Operations - Prevent modification of the input shapes in case their sub-shapes have not been modified
#################################################

# create two touching boxes
box b1 10 10 10
box b2 10 0 0 10 10 10

# make them share the common face
mkvolume s b1 b2

# split one of these solids
explode s so

plane p 0 0 5 0 0 1
mkface f p
bclearobjects
bcleartools
baddobjects s_1
baddtools f
bfillds 
bsplit s1_sp


# fuse again
bclearobjects
bcleartools
baddobjects s1_sp
baddtools s_2
bfillds
bbuild result

checkshape result
checkprops result -s 1400 -v 2000
checknbshapes result -vertex 16 -edge 28 -wire 16 -face 16 -shell 3 -solid 3


# check that non of the shapes from s1_sp is modified
compound result s1_sp c
checknbshapes c -vertex 16 -edge 28 -wire 16 -face 16 -shell 3 -solid 3


# fuse with different order
bclearobjects
bcleartools
baddobjects s_2
baddtools s1_sp
bfillds
bbuild result

checkshape result
checkprops result -s 1400 -v 2000
checknbshapes result -vertex 16 -edge 28 -wire 16 -face 16 -shell 3 -solid 3


# check that non of the shapes from s1_sp is modified
compound result s1_sp c
checknbshapes c -vertex 16 -edge 28 -wire 16 -face 16 -shell 3 -solid 3
