ViewDesignEngine  3.1.0
高性能 CAD 计算几何引擎
vde.h
浏览该文件的文档.
1 #pragma once
2 
3 // ── 平台导出宏 ──
4 #if defined(_WIN32) || defined(__CYGWIN__)
5  #ifdef VDE_BUILDING_DLL
6  #define VDE_API __declspec(dllexport)
7  #else
8  #define VDE_API __declspec(dllimport)
9  #endif
10 #else
11  #define VDE_API __attribute__((visibility("default")))
12 #endif
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 #include <stdint.h>
19 #include <stddef.h>
20 
21 // ── 不透明句柄 ──
22 typedef struct VdeContext* VdeHandle;
23 typedef struct VdeMesh* VdeMeshHandle;
24 typedef struct VdeCurve* VdeCurveHandle;
25 typedef struct VdeSurface* VdeSurfaceHandle;
26 typedef struct VdeBVH* VdeBVHHandle;
27 typedef struct VdeSolver* VdeSolverHandle;
28 typedef struct VdeBody* VdeBodyHandle;
29 
30 // ── 上下文管理 ──
33 VDE_API const char* vde_version(void);
34 VDE_API const char* vde_last_error(VdeHandle ctx);
35 
36 // ── I/O ──
38 VDE_API int vde_save_mesh(VdeHandle ctx, VdeMeshHandle mesh, const char* path, const char* format);
39 
40 // ── Mesh 查询 ──
43 VDE_API void vde_mesh_get_vertex(VdeMeshHandle mesh, size_t idx, double* out_x, double* out_y, double* out_z);
44 VDE_API void vde_mesh_get_bounds(VdeMeshHandle mesh, double* out_min_x, double* out_min_y, double* out_min_z,
45  double* out_max_x, double* out_max_y, double* out_max_z);
47 
48 // ── Mesh 处理 ──
52 
53 // ── 曲线 ──
54 VDE_API VdeCurveHandle vde_curve_create_bezier(VdeHandle ctx, const double* control_points,
55  int num_points, int dimension);
57  double* out_x, double* out_y, double* out_z);
60 
61 // ── 碰撞检测 ──
63  double cx1, double cy1, double cz1, double r1,
64  double cx2, double cy2, double cz2, double r2);
66  double ox, double oy, double oz,
67  double dx, double dy, double dz,
68  double* out_t, double* out_x, double* out_y, double* out_z);
69 
70 // ── 约束求解 ──
72 VDE_API int vde_solver_add_point(VdeSolverHandle solver, double x, double y, int fixed);
73 VDE_API int vde_solver_add_line(VdeSolverHandle solver, int p0, int p1);
74 VDE_API void vde_solver_add_distance_constraint(VdeSolverHandle solver, int p0, int p1, double d);
77 VDE_API int vde_solver_solve(VdeSolverHandle solver, int max_iter, double tol);
78 VDE_API void vde_solver_get_point(VdeSolverHandle solver, int idx, double* x, double* y);
80 
81 // ── B-Rep 建模 ──
82 VDE_API VdeBodyHandle vde_body_create_box(VdeHandle ctx, double w, double h, double d);
83 VDE_API VdeBodyHandle vde_body_create_cylinder(VdeHandle ctx, double r, double h, int segs);
84 VDE_API VdeBodyHandle vde_body_create_sphere(VdeHandle ctx, double r, int su, int sv);
87 
88 // ── 序列化 ──
89 VDE_API size_t vde_serialize_mesh(VdeHandle ctx, VdeMeshHandle mesh, uint8_t** out_data);
90 VDE_API VdeMeshHandle vde_deserialize_mesh(VdeHandle ctx, const uint8_t* data, size_t len);
91 VDE_API void vde_free_buffer(uint8_t* data);
92 
93 #ifdef __cplusplus
94 }
95 #endif
VDE_API VdeBodyHandle vde_body_create_box(VdeHandle ctx, double w, double h, double d)
VDE_API const char * vde_version(void)
VDE_API void vde_free_buffer(uint8_t *data)
VDE_API int vde_save_mesh(VdeHandle ctx, VdeMeshHandle mesh, const char *path, const char *format)
VDE_API VdeMeshHandle vde_mesh_smooth(VdeHandle ctx, VdeMeshHandle mesh, int iterations)
VDE_API void vde_body_free(VdeBodyHandle body)
VDE_API int vde_collision_ray_mesh(VdeHandle ctx, VdeMeshHandle mesh, double ox, double oy, double oz, double dx, double dy, double dz, double *out_t, double *out_x, double *out_y, double *out_z)
struct VdeSolver * VdeSolverHandle
Definition: vde.h:27
VDE_API size_t vde_serialize_mesh(VdeHandle ctx, VdeMeshHandle mesh, uint8_t **out_data)
VDE_API int vde_curve_degree(VdeCurveHandle curve)
VDE_API VdeBodyHandle vde_body_create_cylinder(VdeHandle ctx, double r, double h, int segs)
VDE_API VdeMeshHandle vde_body_to_mesh(VdeHandle ctx, VdeBodyHandle body, double deflection)
VDE_API VdeMeshHandle vde_load_mesh(VdeHandle ctx, const char *path)
struct VdeContext * VdeHandle
Definition: vde.h:22
struct VdeMesh * VdeMeshHandle
Definition: vde.h:23
VDE_API int vde_solver_solve(VdeSolverHandle solver, int max_iter, double tol)
VDE_API VdeCurveHandle vde_curve_create_bezier(VdeHandle ctx, const double *control_points, int num_points, int dimension)
struct VdeBody * VdeBodyHandle
Definition: vde.h:28
#define VDE_API
Definition: vde.h:11
VDE_API int vde_collision_gjk_spheres(VdeHandle ctx, double cx1, double cy1, double cz1, double r1, double cx2, double cy2, double cz2, double r2)
VDE_API void vde_mesh_get_vertex(VdeMeshHandle mesh, size_t idx, double *out_x, double *out_y, double *out_z)
VDE_API VdeMeshHandle vde_mesh_simplify(VdeHandle ctx, VdeMeshHandle mesh, double target_ratio)
VDE_API int vde_solver_add_point(VdeSolverHandle solver, double x, double y, int fixed)
VDE_API void vde_curve_evaluate(VdeCurveHandle curve, double t, double *out_x, double *out_y, double *out_z)
VDE_API const char * vde_last_error(VdeHandle ctx)
VDE_API void vde_mesh_free(VdeMeshHandle mesh)
VDE_API void vde_solver_free(VdeSolverHandle solver)
VDE_API int vde_solver_add_line(VdeSolverHandle solver, int p0, int p1)
VDE_API VdeBodyHandle vde_body_create_sphere(VdeHandle ctx, double r, int su, int sv)
VDE_API void vde_solver_add_distance_constraint(VdeSolverHandle solver, int p0, int p1, double d)
VDE_API VdeSolverHandle vde_solver_create(void)
struct VdeBVH * VdeBVHHandle
Definition: vde.h:26
VDE_API VdeMeshHandle vde_deserialize_mesh(VdeHandle ctx, const uint8_t *data, size_t len)
VDE_API VdeHandle vde_create(void)
VDE_API void vde_mesh_get_bounds(VdeMeshHandle mesh, double *out_min_x, double *out_min_y, double *out_min_z, double *out_max_x, double *out_max_y, double *out_max_z)
VDE_API void vde_solver_add_horizontal(VdeSolverHandle solver, int line_id)
struct VdeCurve * VdeCurveHandle
Definition: vde.h:24
VDE_API size_t vde_mesh_num_faces(VdeMeshHandle mesh)
struct VdeSurface * VdeSurfaceHandle
Definition: vde.h:25
VDE_API void vde_curve_free(VdeCurveHandle curve)
VDE_API VdeMeshHandle vde_mesh_boolean(VdeHandle ctx, VdeMeshHandle a, VdeMeshHandle b, int operation)
VDE_API void vde_destroy(VdeHandle ctx)
VDE_API size_t vde_mesh_num_vertices(VdeMeshHandle mesh)
VDE_API void vde_solver_add_vertical(VdeSolverHandle solver, int line_id)
VDE_API void vde_solver_get_point(VdeSolverHandle solver, int idx, double *x, double *y)
struct VdeSolver * VdeSolverHandle
约束求解器句柄 — 二维草图约束
Definition: vde_capi.h:72
struct VdeContext * VdeHandle
引擎上下文句柄 — 管理错误状态和内部资源
Definition: vde_capi.h:57
struct VdeMesh * VdeMeshHandle
三角网格句柄 — 顶点+面集合
Definition: vde_capi.h:62
struct VdeBody * VdeBodyHandle
B-Rep 实体句柄 — 边界表示模型
Definition: vde_capi.h:77
struct VdeCurve * VdeCurveHandle
参数曲线句柄 — NURBS 曲线
Definition: vde_capi.h:67