set element visualization drawing
            
        :param p0: start drawing position, (x,y)
        :param angle: angle [deg] between x-axis, angle is rotating from x-axis to be '+' or '-', '+': clockwise, '-': anticlockwise
        :param mode: artist mode, 'plain' or 'fancy', 'plain' by default

def setDraw(self, p0=(0, 0), angle=0, mode='plain'):
        """ set element visualization drawing
            
        :param p0: start drawing position, (x,y)
        :param angle: angle [deg] between x-axis, angle is rotating from x-axis to be '+' or '-', '+': clockwise, '-': anticlockwise
        :param mode: artist mode, 'plain' or 'fancy', 'plain' by default
        """
        sconf = self.getConfig(type='simu')
        if 'l' in sconf:
            self._style['length'] = float(sconf['l'])
        else:
            self._style['length'] = 0
        self._style['angle'] = angle
        _theta = angle / 180.0 * np.pi  # deg to rad
        _length = self._style['length']
        _lw = self._style['lw']
        _fancyc = self._style['color']
        _alpha = self._style['alpha']
        _plainc = MagBlock._MagBlock__styleconfig_dict['drift']['color']

        #
        #   |
        # --p0--p1--
        #   |
        # 
        if mode == 'plain':
            x0, y0 = p0
            x1, y1 = x0 + _length, y0 + _length * np.tan(_theta)
            pc = x0 + 0.5 * _length, (y0 + y1) * 0.5
            vs = [(x0, y0), (x1, y1)]
            cs = [Path.MOVETO, Path.LINETO]
            pth = Path(vs, cs)
            ptch = patches.PathPatch(pth, lw=_lw, fc=_plainc, ec=_plainc, alpha=_alpha)
            self._patches = []
            self._patches.append(ptch)
            self.next_p0 = x1, y1
            self.next_inc_angle = 0
        else:  # fancy mode, same as plain, could be more fancy(Apr.08, 2016)
            x0, y0 = p0
            # x1, y1 = x0 + _length, y0 + _length * np.tan(_theta)
            # pc = x0 + 0.5*_length, (y0 + y1)*0.5

            x1, y1 = x0, y0 + 0.5 * _length
            x2, y2 = x1 + 1. / 3.0 * _length, y1
            x3, y3 = x2 + 1. / 3.0 * _length, y1
            x4, y4 = x3 + 1. / 3.0 * _length, y1
            x5, y5 = x4, y0
            x6, y6 = x5, y5 - 0.5 * _length
            x7, y7 = x3, y6
            x8, y8 = x3, y7 + 1. / 3.0 * _length
            x9, y9 = x2, y8
            x10, y10 = x9, y7
            x11, y11 = x0, y7
            pc = (x0 + x5) * 0.5, (y0 + y5) * 0.5

            verts1 = [
                (x0, y0),
                (x1, y1),
                (x2, y2),
                pc,
                (x3, y3),
                (x4, y4),
                (x5, y5),
                (x6, y6),
                (x7, y7),
                (x8, y8),
                (x9, y9),
                (x10, y10),
                (x11, y11),
                (x0, y0),
            ]

            codes1 = [
                Path.MOVETO,
                Path.LINETO,
                Path.LINETO,
                Path.LINETO,
                Path.LINETO,
                Path.LINETO,
                Path.LINETO,
                Path.LINETO,
                Path.LINETO,
                Path.LINETO,
                Path.LINETO,
                Path.LINETO,
                Path.LINETO,
                Path.CLOSEPOLY,
            ]
            pth = Path(verts1, codes1)
            ptch = patches.PathPatch(pth, lw=_lw, fc=_fancyc, ec=_fancyc, alpha=_alpha)
            self._patches = []
            self._patches.append(ptch)
            # self.next_p0 = x1, y1
            self.next_p0 = x5, y5
            self.next_inc_angle = 0

        self._anote = {'xypos': pc, 'textpos': pc, 'name': self.name.upper(), 'type': self.typename}