extern crate rgmsh;
use rgmsh::{Gmsh, GmshResult, add_points};
use rgmsh::model::{PointTag};
fn main() -> GmshResult<()> {
let mut gmsh = Gmsh::initialize()?;
let opt = "General.BuildOptions";
println!("{:?} = {:?}", opt, gmsh.get_string_option(opt).unwrap());
let mut geom = gmsh.create_occ_model("hal")?;
let mut geom2 = gmsh.create_native_model("bella")?;
let p: PointTag = geom.add_point(0., 0., 0.)?;
println!("{:?}", p);
let p2: PointTag = geom2.add_point(0., 0., 0.)?;
println!("{:?}", p2);
geom.remove_point(p);
println!("Point tag from deleted model is {:?}", p);
let p1 = geom.add_point(0., 0., 0.)?;
let p2 = geom.add_point(1., 1., 0.)?;
println!("p1 = {:?}", p1);
println!("p2 = {:?}", p2);
let line = geom.add_line(p1, p2)?;
println!("{:?}", line);
let pts = add_points![geom, (2., 4., 6., 0.1), (1.0, 2.0, 3.0)];
println!("{:?}", pts);
geom.curve_or_surface_op(line);
let l1 = geom.add_line(p1, p2)?;
let l2 = geom.add_line(p1, p2)?;
let l3 = geom.add_line(p1, p2)?;
let l4 = geom.add_line(p1, p2)?;
let rev_l = -line;
println!("{:?}", rev_l);
geom.generate_mesh(1)?;
let mut occ_geom = gmsh.create_occ_model("box")?;
let b = occ_geom.add_box((0., 0., 0.), (1., 1., 1.))?;
println!("{:?}", b);
occ_geom.synchronize()?;
occ_geom.generate_mesh(3)?;
let mut geom_a = gmsh.create_native_model("jimbo")?;
let mut geom_b = gmsh.create_native_model("aircraft-carrier")?;
let p_a = geom_a.add_point(0., 0., 0.)?;
let p_b = geom_b.add_point(0., 1., 1.)?;
let p_c = geom_b.add_point(0., 1., 1.)?;
println!("{:?}", line);
geom.generate_mesh(2);
std::mem::drop(gmsh);
Ok(())
}