1 #include <vtestbed/assets/convert.hh>     2 #include <vtestbed/config/real_type.hh>     3 #include <vtestbed/core/compartment.hh>     4 #include <vtestbed/core/hull.hh>     5 #include <vtestbed/geometry/polyhedron.hh>     6 #include <vtestbed/guile/assets.hh>     7 #include <vtestbed/guile/base.hh>     8 #include <vtestbed/guile/macros.hh>     9 #include <vtestbed/guile/traits.hh>    10 #include <vtestbed/guile/wrapper.hh>    20     SCM sym_gnuplot, sym_obj, sym_vsl, sym_bsp, sym_stl, sym_igs, sym_rms;
    21     SCM kw_format, kw_options;
    25         while (s_options != SCM_EOL) {
    26             SCM pair = scm_car(s_options);
    27             options.read(
to_string(scm_symbol_to_string(scm_car(pair))),
    29             s_options = scm_cdr(s_options);
    40         SCM any_traits_type::type() { return ::any_type; }
    53             SCM s_options = SCM_EOL;
    54             scm_c_bind_keyword_arguments(
"import-asset", rest,
    55                                          scm_t_keyword_arguments_flags{},
    56                                          kw_options, &s_options, SCM_UNDEFINED);
    58             read_options(options, s_options);
    73             SCM s_options = SCM_EOL;
    74             scm_c_bind_keyword_arguments(
"export-asset", rest,
    75                                          scm_t_keyword_arguments_flags{},
    76                                          kw_options, &s_options, SCM_UNDEFINED);
    78             read_options(options, s_options);
    79             auto&& asset = get_wrapper<std::any>(s_asset)->get();
    81             return SCM_UNSPECIFIED;
    95             SCM s_options = SCM_EOL;
    96             scm_c_bind_keyword_arguments(
"convert-asset", rest,
    97                                          scm_t_keyword_arguments_flags{},
    98                                          kw_options, &s_options, SCM_UNDEFINED);
   100             read_options(options, s_options);
   101             auto&& asset = get_wrapper<std::any>(s_asset)->get();
   102             auto&& result = convert(std::move(asset), std::move(options));
   118             SCM s_format = SCM_UNDEFINED, s_options = SCM_EOL;
   119             scm_c_bind_keyword_arguments(
"import-polyhedron", rest,
   120                                          scm_t_keyword_arguments_flags{},
   121                                          kw_format, &s_format,
   122                                          kw_options, &s_options, SCM_UNDEFINED);
   123             auto filename = to_string(path);
   124             if (is_bound(s_format)) {
   125                 format = string_to_format(to_c_string(scm_symbol_to_string(s_format)).get());
   126             } 
else { format = filename_to_format(filename); }
   127             Options options{{
"input-path",filename}, {
"input-format",format}};
   128             read_options(options, s_options);
   130             auto&& polyhedron = vtb::assets::convert<polyhedron_type>(
object, options);
   145             using vtb::assets::export_asset;
   146             auto* wrapper = get_wrapper<polyhedron_type>(polyhedron);
   148             SCM s_format = SCM_UNDEFINED, s_options = SCM_EOL;
   149             scm_c_bind_keyword_arguments(
"export-polyhedron", rest,
   150                                          scm_t_keyword_arguments_flags{},
   151                                          kw_format, &s_format,
   152                                          kw_options, &s_options, SCM_UNDEFINED);
   153             auto filename = to_string(path);
   154             if (is_bound(s_format)) {
   155                 format = string_to_format(to_c_string(scm_symbol_to_string(s_format)).get());
   156             } 
else { format = filename_to_format(filename); }
   157             Options options{{
"output-path",filename}, {
"output-format",format}};
   158             read_options(options, s_options);
   159             export_asset<polyhedron_type>(*wrapper->get(), options);
   160             return SCM_UNSPECIFIED;
   176             SCM s_format = SCM_UNDEFINED, s_options = SCM_EOL;
   177             scm_c_bind_keyword_arguments(
"import-hull", rest,
   178                                          scm_t_keyword_arguments_flags{},
   179                                          kw_format, &s_format,
   180                                          kw_options, &s_options, SCM_UNDEFINED);
   181             auto filename = to_string(path);
   182             if (is_bound(s_format)) {
   183                 format = string_to_format(to_c_string(scm_symbol_to_string(s_format)).get());
   184             } 
else { format = filename_to_format(filename); }
   185             Options options{{
"input-path",filename}, {
"input-format",format}};
   186             read_options(options, s_options);
   201             SCM s_format = SCM_UNDEFINED, s_options = SCM_EOL;
   202             scm_c_bind_keyword_arguments(
"import-compartments", rest,
   203                                          scm_t_keyword_arguments_flags{},
   204                                          kw_format, &s_format,
   205                                          kw_options, &s_options, SCM_UNDEFINED);
   206             auto filename = to_string(path);
   207             if (is_bound(s_format)) {
   208                 format = string_to_format(to_c_string(scm_symbol_to_string(s_format)).get());
   209             } 
else { format = filename_to_format(filename); }
   210             Options options{{
"input-path",filename}, {
"input-format",format}};
   211             read_options(options, s_options);
   213             auto&& rooms = convert<compartment_array>(
object, options);
   214             SCM s_rooms = SCM_EOL;
   215             for (
auto& room : rooms) {
   216                 s_rooms = scm_cons(traits_type::make(std::move(room)), s_rooms);
   218             s_rooms = scm_reverse(s_rooms);
   222         void assets_define() {
   223             ::any_type = define_type<std::any>(
"<any>");
   224             sym_gnuplot = scm_from_utf8_symbol(
"gnuplot");
   225             sym_obj = scm_from_utf8_symbol(
"obj");
   226             sym_stl = scm_from_utf8_symbol(
"stl");
   227             sym_vsl = scm_from_utf8_symbol(
"vsl");
   228             sym_bsp = scm_from_utf8_symbol(
"bsp");
   229             sym_igs = scm_from_utf8_symbol(
"igs");
   230             sym_rms = scm_from_utf8_symbol(
"rms");
   231             kw_format = scm_from_utf8_keyword(
"format");
   232             kw_options = scm_from_utf8_keyword(
"options");
   233             define_procedure(
"import-asset", 0, 0, 1, VTB_GUILE_1(
import_asset));
   234             define_procedure(
"export-asset", 1, 0, 1, VTB_GUILE_2(
export_asset));
   235             define_procedure(
"convert-asset", 1, 0, 1, VTB_GUILE_2(
convert_asset));
   238             define_procedure(
"import-hull", 1, 0, 1, VTB_GUILE_2(
import_hull));
 
SCM import_polyhedron(SCM path, SCM rest)
Import polyhedron from file path using options. Options are specified as rest argument.
 
SCM import_hull(SCM path, SCM rest)
Import ship hull from file path using options. Options are specified as rest argument.
 
Import/convert/export 3-d objects.
 
SCM export_asset(SCM s_asset, SCM rest)
Export asset asset to file using options. Options are specified as rest argument. File path is specif...
 
SCM export_polyhedron(SCM polyhedron, SCM path, SCM rest)
Export polyhedron polyhedron to file path using options. Options are specified as rest argument.
 
SCM import_compartments(SCM path, SCM rest)
Import ship compartments from file path using options. Options are specified as rest argument.
 
SCM import_asset(SCM rest)
Import an asset from file using options. Options are specified as rest argument. File path is specifi...
 
SCM convert_asset(SCM s_asset, SCM rest)
Convert asset asset using options. Options are specified as rest argument. Output format is specified...