| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| __title__ = "FreeCAD result mechanical task panel" |
| __author__ = "PMcB" |
| __url__ = "https://www.freecad.org" |
|
|
| |
| |
| |
|
|
| import FreeCADGui |
| from pivy import coin |
|
|
| """ |
| Place Label on the screen with an optional image. |
| positions on screen: |
| (-.9, .9, 0) top left |
| (.9, .9, 0) upper right |
| (-.9, -.9, 0) lower left |
| (.9, -.9, 0) lower right |
| """ |
|
|
|
|
| class createLabel: |
| def __init__(self, trans, text, image="") -> None: |
| self.textSep = coin.SoSeparator() |
| self.cam = coin.SoOrthographicCamera() |
| self.cam.aspectRatio = 1 |
| self.cam.viewportMapping = coin.SoCamera.LEAVE_ALONE |
|
|
| self.trans = coin.SoTranslation() |
| self.trans.translation = trans |
| self.translation = trans |
| self.color = coin.SoBaseColor() |
| self.color.rgb = (0, 0, 0) |
|
|
| self.myFont = coin.SoFont() |
| self.myFont.name = "Arial,FreeSans,sans" |
| |
| self.size = 20 |
| self.myFont.size.setValue(self.size) |
|
|
| self.SoText2 = coin.SoText2() |
| self.SoText2.string = text |
|
|
| self.textSep.addChild(self.cam) |
| self.textSep.addChild(self.trans) |
| self.textSep.addChild(self.color) |
| self.textSep.addChild(self.myFont) |
| self.textSep.addChild(self.SoText2) |
| self.activeDoc = FreeCADGui.ActiveDocument |
| self.view = self.activeDoc.ActiveView |
| self.viewer = self.view.getViewer() |
| self.render = self.viewer.getSoRenderManager() |
| self.isimage = False |
| if image != "": |
| self.add_image(image) |
| self.isimage = True |
| self.sup = self.render.addSuperimposition(self.textSep) |
| self.displayed = True |
|
|
| |
| def get_position(self): |
| return self.translation |
|
|
| |
| def set_position(self, trans): |
| self.trans.translation = trans |
| self.translation = trans |
|
|
| |
| def set_font(self, font): |
| self.myFont.name = font |
|
|
| |
| def set_font_size(self, font_size): |
| self.myFont.size.setValue(font_size) |
|
|
| |
| def set_text(self, text): |
| self.SoText2.string = text |
|
|
| |
| def set_colour(self, colour): |
| self.color.rgb = colour |
| self.textSep.addChild(self.color) |
|
|
| |
| def add_image(self, image): |
| self.remove_image() |
| self.isimage = True |
| self.myImage = coin.SoImage() |
| self.myImage.filename.setValue(image) |
| self.textSep.addChild(self.myImage) |
|
|
| |
| def remove_image(self): |
| if self.isimage: |
| |
| self.textSep.removeChild(self.myImage) |
| self.isimage = False |
|
|
| |
| def display(self): |
| if not self.displayed: |
| |
| self.sup = self.render.addSuperimposition(self.textSep) |
| self.displayed = True |
|
|
| |
| def hide(self): |
| |
| if self.displayed: |
| self.render.removeSuperimposition(self.sup) |
| self.displayed = False |
|
|
| |
| def help(self): |
| print( |
| """ |
| Place Label on the screen with an optional image. |
| Create an instance: |
| import CreateLabels as CL |
| label = CL.creatLabel(<position of label>, <title of label>, <optional image>) |
| e.g.: |
| label1 = CL.createLabel( (-0.7, -0.90, 0), "this is text") |
| label2 = CL.createLabel( (+0.5, -0.90, 0), "this is a image", image = "mesh.jpg") |
| Positions on screen: |
| (-.9, .9, 0) top left |
| (.9, .9, 0) upper right |
| (-.9, -.9, 0) lower left |
| (.9, -.9, 0) lower right |
| |
| The following function are available: |
| label1.set_position((0.7, 0.50, 0)) |
| pos= label1.get_position() |
| label1.set_font("FreeMono,FreeSans,sans") |
| label1.set_font_size(20) |
| label1.set_text("hello world") |
| label1.set_colour((0,1,0)) # colour of text |
| label1.add_image("opera.jpg") |
| label1.remove_image() |
| label1.hide() - hide the label |
| label1.display() - display the label, after hide |
| """ |
| ) |
|
|
|
|
| if __name__ == "__main__": |
| label1 = createLabel((-0.98, 0.90, 0), "this a new text") |
| """ |
| Examples: |
| import CreateLabels as CL |
| label1 = CL.createLabel( (+0.5, -0.90, 0), "this is a image", image = "mesh.jpg") |
| label2 = CL.createLabel( (-0.7, -0.90, 0), "this is text") |
| |
| label1.set_colour((0,1,0)) |
| label1.remove_image() |
| label1.add_image("opera.jpg") |
| label1.set_text("hello world") |
| label1.set_position((+0.7, 0.50, 0)) |
| label1.set_font("FreeMono,FreeSans,sans") |
| label1.hide() |
| """ |
|
|