40#ifndef H_GEOGRAM_MESH_MESH_CSG_UTILS_H
41#define H_GEOGRAM_MESH_MESH_CSG_UTILS_H
62 enum Type {NONE, NUMBER, BOOLEAN, ARRAY1D, ARRAY2D, STRING, PATH};
68 Value(
const std::string& x);
69 Value(
const std::filesystem::path& x);
70 std::string to_string()
const;
76 std::string string_val;
85 typedef std::pair<std::string, Value> Arg;
95 const std::string& ith_arg_name(
index_t i)
const {
97 return args_[i].first;
102 return args_[i].second;
105 void add_arg(
const std::string& name,
const Value& value);
106 bool has_arg(
const std::string& name)
const;
107 const Value& get_arg(
const std::string& name)
const;
108 double get_arg(
const std::string& name,
double default_val)
const;
109 int get_arg(
const std::string& name,
int default_val)
const;
110 bool get_arg(
const std::string& name,
bool default_val)
const;
111 vec2 get_arg(
const std::string& name,
vec2 default_val)
const;
112 vec3 get_arg(
const std::string& name,
vec3 default_val)
const;
113 vec4 get_arg(
const std::string& name,
vec4 default_val)
const;
114 mat4 get_arg(
const std::string& name,
const mat4& default_val)
const;
116 const std::string& name,
const std::string& default_val
119 const std::string& name,
const char* default_val
121 return get_arg(name, std::string(default_val));
161 void GEOGRAM_API sweep(
162 std::shared_ptr<Mesh>& M,
index_t nv,
164 SweepCapping capping = SWEEP_CAP
172 void GEOGRAM_API keep_z0_only(std::shared_ptr<Mesh>& M);
182 void GEOGRAM_API OpenSCAD_cache_invalidate();
190 void GEOGRAM_API OpenSCAD_cache_ignore_time();
192 std::shared_ptr<Mesh> GEOGRAM_API call_OpenSCAD(
193 const std::filesystem::path& path,
const std::string& command,
194 const ArgList& args,
bool TWO_D=
false
197 std::string GEOGRAM_API load_OpenSCAD(
const std::filesystem::path& filename);
207 int GEOGRAM_API get_fragments_from_r_and_twist(
208 double r,
double twist,
double fn,
double fs,
double fa
214 inline int get_fragments_from_r(
215 double r,
double fn,
double fs,
double fa
217 return get_fragments_from_r_and_twist(r, 360.0, fn, fs, fa);
223 int GEOGRAM_API get_linear_extrusion_slices(
224 std::shared_ptr<Mesh> M,
double height,
vec2 scale,
double twist,
225 double fn,
double fs,
double fa
#define geo_debug_assert(x)
Verifies that a condition is met.
A parsed argument list in a .csg file.
Vector with aligned memory allocation.
index_t size() const
Gets the number of elements.
Common include file, providing basic definitions. Should be included before anything else by all head...
The class that represents a mesh.
Global Vorpaline namespace.
vecng< 3, Numeric::float64 > vec3
Represents points and vectors in 3d.
geo_index_t index_t
The type for storing and manipulating indices.
A parsed value in a .csg file.