// This library provides WebAssembly bindings for the FreeCAD's geometric solver library planegcs. // Copyright (C) 2023 Miroslav Šerý, Salusoft89 // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA export const constraint_param_index : Record> = { equal: { param1: 'object_param_or_number', param2: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', internalalignment: 'primitive_type', }, proportional: { param1: 'object_param_or_number', param2: 'object_param_or_number', ratio: 'primitive_type', tagId: 'primitive_type', driving: 'primitive_type', }, difference: { param1: 'object_param_or_number', param2: 'object_param_or_number', difference: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, p2p_distance: { p1_id: 'object_id', p2_id: 'object_id', distance: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, p2p_angle_incr_angle: { p1_id: 'object_id', p2_id: 'object_id', angle: 'object_param_or_number', incrAngle: 'primitive_type', tagId: 'primitive_type', driving: 'primitive_type', }, p2p_angle: { p1_id: 'object_id', p2_id: 'object_id', angle: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, p2l_distance: { p_id: 'object_id', l_id: 'object_id', distance: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, point_on_line_pl: { p_id: 'object_id', l_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, point_on_line_ppp: { p_id: 'object_id', lp1_id: 'object_id', lp2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, point_on_perp_bisector_pl: { p_id: 'object_id', l_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, point_on_perp_bisector_ppp: { p_id: 'object_id', lp1_id: 'object_id', lp2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, parallel: { l1_id: 'object_id', l2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, perpendicular_ll: { l1_id: 'object_id', l2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, perpendicular_pppp: { l1p1_id: 'object_id', l1p2_id: 'object_id', l2p1_id: 'object_id', l2p2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, l2l_angle_ll: { l1_id: 'object_id', l2_id: 'object_id', angle: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, l2l_angle_pppp: { l1p1_id: 'object_id', l1p2_id: 'object_id', l2p1_id: 'object_id', l2p2_id: 'object_id', angle: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, angle_via_point: { crv1_id: 'object_id', crv2_id: 'object_id', p_id: 'object_id', angle: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, angle_via_two_points: { crv1_id: 'object_id', crv2_id: 'object_id', p1_id: 'object_id', p2_id: 'object_id', angle: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, angle_via_point_and_param: { crv1_id: 'object_id', crv2_id: 'object_id', p_id: 'object_id', cparam: 'object_param_or_number', angle: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, angle_via_point_and_two_params: { crv1_id: 'object_id', crv2_id: 'object_id', p_id: 'object_id', cparam1: 'object_param_or_number', cparam2: 'object_param_or_number', angle: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, midpoint_on_line_ll: { l1_id: 'object_id', l2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, midpoint_on_line_pppp: { l1p1_id: 'object_id', l1p2_id: 'object_id', l2p1_id: 'object_id', l2p2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, tangent_circumf: { p1_id: 'object_id', p2_id: 'object_id', rd1: 'object_param_or_number', rd2: 'object_param_or_number', internal: 'primitive_type', tagId: 'primitive_type', driving: 'primitive_type', }, tangent_at_bspline_knot: { b_id: 'object_id', l_id: 'object_id', knotindex_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, p2p_coincident: { p1_id: 'object_id', p2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, horizontal_l: { l_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, horizontal_pp: { p1_id: 'object_id', p2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, vertical_l: { l_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, vertical_pp: { p1_id: 'object_id', p2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, coordinate_x: { p_id: 'object_id', x: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, coordinate_y: { p_id: 'object_id', y: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, arc_rules: { a_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, point_on_circle: { p_id: 'object_id', c_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, point_on_ellipse: { p_id: 'object_id', e_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, point_on_hyperbolic_arc: { p_id: 'object_id', e_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, point_on_parabolic_arc: { p_id: 'object_id', e_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, point_on_bspline: { p_id: 'object_id', b_id: 'object_id', pointparam: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, arc_of_ellipse_rules: { a_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, curve_value: { p_id: 'object_id', a_id: 'object_id', u: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, arc_of_hyperbola_rules: { a_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, arc_of_parabola_rules: { a_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, point_on_arc: { p_id: 'object_id', a_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, perpendicular_line2arc: { p1_id: 'object_id', p2_id: 'object_id', a_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, perpendicular_arc2line: { a_id: 'object_id', p1_id: 'object_id', p2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, perpendicular_circle2arc: { center_id: 'object_id', radius: 'object_param_or_number', a_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, perpendicular_arc2circle: { a_id: 'object_id', center_id: 'object_id', radius: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, perpendicular_arc2arc: { a1_id: 'object_id', reverse1: 'primitive_type', a2_id: 'object_id', reverse2: 'primitive_type', tagId: 'primitive_type', driving: 'primitive_type', }, tangent_lc: { l_id: 'object_id', c_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, tangent_le: { l_id: 'object_id', e_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, tangent_la: { l_id: 'object_id', a_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, tangent_cc: { c1_id: 'object_id', c2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, tangent_aa: { a1_id: 'object_id', a2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, tangent_ca: { c_id: 'object_id', a_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, circle_radius: { c_id: 'object_id', radius: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, arc_radius: { a_id: 'object_id', radius: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, circle_diameter: { c_id: 'object_id', diameter: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, arc_diameter: { a_id: 'object_id', diameter: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, equal_length: { l1_id: 'object_id', l2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, equal_radius_cc: { c1_id: 'object_id', c2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, equal_radii_ee: { e1_id: 'object_id', e2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, equal_radii_ahah: { a1_id: 'object_id', a2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, equal_radius_ca: { c1_id: 'object_id', a2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, equal_radius_aa: { a1_id: 'object_id', a2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, equal_focus: { a1_id: 'object_id', a2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, p2p_symmetric_ppl: { p1_id: 'object_id', p2_id: 'object_id', l_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, p2p_symmetric_ppp: { p1_id: 'object_id', p2_id: 'object_id', p_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, snells_law: { ray1_id: 'object_id', ray2_id: 'object_id', boundary_id: 'object_id', p_id: 'object_id', n1: 'object_param_or_number', n2: 'object_param_or_number', flipn1: 'primitive_type', flipn2: 'primitive_type', tagId: 'primitive_type', driving: 'primitive_type', }, c2cdistance: { c1_id: 'object_id', c2_id: 'object_id', dist: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, c2ldistance: { c_id: 'object_id', l_id: 'object_id', dist: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, p2cdistance: { p_id: 'object_id', c_id: 'object_id', distance: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, arc_length: { a_id: 'object_id', dist: 'object_param_or_number', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_point2ellipse: { e_id: 'object_id', p1_id: 'object_id', alignmentType: 'primitive_type', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_ellipse_major_diameter: { e_id: 'object_id', p1_id: 'object_id', p2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_ellipse_minor_diameter: { e_id: 'object_id', p1_id: 'object_id', p2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_ellipse_focus1: { e_id: 'object_id', p1_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_ellipse_focus2: { e_id: 'object_id', p1_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_point2hyperbola: { e_id: 'object_id', p1_id: 'object_id', alignmentType: 'primitive_type', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_hyperbola_major_diameter: { e_id: 'object_id', p1_id: 'object_id', p2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_hyperbola_minor_diameter: { e_id: 'object_id', p1_id: 'object_id', p2_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_hyperbola_focus: { e_id: 'object_id', p1_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_parabola_focus: { e_id: 'object_id', p1_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, internal_alignment_bspline_control_point: { b_id: 'object_id', c_id: 'object_id', poleindex_id: 'object_id', tag: 'primitive_type', driving: 'primitive_type', }, internal_alignment_knot_point: { b_id: 'object_id', p_id: 'object_id', knotindex_id: 'object_id', tagId: 'primitive_type', driving: 'primitive_type', }, }