Browse Source

added code to annotate an object in TechDraw with its name (wip)

pull/1/head
Youen 2 years ago
parent
commit
b4eb9b7207
  1. 3
      InitGui.py
  2. 47
      ahb_cmd_view_annotate.py

3
InitGui.py

@ -68,6 +68,9 @@ class AssemblyHandbookWorkbench(Gui.Workbench):
self.importModule('ahb_cmd_animate') self.importModule('ahb_cmd_animate')
toolbox.append("AHB_animate") toolbox.append("AHB_animate")
self.importModule('ahb_cmd_view_annotate')
toolbox.append("AHB_view_annotate")
if self.dev: if self.dev:
self.importModule('ahb_cmd_parse_step') self.importModule('ahb_cmd_parse_step')
toolbox.append("AHB_parse_step") toolbox.append("AHB_parse_step")

47
ahb_cmd_view_annotate.py

@ -1,17 +1,42 @@
doc = App.activeDocument() import FreeCADGui as Gui
view = doc.getObject('View') import FreeCAD as App
if len(Gui.Selection.getSelection()) != 1: class AHB_View_Annotate:
def GetResources(self):
return {"MenuText": "View/Annotate",
"ToolTip": "Annotates a TechDraw view with object names",
"Pixmap": ""
}
def IsActive(self):
return True
def Activated(self):
doc = App.activeDocument()
page = doc.getObject('Page')
view = page.Views[0]
if len(Gui.Selection.getSelection()) != 1:
raise Exception("Veuillez sélectionner exactement un objet") raise Exception("Veuillez sélectionner exactement un objet")
object = Gui.Selection.getSelection()[0] object = Gui.Selection.getSelection()[0]
# Get object center in view space # Get object center in view space
objectCenterWorld = object.LinkPlacement.Matrix.multiply(object.LinkedObject.Shape.CenterOfGravity) objectCenterWorld = object.LinkPlacement.Matrix.multiply(object.LinkedObject.Shape.CenterOfGravity)
vertId = view.makeCosmeticVertex3d(objectCenterWorld) vertId = view.makeCosmeticVertex3d(objectCenterWorld)
vert = view.getCosmeticVertex(vertId) vert = view.getCosmeticVertex(vertId)
objectCenterView = vert.Point objectCenterView = vert.Point
view.removeCosmeticVertex(vertId) view.removeCosmeticVertex(vertId)
# Create Balloon # Create Balloon
balloon = App.ActiveDocument.addObject("TechDraw::DrawViewBalloon", "Balloon")
balloon.SourceView = view
balloon.OriginX = objectCenterView.x
balloon.OriginY = objectCenterView.y
balloon.Text = "1"
balloon.Y = objectCenterView.x + 20
balloon.X = objectCenterView.y + 20
page.addView(balloon)
from ahb_command import AHB_CommandWrapper
AHB_CommandWrapper.addGuiCommand('AHB_view_annotate', AHB_View_Annotate())

Loading…
Cancel
Save