py4design.py3dmodel.calculate module¶
-
py4design.py3dmodel.calculate.point_in_face(pypt, occface, tolerance=0.0001)¶ This function checks if a point is inside an OCCface.
Parameters: - pypt : tuple of floats
Check if this point is inside the OCCface. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z)
- occface : OCCface
Check if the point is inside this OCCface.
- tolerance : float, optional
The minimum distance between the point and the face to determine if the point is inside the face. Default = 1e-04.
Returns: - True or False : bool
If True means the point is in the face, if False the point is not in the face.
-
py4design.py3dmodel.calculate.point_in_solid(pypt, occsolid)¶ This function checks if a point is inside an OCCsolid.
Parameters: - pypt : tuple of floats
Check if this point is inside the OCCsolid. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z)
- occsolid : OCCsolid
Check if the point is inside this OCCsolid.
Returns: - True, False, None : True, False, None
If True means the point is in the solid, if False the point is not in the solid, if None means the point is on the solid.
-
py4design.py3dmodel.calculate.project_point_on_infedge(pypt, occedge)¶ This function projects a point towards the OCCedge. The edge is treated as a vector and it stretched through infinity.
Parameters: - pypt : tuple of floats
The point to be projected. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z)
- occedge : OCCedge
The edge to be projected on.
Returns: - Projected point : pypt
The projected point on the edge.
-
py4design.py3dmodel.calculate.project_point_on_faceplane(pypt, occface)¶ This function projects a point towards the OCCface. The face is treated as a plane and it stretched through infinity.
Parameters: - pypt : tuple of floats
The point to be projected. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z)
- occface : OCCface
The face to be projected on.
Returns: - Projected point : pypt
The projected point on the face.
-
py4design.py3dmodel.calculate.angle_bw_2_vecs_w_ref(pyvec1, pyvec2, ref_pyvec)¶ This function measures the angle between two vectors regards to a reference vector. The reference vector must be perpendicular to both the vectors. The angle is measured in counter-clockwise direction.
Parameters: - pyvec1 : tuple of floats
The first vector to be measured. A pyvec is a tuple that documents the xyz direction of a vector e.g. (x,y,z)
- pyvec2 : tuple of floats
The second vector to be measured. A pyvec is a tuple that documents the xyz direction of a vector e.g. (x,y,z)
- ref_pyvec : tuple of floats
- The reference vector must be perpendicular to pyvec1 and pyvec2.
A pyvec is a tuple that documents the xyz direction of a vector e.g. (x,y,z)
Returns: - angle : float
The measured angle between pyvec1 and pyvec2 regards to ref_pyvec, the angle is measured in counter-clockwise direction.
-
py4design.py3dmodel.calculate.angle_bw_2_vecs(pyvec1, pyvec2)¶ This function measures the angle between two vectors.
Parameters: - pyvec1 : tuple of floats
The first vector to be measured. A pyvec is a tuple that documents the xyz direction of a vector e.g. (x,y,z)
- pyvec2 : tuple of floats
The second vector to be measured. A pyvec is a tuple that documents the xyz direction of a vector e.g. (x,y,z)
Returns: - angle : float
The measured angle between pyvec1 and pyvec2.
-
py4design.py3dmodel.calculate.cross_product(pyvec1, pyvec2)¶ This function measures the angle between two vectors.
Parameters: - pyvec1 : tuple of floats
The first vector to be measured. A pyvec is a tuple that documents the xyz direction of a vector e.g. (x,y,z)
- pyvec2 : tuple of floats
The second vector to be measured. A pyvec is a tuple that documents the xyz direction of a vector e.g. (x,y,z)
Returns: - cross product : pyvec
The cross product.
-
py4design.py3dmodel.calculate.dot_product(pyvec1, pyvec2)¶ This function measures the angle between two vectors.
Parameters: - pyvec1 : tuple of floats
The first vector to be measured. A pyvec is a tuple that documents the xyz direction of a vector e.g. (x,y,z)
- pyvec2 : tuple of floats
The second vector to be measured. A pyvec is a tuple that documents the xyz direction of a vector e.g. (x,y,z)
Returns: - dot product : float
The dot product.
-
py4design.py3dmodel.calculate.distance_between_2_pts(pypt1, pypt2)¶ This function measures the distance between two points.
Parameters: - pypt1 : tuple of floats
The first point to be measured. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z)
- pypt2 : tuple of floats
The second point to be measured. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z)
Returns: - angle : float
The measured distance between pypt1 and pypt2.
-
py4design.py3dmodel.calculate.points_mean(pyptlist)¶ This function calculates the mean of all points.
Parameters: - pyptlist : a list of tuples
The list of points to be checked. List of points to be converted. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z), thus a pyptlist is a list of tuples e.g. [(x1,y1,z1), (x2,y2,z2), …]
Returns: - midpt : pypt
The mean of all the points.
-
py4design.py3dmodel.calculate.is_anticlockwise(pyptlist, ref_pyvec)¶ This function checks if the list of points are arranged anticlockwise in regards to the ref_pyvec. The ref_pyvec must be perpendicular to the points.
Parameters: - pyptlist : a list of tuples
The list of points to be checked. List of points to be converted. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z), thus a pyptlist is a list of tuples e.g. [(x1,y1,z1), (x2,y2,z2), …]
- ref_pyvec : tuple of floats
The reference vector must be perpendicular to the list of points. A pyvec is a tuple that documents the xyz direction of a vector e.g. (x,y,z)
Returns: - True or False : bool
If True the list of points are arranged in anticlockwise manner, if False they are not.
-
py4design.py3dmodel.calculate.is_collinear(pyptlist)¶ This function checks if the list of points are collinear.
Parameters: - pyptlist : a list of tuples
The list of points to be checked. List of points to be converted. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z), thus a pyptlist is a list of tuples e.g. [(x1,y1,z1), (x2,y2,z2), …]
Returns: - True or False : bool
If True the list of points are collinear.
-
py4design.py3dmodel.calculate.is_coplanar(pyptlist)¶ This function checks if the list of points are coplanar.
Parameters: - pyptlist : a list of tuples
The list of points to be checked. List of points to be converted. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z), thus a pyptlist is a list of tuples e.g. [(x1,y1,z1), (x2,y2,z2), …]
Returns: - True or False : bool
If True the list of points are coplanar.
-
py4design.py3dmodel.calculate.edge_midpt(occedge)¶ This function calcuates the midpoint of an OCCedge.
Parameters: - occedge : OCCedge
The edge to be analysed.
Returns: - midpoint : pypt
The midpoint of the edge.
-
py4design.py3dmodel.calculate.project_edge_on_face(occedge, occface)¶ This function projects an OCCedge towards the OCCface. #TODO: figure out if it is a faceplane or just the face.
Parameters: - occedge : OCCedge
The edge to be projected.
- occface : OCCface
The face to be projected on.
Returns: - Projected edge : OCCedge
The projected edge on the face.
-
py4design.py3dmodel.calculate.intersect_edge_with_edge(occedge1, occedge2, tolerance=1e-06)¶ This function intersects two OCCedges and obtain a list of intersection points.
Parameters: - occedge1 : OCCedge
The first edge to be intersected.
- occedge2 : OCCedge
The second edge to be intersected.
- tolerance : float, optional
The minimum distance between the two edges to determine if the edges are intersecting, Default = 1e-06.
Returns: - list of intersection points : pyptlist
The list of points where the two edges intersect.
-
py4design.py3dmodel.calculate.edge_common_vertex(occedge1, occedge2)¶ This function checks if two OCCedges have common vertices.
Parameters: - occedge1 : OCCedge
The first edge to be analysed.
- occedge2 : OCCedge
The second edge to be analysed.
Returns: - list of common points : pyptlist
The list of common points between the two edges.
-
py4design.py3dmodel.calculate.intersect_edge_with_face(occedge, occface, tolerance=0.01)¶ This function intersects an OCCedge with an OCCface and obtain a list of intersection points.
Parameters: - occedge : OCCedge
The edge to be intersected.
- occface : OCCface
The face to be intersected.
- tolerance : float, optional
The minimum distance between the edge and face to determine if the they are intersecting, Default = 1e-02.
Returns: - list of intersection points : pyptlist
The list of points where the two topologies intersect.
-
py4design.py3dmodel.calculate.pt2edgeparameter(pypt, occedge)¶ This function calculates the parameter of the OCCedge from the given point. The length of the edge can be calculated by specifying two parameters in the edgelength function.
Parameters: - pypt : tuple of floats
The point on the OCCedge to be converted to the parameter. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z).
- occedge : OCCedge
The edge to be analysed.
Returns: - parameter : float
The parameter of the point on the OCCedge.
-
py4design.py3dmodel.calculate.edgeparameter2pt(parameter, occedge)¶ This function calculates the point on the OCCedge from the given parameter.
Parameters: - parameter : float
The parameter of the OCCedge.
- occedge : OCCedge
The edge to be analysed.
Returns: - point on edge : pypt
The point on the edge based on the parameter.
-
py4design.py3dmodel.calculate.edgelength(lbound, ubound, occedge)¶ This function calculates the length of the OCCedge between the lower and upper bound.
Parameters: - lbound : float
The lower bound of the OCCedge.
- ubound : float
The upper bound of the OCCedge.
- occedge : OCCedge
The edge to be analysed.
Returns: - length : float
The length of the edge between the upper and lower bound.
-
py4design.py3dmodel.calculate.are_same_edges(occedge1, occedge2)¶ This function checks if the two OCCedges are the same.
Parameters: - occedge1 : OCCedge
The first edge to be analysed.
- occedge2 : OCCedge
The second edge to be analysed.
Returns: - True or False : bool
If True the two edges are the same, if False the two edges are not the same.
-
py4design.py3dmodel.calculate.sort_edges_into_order(occedge_list, isclosed=False)¶ This function creates a list of ordered OCCedges from a list of loose OCCedges. The edges does not need to form a close face.
Parameters: - occedge_list : list of OCCedges
The list of OCCedges to be sorted.
- isclosed : bool, optional
True or False, is the resultant wires suppose to be closed or opened, Default = False.
Returns: - list of sorted edges : list of OCCedges
A list of ordered OCCedges.
-
py4design.py3dmodel.calculate.identify_open_close_wires_frm_loose_edges(occedge_list)¶ This function rearranged the list of OCCedges and categorise them into two lists of open and closed OCCwires.
Parameters: - occedge_list : list of OCCedges
The list of OCCedges to be sorted.
Returns: - list of closed wires : list of OCCwires
A list of closed OCCwires from the loose OCCedges.
- list of opened wires : list of OCCwires
A list of opened OCCwires from the loose OCCedges.
-
py4design.py3dmodel.calculate.is_wire_closed(occwire)¶ This function checks if an OCCwire is closed.
Parameters: - occwire : OCCwire
The OCCwire to be checked.
Returns: - True or False : bool
If True wire is closed, if False wire is opened.
-
py4design.py3dmodel.calculate.wirelength(occwire)¶ This function measures the length of the OCCwire.
Parameters: - occwire : OCCwire
The OCCwire to be measured.
Returns: - length of wire : float
The lenght of the wire.
-
py4design.py3dmodel.calculate.face_normal(occface)¶ This function calculates the normal of the OCCface.
Parameters: - occface : OCCface
The OCCface to be analysed.
Returns: - face normal : pydirection
The normal of the face. A pydir is a tuple that documents the xyz vector of a dir e.g. (x,y,z)
-
py4design.py3dmodel.calculate.face_area(occface)¶ This function calculates the area of the OCCface.
Parameters: - occface : OCCface
The OCCface to be analysed.
Returns: - face area : float
The area of the face.
-
py4design.py3dmodel.calculate.face_midpt(occface)¶ This function calculates the mid point of the OCCface.
Parameters: - occface : OCCface
The OCCface to be analysed.
Returns: - face mid point : pypt
The mid point of the face.
-
py4design.py3dmodel.calculate.is_face_planar(occface, tolerance=1e-06)¶ This function calculates if the OCCface is planar.
Parameters: - occface : OCCface
The OCCface to be analysed.
- tolerance : float, optional
The precision for checking the planarity, Default = 1e-06.
Returns: - True or False : bool
If True face is planar, if False face is not planar.
-
py4design.py3dmodel.calculate.face_is_inside(occface, boundary_occface)¶ This function calculates if OCCface is inside boundary OCCface.
Parameters: - occface : OCCface
The OCCface to be analysed.
- boundary_occface : OCCface
Check if occface is inside the boundary_occface.
Returns: - True or False : bool
If True face is inside boundary face, if False face is not inside boundary face.
-
py4design.py3dmodel.calculate.project_face_on_faceplane(occface2projon, occface2proj)¶ This function projects the OCCface onto another OCCface plane. The plane stretches through infinity.
Parameters: - occface2projon : OCCface
The OCCface to be projected on.
- occface2proj : OCCface
The OCCface to be projected.
Returns: - list of points : pyptlist
The list of projected points.
-
py4design.py3dmodel.calculate.srf_nrml_facing_solid_inward(occface, occsolid)¶ This function checks if the OCCface is facing the inside of the OCCsolid.
Parameters: - occface : OCCface
The OCCface to be checked.
- occsolid : OCCsolid
The OCCsolid.
Returns: - True or False : bool
If True the face is facing the inside of the solid, if False the face is not facing inwards.
-
py4design.py3dmodel.calculate.are_same_faces(occface1, occface2)¶ This function checks if the two OCCfaces are the same.
Parameters: - occface1 : OCCface
The first OCCface to be checked.
- occface2 : OCCface
The second OCCface to be checked.
Returns: - True or False : bool
If True the faces are the same, if False the faces are not the same.
-
py4design.py3dmodel.calculate.face_normal_as_edges(occface_list, normal_magnitude=1)¶ This function calculates the normals of the list of OCCfaces and construct a list of OCCedges from it.
Parameters: - occface_list : list of OCCfaces
The list of OCCfaces to be analysed.
- normal_magnitude : float, optional
The length of the normal OCCedges, Default = 1.
Returns: - list of normals : list of OCCedges
List of OCCedges.
-
py4design.py3dmodel.calculate.grp_faces_acc2normals(occface_list)¶ This function groups the list of OCCfaces according to their normals.
Parameters: - occface_list : list of OCCfaces
The list of OCCfaces to be analysed.
Returns: - dictionary of faces according to their normals : dictionary of OCCfaces
The normals are the keys of the dictionary. e.g. to obtain all the OCCfaces that have normals (0,0,1), dictionar[ (0,0,1)]
-
py4design.py3dmodel.calculate.is_shell_closed(occshell)¶ This function calculates if the OCCshell is closed.
Parameters: - occshell : OCCshell
The OCCshell to be analysed.
Returns: - True or False : bool
If True OCCshell is closed, if False OCCshell is not closed.
-
py4design.py3dmodel.calculate.solid_volume(occsolid)¶ This function calculates the volume of the OCCsolid.
Parameters: - occsolid : OCCsolid
The OCCsolid to be analysed.
Returns: - volume : float
The volume of the solid.
-
py4design.py3dmodel.calculate.check_solid_inward(occsolid)¶ This function checks if all the OCCfaces of the OCCsolids is facing inwards.
Parameters: - occsolid : OCCsolid
The OCCsolid to be analysed.
Returns: - True or False : bool
If True OCCsolid is facing inwards, if False OCCsolid is not facing inwards.
-
py4design.py3dmodel.calculate.get_bounding_box(occtopology)¶ This function calculates the bounding box of the OCCtopology.
Parameters: - occtopology : OCCtopology
The OCCtopology to be analysed. OCCtopology includes: OCCshape, OCCcompound, OCCcompsolid, OCCsolid, OCCshell, OCCface, OCCwire, OCCedge, OCCvertex
Returns: - xmin : float
Minimum X-coordinate
- ymin : float
Minimum Y-coordinate
- zmin : float
Minimum Z-coordinate
- xmax : float
Maximum X-coordinate
- ymax : float
Maximum Y-coordinate
- zmax : float
Maximum Z-coordinate
-
py4design.py3dmodel.calculate.get_centre_bbox(occtopology)¶ This function calculates the centre of the bounding box of the OCCtopology.
Parameters: - occtopology : OCCtopology
The OCCtopology to be analysed. OCCtopology includes: OCCshape, OCCcompound, OCCcompsolid, OCCsolid, OCCshell, OCCface, OCCwire, OCCedge, OCCvertex
Returns: - centre point : pypt
The centre point of the OCCtopology’s bounding box.
-
py4design.py3dmodel.calculate.minimum_distance(occtopology1, occtopology2)¶ This function calculates the minimum distance between the two OCCtopologies.
Parameters: - occtopology1 : OCCtopology
The OCCtopology to be analysed. OCCtopology includes: OCCshape, OCCcompound, OCCcompsolid, OCCsolid, OCCshell, OCCface, OCCwire, OCCedge, OCCvertex
- occtopology2 : OCCtopology
The OCCtopology to be analysed. OCCtopology includes: OCCshape, OCCcompound, OCCcompsolid, OCCsolid, OCCshell, OCCface, OCCwire, OCCedge, OCCvertex
Returns: - minimum distance : float
The minimum distance between the two topologies.
-
py4design.py3dmodel.calculate.project_shape_on_shape(occtopo_proj, occtopo_projon, tolerance=1e-06)¶ This function project the occtopoproj (OCCtopology) onto the occtopoprojon (OCCtopology), and returns the list of projected points.
Parameters: - occtopo_proj : OCCtopology
The OCCtopology to to project. OCCtopology includes: OCCshape, OCCcompound, OCCcompsolid, OCCsolid, OCCshell, OCCface, OCCwire, OCCedge, OCCvertex
- occtopo_projon : OCCtopology
The OCCtopology to be projected on. OCCtopology includes: OCCshape, OCCcompound, OCCcompsolid, OCCsolid, OCCshell, OCCface, OCCwire, OCCedge, OCCvertex
- tolerance : float, optional
The precision of the projection, Default = 1e-06.
Returns: - list of projected points : pyptlist
The list of projected points.
-
py4design.py3dmodel.calculate.intersect_shape_with_ptdir(occtopology, pypt, pydir)¶ This function projects a point in a direction and calculates the at which point does the point intersects the OCCtopology.
Parameters: - occtopology : OCCtopology
The OCCtopology to be projected on. OCCtopology includes: OCCshape, OCCcompound, OCCcompsolid, OCCsolid, OCCshell, OCCface, OCCwire, OCCedge, OCCvertex
- pypt : tuple of floats
The point to be projected. A pypt is a tuple that documents the xyz coordinates of a pt e.g. (x,y,z)
- pydir : tuple of floats
The direction of the point to be projected. A pydir is a tuple that documents the xyz vector of a dir e.g. (x,y,z)
Returns: - intersection point : pypt
The point in which the projected point intersect the OCCtopology. If None means there is no intersection.
- intersection face : OCCface
The OCCface in which the projected point hits. If None means there is no intersection.
-
py4design.py3dmodel.calculate.cs_transformation(occ_gpax3_1, occ_gpax3_2)¶ This function maps a OCC coordinate system (occ_gpax3) to another OCC coordinate system (occ_gpax3).
Parameters: - occ_gpax3_1 : gp_Ax3
The coordinate system to be mapped.
- occ_gpax3_2 : gp_Ax3
The coordinate system to be mapped onto.
Returns: - transformation : gp_Trsf
The transformation for the mapping.