diff --git a/demos/boolean/intersect_line_volume.geo b/demos/boolean/intersect_line_volume.geo new file mode 100644 index 0000000000000000000000000000000000000000..792b165008121b06d11e212771df2c39f31897cd --- /dev/null +++ b/demos/boolean/intersect_line_volume.geo @@ -0,0 +1,30 @@ + +SetFactory("OpenCASCADE"); + +Geometry.LineNumbers = 1; + +xw_ = 0.1; yw_ = 0.1; +s_wire = news; +Rectangle(news) = {-xw_, -yw_, 0., xw_, yw_, 0.}; +l_wire[] = Abs(Boundary{Surface{s_wire};}); +Delete{ Surface{s_wire}; } // Surface s_wire is deleted to keep only its boundary +Printf("init: l_wire[] = ", l_wire[]); + +DefineConstant[ + flag_Symmetry_X = { 0, Choices{0,1}, Name "Symmetry X0-plane" } + flag_Symmetry_Y = { 0, Choices{0,1}, Name "Symmetry Y0-plane" } + flag_Symmetry_Z = { 0, Choices{0,1}, Name "Symmetry Z0-plane" } +]; + +dx = 0.4; dy = 0.4; dz = 0.4; +x_min_ = (flag_Symmetry_X)? 0. : -dx/2; +y_min_ = (flag_Symmetry_Y)? 0. : -dy/2; +z_min_ = (flag_Symmetry_Z)? 0. : -dz/2; + +v_box=newv; +Block(newv) = {x_min_, y_min_, z_min_, dx/2, dy/2, dz/2}; + + +l_wire[] = BooleanIntersection { Line{l_wire[]}; Delete; }{ Volume{v_box}; }; +SyncModel; +Printf("after intersection: new l_wire[] = ", l_wire[]);