You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.4 KiB
42 lines
1.4 KiB
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())
|
|
|