#!/usr/bin/env python # -*- coding: utf-8 -*- # test script for TechDraw module # creates a Box and a Sphere and makes a Fusions from them # creates a page # creates a Projection Group # adds Front,Left,Top projections to the group # a template in the source folder from __future__ import print_function import FreeCAD import Part import Measure import TechDraw import os def DProjGroupTest(): path = os.path.dirname(os.path.abspath(__file__)) print ('TDGroup path: ' + path) templateFileSpec = path + '/TestTemplate.svg' FreeCAD.newDocument("TDGroup") FreeCAD.setActiveDocument("TDGroup") FreeCAD.ActiveDocument=FreeCAD.getDocument("TDGroup") doc = FreeCAD.ActiveDocument print("document created") #make Fusion feature box = FreeCAD.ActiveDocument.addObject("Part::Box","Box") box.recompute() print("box created") sphere = FreeCAD.ActiveDocument.addObject("Part::Sphere","Sphere") sphere.recompute() print("sphere created") fusion = FreeCAD.ActiveDocument.addObject("Part::MultiFuse","Fusion") FreeCAD.ActiveDocument.Fusion.Shapes = [box,sphere] fusion.recompute() print("Fusion created") #make a page print("making a page") page = FreeCAD.ActiveDocument.addObject('TechDraw::DrawPage','Page') FreeCAD.ActiveDocument.addObject('TechDraw::DrawSVGTemplate','Template') FreeCAD.ActiveDocument.Template.Template = templateFileSpec FreeCAD.ActiveDocument.Page.Template = FreeCAD.ActiveDocument.Template # page.ViewObject.show() #for debugging. unit tests run in console mode print("Page created") #make projection group print("making a projection group") doc.openTransaction("Create Proj Group") groupName = 'ProjGroup' group = FreeCAD.ActiveDocument.addObject('TechDraw::DrawProjGroup', groupName) rc = page.addView(group) print("Group created") group.Source = [fusion] print("adding views") frontView = group.addProjection("Front") ##need an Anchor print("added Front") #update group anchorDir = FreeCAD.Vector(0.0, 0.0, 1.0); anchorRot = FreeCAD.Vector(1.0, 0.0, 0.0); group.Anchor.Direction = anchorDir group.Anchor.RotationVector = anchorRot print("Anchor values set") group.Anchor.recompute() doc.commitTransaction() print("Front/Anchor recomputed") print("adding left") leftView = group.addProjection("Left") print("added Left") topView = group.addProjection("Top") print("added Top") rightView = group.addProjection("Right") print("added Right") rearView = group.addProjection("Rear") print("added Rear") BottomView = group.addProjection("Bottom") print("added Bottom") #remove a view from projection group iv = group.removeProjection("Left") print("removed Left") ##test getItemByLabel method print("testing getItemByLabel") label = "Top" item = group.getItemByLabel(label) print("Item Label: " + label + " Item Name: " + item.Name) print("recomputing document") FreeCAD.ActiveDocument.recompute() for v in group.Views: print ("View: " + v.Label + " " + v.TypeId) v.autoPosition() rc = False if ("Up-to-date" in group.State): rc = True FreeCAD.closeDocument("TDGroup") return rc if __name__ == '__main__': DProjGroupTest()