|
|
|
import FreeCADGui as Gui
|
|
|
|
import FreeCAD as App
|
|
|
|
|
|
|
|
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")
|
|
|
|
|
|
|
|
object = Gui.Selection.getSelection()[0]
|
|
|
|
|
|
|
|
# Get object center in view space
|
|
|
|
objectCenterWorld = object.LinkPlacement.Matrix.multiply(object.LinkedObject.Shape.CenterOfGravity)
|
|
|
|
vertId = view.makeCosmeticVertex3d(objectCenterWorld)
|
|
|
|
vert = view.getCosmeticVertex(vertId)
|
|
|
|
objectCenterView = vert.Point
|
|
|
|
view.removeCosmeticVertex(vertId)
|
|
|
|
|
|
|
|
# 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())
|