Files
create/src/Mod/TechDraw/TDTest/DProjGroupTest.py
wandererfan d58b86c52f Fix segfault on missing Anchor view
- test script did not create Anchor(Front) view.  DPG/DVP did not
  handle missing Anchor properly
2019-03-07 10:58:28 +01:00

92 lines
2.8 KiB
Python

#!/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")
#make Fusion feature
box = FreeCAD.ActiveDocument.addObject("Part::Box","Box")
sphere = FreeCAD.ActiveDocument.addObject("Part::Sphere","Sphere")
fusion = FreeCAD.ActiveDocument.addObject("Part::MultiFuse","Fusion")
FreeCAD.ActiveDocument.Fusion.Shapes = [box,sphere]
#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() #unit tests run in console mode
#make projection group
print("making a projection group")
group = FreeCAD.ActiveDocument.addObject('TechDraw::DrawProjGroup','ProjGroup')
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
group.Anchor.Direction = FreeCAD.Vector(0,0,1)
group.Anchor.RotationVector = FreeCAD.Vector(1,0,0)
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()