Built-in Modules#

These helpers register the conversion sets bundled with the resolver package. Use them to populate the registry before calling pyvcad_attribute_resolver.adapt().

pyvcad_attribute_resolver.register_foaming_conversions()[source]#

Register all five foaming filament conversions (TPU + PLA).

pyvcad_attribute_resolver.register_tpu_conversions()[source]#

Register the three VarioShore TPU conversions.

pyvcad_attribute_resolver.register_pla_conversions()[source]#

Register the two LW-PLA conversions.

pyvcad_attribute_resolver.register_j750_shore_hardness_conversions(material_defs=None, agilus_material=None, vero_material=None)[source]#

Register the J750 shore-hardness to volume-fractions conversion.

By default this resolves the first J750 materials whose names begin with Agilus30 and Vero. Callers can override the representative material names when they want a specific color variant.

pyvcad_attribute_resolver.register_j750_modulus_toughness_conversions(material_defs=None, rigid_material='VeroBlack', soft_material='Agilus30Clr', liquid_material='M.Cleanser', lookup_table_path=None)[source]#

Register the J750 modulus+toughness to volume-fractions conversion.

The bundled lookup table assumes modulus values are provided in MPa and toughness values are provided in MJ/m^3. The shipped table is generated from the legacy C++ inverse model using the default 0.30 liquid cap.

To use a different liquid cap or table resolution, generate a new table file with generate_j750_modulus_toughness_lookup_table() and pass its path via lookup_table_path.

pyvcad_attribute_resolver.register_generic_color_conversions(alpha=1.0)[source]#

Register all generic RGB/RGBA color conversions.

pyvcad_attribute_resolver.register_vector_component_conversions(vec3_source=None, vec3_x=None, vec3_y=None, vec3_z=None, vec4_source=None, vec4_x=None, vec4_y=None, vec4_z=None, vec4_w=None, register_demote=True, register_promote=True)[source]#

Register demote and/or promote conversions for the supplied attribute names.

Pass a complete Vec3 name set and/or a complete Vec4 name set. Incomplete name sets are ignored. At least one complete set must be provided.

pyvcad_attribute_resolver.register_vec3_to_scalars_conversions(source, x_name, y_name, z_name)[source]#

Register Vec3 demotion edges that produce three named float attributes.

One converter instance produces all three outputs. Separate graph edges are registered for each component so adapt(..., [x_name]) (and likewise for Y/Z) can discover the conversion.

pyvcad_attribute_resolver.register_vec4_to_scalars_conversions(source, x_name, y_name, z_name, w_name)[source]#

Register Vec4 demotion edges that produce four named float attributes.

pyvcad_attribute_resolver.register_scalars_to_vec3_conversions(x_name, y_name, z_name, target)[source]#

Register a multi-input conversion that builds a Vec3 from three floats.

pyvcad_attribute_resolver.register_scalars_to_vec4_conversions(x_name, y_name, z_name, w_name, target)[source]#

Register a multi-input conversion that builds a Vec4 from four floats.

pyvcad_attribute_resolver.generate_j750_modulus_toughness_lookup_table(output_path=None, table_size=128, max_liquid_volume=0.3, fail_threshold=0.05)[source]#

Generate a J750 modulus+toughness lookup-table JSON file.

pyvcad_attribute_resolver.generate_j750_modulus_toughness_reachable_region_plot(output_path, lookup_table_path=None, table_size=128, max_liquid_volume=0.3, fail_threshold=0.05, fraction_steps=181)[source]#

Generate the reachable-region validation plot used in the docs.