def get_figure(self, params):
        """Get properties of a defined projection element.

        Args:
            params (object): object with the necessary parameters to identify the projection element

        Returns:
            tuple[object, bool, str]: the first value in the returned tuple is the object of the projection element,
            the second is a bool success value and the third is an information message string
        """
        try:
            figure_type = params.figure_type
            group = params.projection_group
            id = params.figure_name

            name = group + self.figures_list[figure_type] + id

            proj_elem = ProjectionElementParameters()
            proj_elem.projection_group = group
            proj_elem.figure_name = id
            proj_elem.figure_type = figure_type

            if figure_type == Figure.POLYLINE:
                figure = self.get_polyline(name, proj_elem)
            elif figure_type == Figure.CIRCLE:
                figure = self.get_circle(name, proj_elem)
            elif figure_type == Figure.ARC:
                figure = self.get_arc(name, proj_elem)
            elif figure_type == Figure.OVAL:
                figure = self.get_oval(name, proj_elem)
            elif figure_type == Figure.TEXT or Figure.POINTER:
                figure = self.get_text(name, proj_elem)
            else:
                success = False
                message = "Figure " + name + "does not exist."

            if figure:
                success = True
                message = "Projection element get correct."
            else:
                success = False
                message = "Projection element get error."

        except Exception as e:
            success = False
            message = e
            figure = []

        return figure, success, message
    def cs_frame_hide(self):
        """Hide frame of user reference system.

        Raises:
            SystemError
        """
        proj_elem_params = ProjectionElementParameters()
        proj_elem_params.projection_group = self.__active_coord_sys + "_origin"
        proj_elem_params.figure_type = Figure.POLYLINE

        try:
            proj_elem_params.figure_name = "frame"
            self.hide_proj_elem(proj_elem_params)

        except SystemError as e:
            raise SystemError(e)
    def cs_axes_hide(self):
        """Hide user reference system origin axes.

        Raises:
            SystemError
        """
        proj_elem_params = ProjectionElementParameters()
        proj_elem_params.projection_group = self.__active_coord_sys + "_origin"
        proj_elem_params.figure_type = Figure.POLYLINE

        try:
            for axis_id in ["axis_x", "axis_y"]:
                proj_elem_params.figure_name = axis_id
                self.hide_proj_elem(proj_elem_params)

        except SystemError as e:
            raise SystemError(e)
示例#4
0
    def __init__(self):
        """Initialize the ZLPVisualizer object."""
        
        self.cs_marker_array = MarkerArray()
        self.pe_marker_array = MarkerArray()

        self.active_cs = ""
        self.cs_reference = ""
        self.STD_WAIT_TIME = CoordinateSystemParameters().DEFAULT_SHOW_TIME

        self.figures_list = ProjectionElementParameters().figures_list
        self.scale_factor = 1
    def __init__(self, module_id, thrift_client):
        """Initialize the ProjectionElement object."""
        self.__thrift_client = thrift_client
        self.__geometry_tool = GeometryTool(thrift_client)

        self.module_id = module_id
        self.figures_list = ProjectionElementParameters().figures_list

        self.default_projection_element = self.__thrift_client.thrift_interface.ProjectionElement(
        )
        self.default_projection_element.pen = 0
        self.default_projection_element.coordinateSystemList = []
        self.default_projection_element.projectorIDList = []
        self.default_projection_element.userTrans = self.__geometry_tool.create_matrix4x4(
        )
        self.default_projection_element.activated = True
示例#6
0
def get_dxf_arc_params(elem, file_name, id):
    """Read params from elem and create ARC figure

    Args:
        elem (modelspace elem): element from dxf containing shape data
        file_name (str): name of dxf file to be set as projection group
        id (int): number to identify shape, append to figure name

    Returns:
        ProjectionElementParameters: figure parameters
    """
    proj_elem_params = ProjectionElementParameters()
    proj_elem_params.figure_type = Figure.ARC
    proj_elem_params.projection_group = file_name
    proj_elem_params.figure_name = "arc_" + str(id)
    proj_elem_params.position.x = elem.dxf.center.x
    proj_elem_params.position.y = elem.dxf.center.y
    proj_elem_params.size[0] = elem.dxf.radius
    proj_elem_params.angle[0] = elem.dxf.start_angle
    proj_elem_params.angle[1] = elem.dxf.end_angle

    return proj_elem_params.to_figure()
    def cs_frame_create(self, cs_params):
        """Create the projection element of the system frame for the user reference system.

        Args:
            cs_params (object): object with the parameters of the new reference system defined

        Raises:
            SystemError
        """
        success, message = self.projection_element.cs_frame_create(
            cs_params.name, ProjectionElementParameters(), cs_params.T)
        if not success:
            raise SystemError(message)

        try:
            self.cs_frame_hide()
        except SystemError as e:
            raise SystemError(e)
示例#8
0
def get_dxf_text_params(elem, file_name, id):
    """Read params from elem and create TEXT figure

    Args:
        elem (modelspace elem): element from dxf containing shape data
        file_name (str): name of dxf file to be set as projection group
        id (int): number to identify shape, append to figure name

    Returns:
        ProjectionElementParameters: figure parameters
    """
    proj_elem_params = ProjectionElementParameters()
    proj_elem_params.figure_type = Figure.TEXT
    proj_elem_params.projection_group = file_name
    proj_elem_params.figure_name = "text_" + str(id)
    proj_elem_params.position.x = elem.dxf.insert.x - elem.dxf.height * math.sin(
        math.radians(elem.dxf.rotation))
    proj_elem_params.position.y = elem.dxf.insert.y + elem.dxf.height * math.cos(
        math.radians(elem.dxf.rotation))
    proj_elem_params.size[0] = elem.dxf.height
    proj_elem_params.angle[0] = elem.dxf.rotation
    proj_elem_params.text = elem.dxf.text

    return proj_elem_params.to_figure()
示例#9
0
def get_dxf_ellipse_params(elem, file_name, id):
    """Read params from elem and create ELLIPSE figure

    Args:
        elem (modelspace elem): element from dxf containing shape data
        file_name (str): name of dxf file to be set as projection group
        id (int): number to identify shape, append to figure name

    Returns:
        ProjectionElementParameters: figure parameters
    """
    proj_elem_params = ProjectionElementParameters()
    proj_elem_params.figure_type = Figure.OVAL
    proj_elem_params.projection_group = file_name
    proj_elem_params.figure_name = "oval_" + str(id)
    proj_elem_params.position.x = elem.dxf.center.x
    proj_elem_params.position.y = elem.dxf.center.y
    proj_elem_params.size[0] = GeometryTool.vector_point_distance(
        Point(0, 0, 0), elem.dxf.major_axis)
    proj_elem_params.size[1] = elem.dxf.ratio * proj_elem_params.size[0]
    proj_elem_params.angle[0] = GeometryTool.vector_point_angle(
        Point(0, 0, 0), elem.dxf.major_axis)

    return proj_elem_params.to_figure()
示例#10
0
def get_dxf_line_params(elem, file_name, id):
    """Read params from elem and create LINE figure

    Args:
        elem (modelspace elem): element from dxf containing shape data
        file_name (str): name of dxf file to be set as projection group
        id (int): number to identify shape, append to figure name

    Returns:
        ProjectionElementParameters: figure parameters
    """
    proj_elem_params = ProjectionElementParameters()
    proj_elem_params.figure_type = Figure.POLYLINE
    proj_elem_params.projection_group = file_name
    proj_elem_params.figure_name = "line_" + str(id)
    proj_elem_params.position.x = elem.dxf.start.x
    proj_elem_params.position.y = elem.dxf.start.y
    proj_elem_params.size[0] = GeometryTool.vector_point_distance(
        elem.dxf.start, elem.dxf.end)
    proj_elem_params.angle[0] = GeometryTool.vector_point_angle(
        elem.dxf.start, elem.dxf.end)

    return proj_elem_params.to_figure()
示例#11
0
    def test4_projection_element(self):

        pe = ProjectionElementParameters()
        try:
            # this fields should be available
            pe.figure_type = 0
            pe.figure_name = "pe_test"
            pe.projection_group = "pe_test_group"
            pe.position = Point(0, 0, 0)
            pe.size[0] = 10
            pe.size[1] = 20
            pe.angle[0] = 0
            pe.angle[1] = 0

            figure = pe.to_figure()
            self.assertEquals(figure.figure_name, pe.figure_name)
        except Exception as e:
            self.fail("Exception raised: {}".format(e))