Draft: restructure the draft test script
Add new function `_create_objects`. Change annotations to use `App::Annotation` instead of `Draft Text`.
This commit is contained in:
@@ -43,6 +43,7 @@ import math
|
||||
import os
|
||||
|
||||
import FreeCAD as App
|
||||
import Part
|
||||
import Draft
|
||||
|
||||
from draftutils.messages import _msg, _wrn
|
||||
@@ -52,35 +53,505 @@ if App.GuiUp:
|
||||
import FreeCADGui as Gui
|
||||
|
||||
|
||||
def _set_text(obj):
|
||||
"""Set properties of text object."""
|
||||
def _set_text(text_list, position):
|
||||
"""Set a text annotation with properties."""
|
||||
obj = App.ActiveDocument.addObject("App::Annotation", "Annotation")
|
||||
obj.LabelText = text_list
|
||||
obj.Position = position
|
||||
|
||||
if App.GuiUp:
|
||||
obj.ViewObject.DisplayMode = "World"
|
||||
obj.ViewObject.FontSize = 75
|
||||
obj.ViewObject.TextColor = (0.0, 0.0, 0.0)
|
||||
|
||||
|
||||
def _create_frame():
|
||||
def _create_frame(doc=None):
|
||||
"""Draw a frame with information on the version of the software.
|
||||
|
||||
It includes the date created, the version, the release type,
|
||||
and the branch.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
doc: App::Document, optional
|
||||
It defaults to `None`, which then defaults to the current
|
||||
active document, or creates a new document.
|
||||
"""
|
||||
if not doc:
|
||||
doc = App.activeDocument()
|
||||
if not doc:
|
||||
doc = App.newDocument()
|
||||
|
||||
version = App.Version()
|
||||
now = datetime.datetime.now().strftime("%Y/%m/%dT%H:%M:%S")
|
||||
|
||||
record = Draft.make_text(["Draft test file",
|
||||
"Created: {}".format(now),
|
||||
"\n",
|
||||
"Version: " + ".".join(version[0:3]),
|
||||
"Release: " + " ".join(version[3:5]),
|
||||
"Branch: " + " ".join(version[5:])],
|
||||
Vector(0, -1000, 0))
|
||||
_text = ["Draft test file",
|
||||
"Created: {}".format(now),
|
||||
"\n",
|
||||
"Version: " + ".".join(version[0:3]),
|
||||
"Release: " + " ".join(version[3:5]),
|
||||
"Branch: " + " ".join(version[5:])]
|
||||
|
||||
record = doc.addObject("App::Annotation", "Description")
|
||||
record.LabelText = _text
|
||||
record.Position = Vector(0, -1000, 0)
|
||||
|
||||
if App.GuiUp:
|
||||
record.ViewObject.DisplayMode = "World"
|
||||
record.ViewObject.FontSize = 400
|
||||
record.ViewObject.TextColor = (0.0, 0.0, 0.0)
|
||||
|
||||
frame = Draft.make_rectangle(21000, 12000)
|
||||
frame.Placement.Base = Vector(-1000, -3500)
|
||||
frame.MakeFace = False
|
||||
p1 = Vector(-1000, -3500, 0)
|
||||
p2 = Vector(20000, -3500, 0)
|
||||
p3 = Vector(20000, 8500, 0)
|
||||
p4 = Vector(-1000, 8500, 0)
|
||||
|
||||
poly = Part.makePolygon([p1, p2, p3, p4, p1])
|
||||
frame = doc.addObject("Part::Feature", "Frame")
|
||||
frame.Shape = poly
|
||||
|
||||
|
||||
def _create_objects(doc=None,
|
||||
font_file="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"):
|
||||
"""Create the objects of the test file.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
doc: App::Document, optional
|
||||
It defaults to `None`, which then defaults to the current
|
||||
active document, or creates a new document.
|
||||
"""
|
||||
if not doc:
|
||||
doc = App.activeDocument()
|
||||
if not doc:
|
||||
doc = App.newDocument()
|
||||
|
||||
# Line, wire, and fillet
|
||||
_msg(16 * "-")
|
||||
_msg("Line")
|
||||
Draft.make_line(Vector(0, 0, 0), Vector(500, 500, 0))
|
||||
t_xpos = -50
|
||||
t_ypos = -200
|
||||
_set_text(["Line"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Wire")
|
||||
Draft.make_wire([Vector(500, 0, 0),
|
||||
Vector(1000, 500, 0),
|
||||
Vector(1000, 1000, 0)])
|
||||
t_xpos += 500
|
||||
_set_text(["Wire"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Fillet")
|
||||
line_h_1 = Draft.make_line(Vector(1500, 0, 0), Vector(1500, 500, 0))
|
||||
line_h_2 = Draft.make_line(Vector(1500, 500, 0), Vector(2000, 500, 0))
|
||||
if App.GuiUp:
|
||||
line_h_1.ViewObject.DrawStyle = "Dotted"
|
||||
line_h_2.ViewObject.DrawStyle = "Dotted"
|
||||
doc.recompute()
|
||||
|
||||
Draft.make_fillet([line_h_1, line_h_2], 400)
|
||||
t_xpos += 900
|
||||
_set_text(["Fillet"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Circle, arc, arc by 3 points
|
||||
_msg(16 * "-")
|
||||
_msg("Circle")
|
||||
circle = Draft.make_circle(350)
|
||||
circle.Placement.Base = Vector(2500, 500, 0)
|
||||
t_xpos += 1050
|
||||
_set_text(["Circle"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Circular arc")
|
||||
arc = Draft.make_circle(350, startangle=0, endangle=100)
|
||||
arc.Placement.Base = Vector(3200, 500, 0)
|
||||
t_xpos += 800
|
||||
_set_text(["Circular arc"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Circular arc 3 points")
|
||||
Draft.make_arc_3points([Vector(4600, 0, 0),
|
||||
Vector(4600, 800, 0),
|
||||
Vector(4000, 1000, 0)])
|
||||
t_xpos += 600
|
||||
_set_text(["Circular arc 3 points"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Ellipse, polygon, rectangle
|
||||
_msg(16 * "-")
|
||||
_msg("Ellipse")
|
||||
ellipse = Draft.make_ellipse(500, 300)
|
||||
ellipse.Placement.Base = Vector(5500, 250, 0)
|
||||
t_xpos += 1600
|
||||
_set_text(["Ellipse"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Polygon")
|
||||
polygon = Draft.make_polygon(5, 250)
|
||||
polygon.Placement.Base = Vector(6500, 500, 0)
|
||||
t_xpos += 950
|
||||
_set_text(["Polygon"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Rectangle")
|
||||
rectangle = Draft.make_rectangle(500, 1000, 0)
|
||||
rectangle.Placement.Base = Vector(7000, 0, 0)
|
||||
t_xpos += 650
|
||||
_set_text(["Rectangle"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Text
|
||||
_msg(16 * "-")
|
||||
_msg("Text")
|
||||
text = Draft.make_text(["Testing", "text"], Vector(7700, 500, 0))
|
||||
if App.GuiUp:
|
||||
text.ViewObject.FontSize = 100
|
||||
t_xpos += 700
|
||||
_set_text(["Text"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Linear dimension
|
||||
_msg(16 * "-")
|
||||
_msg("Linear dimension")
|
||||
dimension = Draft.make_dimension(Vector(8500, 500, 0),
|
||||
Vector(8500, 1000, 0),
|
||||
Vector(9000, 750, 0))
|
||||
if App.GuiUp:
|
||||
dimension.ViewObject.ArrowSize = 15
|
||||
dimension.ViewObject.ExtLines = 1000
|
||||
dimension.ViewObject.ExtOvershoot = 100
|
||||
dimension.ViewObject.DimOvershoot = 50
|
||||
dimension.ViewObject.FontSize = 100
|
||||
dimension.ViewObject.ShowUnit = False
|
||||
t_xpos += 680
|
||||
_set_text(["Dimension"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Radius and diameter dimension
|
||||
_msg(16 * "-")
|
||||
_msg("Radius and diameter dimension")
|
||||
arc_h = Draft.make_circle(500, startangle=0, endangle=90)
|
||||
arc_h.Placement.Base = Vector(9500, 0, 0)
|
||||
doc.recompute()
|
||||
|
||||
dimension_r = Draft.make_dimension(arc_h, 0,
|
||||
"radius",
|
||||
Vector(9750, 200, 0))
|
||||
if App.GuiUp:
|
||||
dimension_r.ViewObject.ArrowSize = 15
|
||||
dimension_r.ViewObject.FontSize = 100
|
||||
dimension_r.ViewObject.ShowUnit = False
|
||||
|
||||
arc_h2 = Draft.make_circle(450, startangle=-120, endangle=80)
|
||||
arc_h2.Placement.Base = Vector(10000, 1000, 0)
|
||||
doc.recompute()
|
||||
|
||||
dimension_d = Draft.make_dimension(arc_h2, 0,
|
||||
"diameter",
|
||||
Vector(10750, 900, 0))
|
||||
if App.GuiUp:
|
||||
dimension_d.ViewObject.ArrowSize = 15
|
||||
dimension_d.ViewObject.FontSize = 100
|
||||
dimension_d.ViewObject.ShowUnit = False
|
||||
t_xpos += 950
|
||||
_set_text(["Radius dimension",
|
||||
"Diameter dimension"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Angular dimension
|
||||
_msg(16 * "-")
|
||||
_msg("Angular dimension")
|
||||
Draft.make_line(Vector(10500, 300, 0), Vector(11500, 1000, 0))
|
||||
Draft.make_line(Vector(10500, 300, 0), Vector(11500, 0, 0))
|
||||
angle1 = math.radians(40)
|
||||
angle2 = math.radians(-20)
|
||||
dimension_a = Draft.make_angular_dimension(Vector(10500, 300, 0),
|
||||
[angle1, angle2],
|
||||
Vector(11500, 300, 0))
|
||||
if App.GuiUp:
|
||||
dimension_a.ViewObject.ArrowSize = 15
|
||||
dimension_a.ViewObject.FontSize = 100
|
||||
t_xpos += 1700
|
||||
_set_text(["Angle dimension"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# BSpline
|
||||
_msg(16 * "-")
|
||||
_msg("BSpline")
|
||||
Draft.make_bspline([Vector(12500, 0, 0),
|
||||
Vector(12500, 500, 0),
|
||||
Vector(13000, 500, 0),
|
||||
Vector(13000, 1000, 0)])
|
||||
t_xpos += 1500
|
||||
_set_text(["BSpline"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Point
|
||||
_msg(16 * "-")
|
||||
_msg("Point")
|
||||
point = Draft.make_point(13500, 500, 0)
|
||||
if App.GuiUp:
|
||||
point.ViewObject.PointSize = 10
|
||||
t_xpos += 900
|
||||
_set_text(["Point"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Shapestring
|
||||
_msg(16 * "-")
|
||||
_msg("Shapestring")
|
||||
try:
|
||||
shape_string = Draft.make_shapestring("Testing",
|
||||
font_file,
|
||||
100)
|
||||
shape_string.Placement.Base = Vector(14000, 500)
|
||||
except Exception:
|
||||
_wrn("Shapestring could not be created")
|
||||
_wrn("Possible cause: the font file may not exist")
|
||||
_wrn(font_file)
|
||||
rect = Draft.make_rectangle(500, 100)
|
||||
rect.Placement.Base = Vector(14000, 500)
|
||||
t_xpos += 600
|
||||
_set_text(["Shapestring"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Facebinder
|
||||
_msg(16 * "-")
|
||||
_msg("Facebinder")
|
||||
box = doc.addObject("Part::Box", "Cube")
|
||||
box.Length = 200
|
||||
box.Width = 500
|
||||
box.Height = 100
|
||||
box.Placement.Base = Vector(15000, 0, 0)
|
||||
if App.GuiUp:
|
||||
box.ViewObject.Visibility = False
|
||||
|
||||
facebinder = Draft.make_facebinder([(box, ("Face1", "Face3", "Face6"))])
|
||||
facebinder.Extrusion = 10
|
||||
t_xpos += 780
|
||||
_set_text(["Facebinder"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Cubic bezier curve, n-degree bezier curve
|
||||
_msg(16 * "-")
|
||||
_msg("Cubic bezier")
|
||||
Draft.make_bezcurve([Vector(15500, 0, 0),
|
||||
Vector(15578, 485, 0),
|
||||
Vector(15879, 154, 0),
|
||||
Vector(15975, 400, 0),
|
||||
Vector(16070, 668, 0),
|
||||
Vector(16423, 925, 0),
|
||||
Vector(16500, 500, 0)], degree=3)
|
||||
t_xpos += 680
|
||||
_set_text(["Cubic bezier"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("N-degree bezier")
|
||||
Draft.make_bezcurve([Vector(16500, 0, 0),
|
||||
Vector(17000, 500, 0),
|
||||
Vector(17500, 500, 0),
|
||||
Vector(17500, 1000, 0),
|
||||
Vector(17000, 1000, 0),
|
||||
Vector(17063, 1256, 0),
|
||||
Vector(17732, 1227, 0),
|
||||
Vector(17790, 720, 0),
|
||||
Vector(17702, 242, 0)])
|
||||
t_xpos += 1200
|
||||
_set_text(["n-Bezier"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Label
|
||||
_msg(16 * "-")
|
||||
_msg("Label")
|
||||
place = App.Placement(Vector(18500, 500, 0), App.Rotation())
|
||||
label = Draft.make_label(targetpoint=Vector(18000, 0, 0),
|
||||
distance=-250,
|
||||
placement=place)
|
||||
label.Text = "Testing"
|
||||
if App.GuiUp:
|
||||
label.ViewObject.ArrowSize = 15
|
||||
label.ViewObject.TextSize = 100
|
||||
doc.recompute()
|
||||
t_xpos += 1200
|
||||
_set_text(["Label"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Orthogonal array and orthogonal link array
|
||||
_msg(16 * "-")
|
||||
_msg("Orthogonal array")
|
||||
rect_h = Draft.make_rectangle(500, 500)
|
||||
rect_h.Placement.Base = Vector(1500, 2500, 0)
|
||||
if App.GuiUp:
|
||||
rect_h.ViewObject.Visibility = False
|
||||
|
||||
Draft.makeArray(rect_h,
|
||||
Vector(600, 0, 0),
|
||||
Vector(0, 600, 0),
|
||||
Vector(0, 0, 0),
|
||||
3, 2, 1)
|
||||
t_xpos = 1700
|
||||
t_ypos = 2200
|
||||
_set_text(["Array"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
rect_h_2 = Draft.make_rectangle(500, 100)
|
||||
rect_h_2.Placement.Base = Vector(1500, 5000, 0)
|
||||
if App.GuiUp:
|
||||
rect_h_2.ViewObject.Visibility = False
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Orthogonal link array")
|
||||
Draft.makeArray(rect_h_2,
|
||||
Vector(800, 0, 0),
|
||||
Vector(0, 500, 0),
|
||||
Vector(0, 0, 0),
|
||||
2, 4, 1,
|
||||
use_link=True)
|
||||
t_ypos += 2600
|
||||
_set_text(["Link array"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Polar array and polar link array
|
||||
_msg(16 * "-")
|
||||
_msg("Polar array")
|
||||
wire_h = Draft.make_wire([Vector(5500, 3000, 0),
|
||||
Vector(6000, 3500, 0),
|
||||
Vector(6000, 3200, 0),
|
||||
Vector(5800, 3200, 0)])
|
||||
if App.GuiUp:
|
||||
wire_h.ViewObject.Visibility = False
|
||||
|
||||
Draft.makeArray(wire_h,
|
||||
Vector(5000, 3000, 0),
|
||||
200,
|
||||
8)
|
||||
t_xpos = 4600
|
||||
t_ypos = 2200
|
||||
_set_text(["Polar array"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Polar link array")
|
||||
wire_h_2 = Draft.make_wire([Vector(5500, 6000, 0),
|
||||
Vector(6000, 6000, 0),
|
||||
Vector(5800, 5700, 0),
|
||||
Vector(5800, 5750, 0)])
|
||||
if App.GuiUp:
|
||||
wire_h_2.ViewObject.Visibility = False
|
||||
|
||||
Draft.makeArray(wire_h_2,
|
||||
Vector(5000, 6000, 0),
|
||||
200,
|
||||
8,
|
||||
use_link=True)
|
||||
t_ypos += 3200
|
||||
_set_text(["Polar link array"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Circular array and circular link array
|
||||
_msg(16 * "-")
|
||||
_msg("Circular array")
|
||||
poly_h = Draft.make_polygon(5, 200)
|
||||
poly_h.Placement.Base = Vector(8000, 3000, 0)
|
||||
if App.GuiUp:
|
||||
poly_h.ViewObject.Visibility = False
|
||||
|
||||
Draft.makeArray(poly_h,
|
||||
500, 600,
|
||||
Vector(0, 0, 1),
|
||||
Vector(0, 0, 0),
|
||||
3,
|
||||
1)
|
||||
t_xpos = 7700
|
||||
t_ypos = 1700
|
||||
_set_text(["Circular array"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Circular link array")
|
||||
poly_h_2 = Draft.make_polygon(6, 150)
|
||||
poly_h_2.Placement.Base = Vector(8000, 6250, 0)
|
||||
if App.GuiUp:
|
||||
poly_h_2.ViewObject.Visibility = False
|
||||
|
||||
Draft.makeArray(poly_h_2,
|
||||
550, 450,
|
||||
Vector(0, 0, 1),
|
||||
Vector(0, 0, 0),
|
||||
3,
|
||||
1,
|
||||
use_link=True)
|
||||
t_ypos += 3100
|
||||
_set_text(["Circular link array"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Path array and path link array
|
||||
_msg(16 * "-")
|
||||
_msg("Path array")
|
||||
poly_h = Draft.make_polygon(3, 250)
|
||||
poly_h.Placement.Base = Vector(10500, 3000, 0)
|
||||
if App.GuiUp:
|
||||
poly_h.ViewObject.Visibility = False
|
||||
|
||||
bspline_path = Draft.make_bspline([Vector(10500, 2500, 0),
|
||||
Vector(11000, 3000, 0),
|
||||
Vector(11500, 3200, 0),
|
||||
Vector(12000, 4000, 0)])
|
||||
|
||||
Draft.makePathArray(poly_h, bspline_path, 5)
|
||||
t_xpos = 10400
|
||||
t_ypos = 2200
|
||||
_set_text(["Path array"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Path link array")
|
||||
poly_h_2 = Draft.make_polygon(4, 200)
|
||||
poly_h_2.Placement.Base = Vector(10500, 5000, 0)
|
||||
if App.GuiUp:
|
||||
poly_h_2.ViewObject.Visibility = False
|
||||
|
||||
bspline_path_2 = Draft.make_bspline([Vector(10500, 4500, 0),
|
||||
Vector(11000, 6800, 0),
|
||||
Vector(11500, 6000, 0),
|
||||
Vector(12000, 5200, 0)])
|
||||
|
||||
Draft.makePathArray(poly_h_2, bspline_path_2, 6,
|
||||
use_link=True)
|
||||
t_ypos += 2000
|
||||
_set_text(["Path link array"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Point array
|
||||
_msg(16 * "-")
|
||||
_msg("Point array")
|
||||
poly_h = Draft.make_polygon(3, 250)
|
||||
|
||||
point_1 = Draft.make_point(13000, 3000, 0)
|
||||
point_2 = Draft.make_point(13000, 3500, 0)
|
||||
point_3 = Draft.make_point(14000, 2500, 0)
|
||||
point_4 = Draft.make_point(14000, 3000, 0)
|
||||
|
||||
add_list, delete_list = Draft.upgrade([point_1, point_2,
|
||||
point_3, point_4])
|
||||
compound = add_list[0]
|
||||
if App.GuiUp:
|
||||
compound.ViewObject.PointSize = 5
|
||||
|
||||
Draft.makePointArray(poly_h, compound)
|
||||
t_xpos = 13000
|
||||
t_ypos = 2200
|
||||
_set_text(["Point array"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
# Clone and mirror
|
||||
_msg(16 * "-")
|
||||
_msg("Clone")
|
||||
wire_h = Draft.make_wire([Vector(15000, 2500, 0),
|
||||
Vector(15200, 3000, 0),
|
||||
Vector(15500, 2500, 0),
|
||||
Vector(15200, 2300, 0)])
|
||||
|
||||
Draft.clone(wire_h, Vector(0, 1000, 0))
|
||||
t_xpos = 15000
|
||||
t_ypos = 2100
|
||||
_set_text(["Clone"], Vector(t_xpos, t_ypos, 0))
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Mirror")
|
||||
wire_h = Draft.make_wire([Vector(17000, 2500, 0),
|
||||
Vector(16500, 4000, 0),
|
||||
Vector(16000, 2700, 0),
|
||||
Vector(16500, 2500, 0),
|
||||
Vector(16700, 2700, 0)])
|
||||
|
||||
Draft.mirror(wire_h,
|
||||
Vector(17100, 2000, 0),
|
||||
Vector(17100, 4000, 0))
|
||||
t_xpos = 17000
|
||||
t_ypos = 2200
|
||||
_set_text(["Mirror"], Vector(t_xpos, t_ypos, 0))
|
||||
doc.recompute()
|
||||
|
||||
|
||||
def create_test_file(file_name="draft_test_objects",
|
||||
@@ -135,465 +606,8 @@ def create_test_file(file_name="draft_test_objects",
|
||||
_msg("Filename: {}".format(file_name))
|
||||
_msg("If the units tests fail, this script may fail as well")
|
||||
|
||||
_create_frame()
|
||||
|
||||
# Line, wire, and fillet
|
||||
_msg(16 * "-")
|
||||
_msg("Line")
|
||||
Draft.make_line(Vector(0, 0, 0), Vector(500, 500, 0))
|
||||
t_xpos = -50
|
||||
t_ypos = -200
|
||||
_t = Draft.make_text(["Line"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Wire")
|
||||
Draft.make_wire([Vector(500, 0, 0),
|
||||
Vector(1000, 500, 0),
|
||||
Vector(1000, 1000, 0)])
|
||||
t_xpos += 500
|
||||
_t = Draft.make_text(["Wire"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Fillet")
|
||||
line_h_1 = Draft.make_line(Vector(1500, 0, 0), Vector(1500, 500, 0))
|
||||
line_h_2 = Draft.make_line(Vector(1500, 500, 0), Vector(2000, 500, 0))
|
||||
if App.GuiUp:
|
||||
line_h_1.ViewObject.DrawStyle = "Dotted"
|
||||
line_h_2.ViewObject.DrawStyle = "Dotted"
|
||||
doc.recompute()
|
||||
|
||||
Draft.make_fillet([line_h_1, line_h_2], 400)
|
||||
t_xpos += 900
|
||||
_t = Draft.make_text(["Fillet"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Circle, arc, arc by 3 points
|
||||
_msg(16 * "-")
|
||||
_msg("Circle")
|
||||
circle = Draft.make_circle(350)
|
||||
circle.Placement.Base = Vector(2500, 500, 0)
|
||||
t_xpos += 1050
|
||||
_t = Draft.make_text(["Circle"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Circular arc")
|
||||
arc = Draft.make_circle(350, startangle=0, endangle=100)
|
||||
arc.Placement.Base = Vector(3200, 500, 0)
|
||||
t_xpos += 800
|
||||
_t = Draft.make_text(["Circular arc"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Circular arc 3 points")
|
||||
Draft.make_arc_3points([Vector(4600, 0, 0),
|
||||
Vector(4600, 800, 0),
|
||||
Vector(4000, 1000, 0)])
|
||||
t_xpos += 600
|
||||
_t = Draft.make_text(["Circular arc 3 points"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Ellipse, polygon, rectangle
|
||||
_msg(16 * "-")
|
||||
_msg("Ellipse")
|
||||
ellipse = Draft.make_ellipse(500, 300)
|
||||
ellipse.Placement.Base = Vector(5500, 250, 0)
|
||||
t_xpos += 1600
|
||||
_t = Draft.make_text(["Ellipse"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Polygon")
|
||||
polygon = Draft.make_polygon(5, 250)
|
||||
polygon.Placement.Base = Vector(6500, 500, 0)
|
||||
t_xpos += 950
|
||||
_t = Draft.make_text(["Polygon"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Rectangle")
|
||||
rectangle = Draft.make_rectangle(500, 1000, 0)
|
||||
rectangle.Placement.Base = Vector(7000, 0, 0)
|
||||
t_xpos += 650
|
||||
_t = Draft.make_text(["Rectangle"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Text
|
||||
_msg(16 * "-")
|
||||
_msg("Text")
|
||||
text = Draft.make_text(["Testing"], Vector(7700, 500, 0))
|
||||
if App.GuiUp:
|
||||
text.ViewObject.FontSize = 100
|
||||
t_xpos += 700
|
||||
_t = Draft.make_text(["Text"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Linear dimension
|
||||
_msg(16 * "-")
|
||||
_msg("Linear dimension")
|
||||
dimension = Draft.make_dimension(Vector(8500, 500, 0),
|
||||
Vector(8500, 1000, 0),
|
||||
Vector(9000, 750, 0))
|
||||
if App.GuiUp:
|
||||
dimension.ViewObject.ArrowSize = 15
|
||||
dimension.ViewObject.ExtLines = 1000
|
||||
dimension.ViewObject.ExtOvershoot = 100
|
||||
dimension.ViewObject.FontSize = 100
|
||||
dimension.ViewObject.ShowUnit = False
|
||||
t_xpos += 680
|
||||
_t = Draft.make_text(["Dimension"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Radius and diameter dimension
|
||||
_msg(16 * "-")
|
||||
_msg("Radius and diameter dimension")
|
||||
arc_h = Draft.make_circle(500, startangle=0, endangle=90)
|
||||
arc_h.Placement.Base = Vector(9500, 0, 0)
|
||||
doc.recompute()
|
||||
|
||||
dimension_r = Draft.make_dimension(arc_h, 0,
|
||||
"radius",
|
||||
Vector(9750, 200, 0))
|
||||
if App.GuiUp:
|
||||
dimension_r.ViewObject.ArrowSize = 15
|
||||
dimension_r.ViewObject.FontSize = 100
|
||||
dimension_r.ViewObject.ShowUnit = False
|
||||
|
||||
arc_h2 = Draft.make_circle(450, startangle=-120, endangle=80)
|
||||
arc_h2.Placement.Base = Vector(10000, 1000, 0)
|
||||
doc.recompute()
|
||||
|
||||
dimension_d = Draft.make_dimension(arc_h2, 0,
|
||||
"diameter",
|
||||
Vector(10750, 900, 0))
|
||||
if App.GuiUp:
|
||||
dimension_d.ViewObject.ArrowSize = 15
|
||||
dimension_d.ViewObject.FontSize = 100
|
||||
dimension_d.ViewObject.ShowUnit = False
|
||||
t_xpos += 950
|
||||
_t = Draft.make_text(["Radius dimension",
|
||||
"Diameter dimension"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Angular dimension
|
||||
_msg(16 * "-")
|
||||
_msg("Angular dimension")
|
||||
Draft.make_line(Vector(10500, 300, 0), Vector(11500, 1000, 0))
|
||||
Draft.make_line(Vector(10500, 300, 0), Vector(11500, 0, 0))
|
||||
angle1 = math.radians(40)
|
||||
angle2 = math.radians(-20)
|
||||
dimension_a = Draft.make_angular_dimension(Vector(10500, 300, 0),
|
||||
[angle1, angle2],
|
||||
Vector(11500, 300, 0))
|
||||
if App.GuiUp:
|
||||
dimension_a.ViewObject.ArrowSize = 15
|
||||
dimension_a.ViewObject.FontSize = 100
|
||||
t_xpos += 1700
|
||||
_t = Draft.make_text(["Angle dimension"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# BSpline
|
||||
_msg(16 * "-")
|
||||
_msg("BSpline")
|
||||
Draft.make_bspline([Vector(12500, 0, 0),
|
||||
Vector(12500, 500, 0),
|
||||
Vector(13000, 500, 0),
|
||||
Vector(13000, 1000, 0)])
|
||||
t_xpos += 1500
|
||||
_t = Draft.make_text(["BSpline"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Point
|
||||
_msg(16 * "-")
|
||||
_msg("Point")
|
||||
point = Draft.make_point(13500, 500, 0)
|
||||
if App.GuiUp:
|
||||
point.ViewObject.PointSize = 10
|
||||
t_xpos += 900
|
||||
_t = Draft.make_text(["Point"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Shapestring
|
||||
_msg(16 * "-")
|
||||
_msg("Shapestring")
|
||||
try:
|
||||
shape_string = Draft.make_shapestring("Testing",
|
||||
font_file,
|
||||
100)
|
||||
shape_string.Placement.Base = Vector(14000, 500)
|
||||
except Exception:
|
||||
_wrn("Shapestring could not be created")
|
||||
_wrn("Possible cause: the font file may not exist")
|
||||
_wrn(font_file)
|
||||
rect = Draft.make_rectangle(500, 100)
|
||||
rect.Placement.Base = Vector(14000, 500)
|
||||
t_xpos += 600
|
||||
_t = Draft.make_text(["Shapestring"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Facebinder
|
||||
_msg(16 * "-")
|
||||
_msg("Facebinder")
|
||||
box = doc.addObject("Part::Box", "Cube")
|
||||
box.Length = 200
|
||||
box.Width = 500
|
||||
box.Height = 100
|
||||
box.Placement.Base = Vector(15000, 0, 0)
|
||||
if App.GuiUp:
|
||||
box.ViewObject.Visibility = False
|
||||
|
||||
facebinder = Draft.make_facebinder([(box, ("Face1", "Face3", "Face6"))])
|
||||
facebinder.Extrusion = 10
|
||||
t_xpos += 780
|
||||
_t = Draft.make_text(["Facebinder"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Cubic bezier curve, n-degree bezier curve
|
||||
_msg(16 * "-")
|
||||
_msg("Cubic bezier")
|
||||
Draft.make_bezcurve([Vector(15500, 0, 0),
|
||||
Vector(15578, 485, 0),
|
||||
Vector(15879, 154, 0),
|
||||
Vector(15975, 400, 0),
|
||||
Vector(16070, 668, 0),
|
||||
Vector(16423, 925, 0),
|
||||
Vector(16500, 500, 0)], degree=3)
|
||||
t_xpos += 680
|
||||
_t = Draft.make_text(["Cubic bezier"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("N-degree bezier")
|
||||
Draft.make_bezcurve([Vector(16500, 0, 0),
|
||||
Vector(17000, 500, 0),
|
||||
Vector(17500, 500, 0),
|
||||
Vector(17500, 1000, 0),
|
||||
Vector(17000, 1000, 0),
|
||||
Vector(17063, 1256, 0),
|
||||
Vector(17732, 1227, 0),
|
||||
Vector(17790, 720, 0),
|
||||
Vector(17702, 242, 0)])
|
||||
t_xpos += 1200
|
||||
_t = Draft.make_text(["n-Bezier"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Label
|
||||
_msg(16 * "-")
|
||||
_msg("Label")
|
||||
place = App.Placement(Vector(18500, 500, 0), App.Rotation())
|
||||
label = Draft.make_label(targetpoint=Vector(18000, 0, 0),
|
||||
distance=-250,
|
||||
placement=place)
|
||||
label.Text = "Testing"
|
||||
if App.GuiUp:
|
||||
label.ViewObject.ArrowSize = 15
|
||||
label.ViewObject.TextSize = 100
|
||||
doc.recompute()
|
||||
t_xpos += 1200
|
||||
_t = Draft.make_text(["Label"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Orthogonal array and orthogonal link array
|
||||
_msg(16 * "-")
|
||||
_msg("Orthogonal array")
|
||||
rect_h = Draft.make_rectangle(500, 500)
|
||||
rect_h.Placement.Base = Vector(1500, 2500, 0)
|
||||
if App.GuiUp:
|
||||
rect_h.ViewObject.Visibility = False
|
||||
|
||||
Draft.makeArray(rect_h,
|
||||
Vector(600, 0, 0),
|
||||
Vector(0, 600, 0),
|
||||
Vector(0, 0, 0),
|
||||
3, 2, 1)
|
||||
t_xpos = 1700
|
||||
t_ypos = 2200
|
||||
_t = Draft.make_text(["Array"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
rect_h_2 = Draft.make_rectangle(500, 100)
|
||||
rect_h_2.Placement.Base = Vector(1500, 5000, 0)
|
||||
if App.GuiUp:
|
||||
rect_h_2.ViewObject.Visibility = False
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Orthogonal link array")
|
||||
Draft.makeArray(rect_h_2,
|
||||
Vector(800, 0, 0),
|
||||
Vector(0, 500, 0),
|
||||
Vector(0, 0, 0),
|
||||
2, 4, 1,
|
||||
use_link=True)
|
||||
t_ypos += 2600
|
||||
_t = Draft.make_text(["Link array"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Polar array and polar link array
|
||||
_msg(16 * "-")
|
||||
_msg("Polar array")
|
||||
wire_h = Draft.make_wire([Vector(5500, 3000, 0),
|
||||
Vector(6000, 3500, 0),
|
||||
Vector(6000, 3200, 0),
|
||||
Vector(5800, 3200, 0)])
|
||||
if App.GuiUp:
|
||||
wire_h.ViewObject.Visibility = False
|
||||
|
||||
Draft.makeArray(wire_h,
|
||||
Vector(5000, 3000, 0),
|
||||
200,
|
||||
8)
|
||||
t_xpos = 4600
|
||||
t_ypos = 2200
|
||||
_t = Draft.make_text(["Polar array"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Polar link array")
|
||||
wire_h_2 = Draft.make_wire([Vector(5500, 6000, 0),
|
||||
Vector(6000, 6000, 0),
|
||||
Vector(5800, 5700, 0),
|
||||
Vector(5800, 5750, 0)])
|
||||
if App.GuiUp:
|
||||
wire_h_2.ViewObject.Visibility = False
|
||||
|
||||
Draft.makeArray(wire_h_2,
|
||||
Vector(5000, 6000, 0),
|
||||
200,
|
||||
8,
|
||||
use_link=True)
|
||||
t_ypos += 3200
|
||||
_t = Draft.make_text(["Polar link array"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Circular array and circular link array
|
||||
_msg(16 * "-")
|
||||
_msg("Circular array")
|
||||
poly_h = Draft.make_polygon(5, 200)
|
||||
poly_h.Placement.Base = Vector(8000, 3000, 0)
|
||||
if App.GuiUp:
|
||||
poly_h.ViewObject.Visibility = False
|
||||
|
||||
Draft.makeArray(poly_h,
|
||||
500, 600,
|
||||
Vector(0, 0, 1),
|
||||
Vector(0, 0, 0),
|
||||
3,
|
||||
1)
|
||||
t_xpos = 7700
|
||||
t_ypos = 1700
|
||||
_t = Draft.make_text(["Circular array"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Circular link array")
|
||||
poly_h_2 = Draft.make_polygon(6, 150)
|
||||
poly_h_2.Placement.Base = Vector(8000, 6250, 0)
|
||||
if App.GuiUp:
|
||||
poly_h_2.ViewObject.Visibility = False
|
||||
|
||||
Draft.makeArray(poly_h_2,
|
||||
550, 450,
|
||||
Vector(0, 0, 1),
|
||||
Vector(0, 0, 0),
|
||||
3,
|
||||
1,
|
||||
use_link=True)
|
||||
t_ypos += 3100
|
||||
_t = Draft.make_text(["Circular link array"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Path array and path link array
|
||||
_msg(16 * "-")
|
||||
_msg("Path array")
|
||||
poly_h = Draft.make_polygon(3, 250)
|
||||
poly_h.Placement.Base = Vector(10500, 3000, 0)
|
||||
if App.GuiUp:
|
||||
poly_h.ViewObject.Visibility = False
|
||||
|
||||
bspline_path = Draft.make_bspline([Vector(10500, 2500, 0),
|
||||
Vector(11000, 3000, 0),
|
||||
Vector(11500, 3200, 0),
|
||||
Vector(12000, 4000, 0)])
|
||||
|
||||
Draft.makePathArray(poly_h, bspline_path, 5)
|
||||
t_xpos = 10400
|
||||
t_ypos = 2200
|
||||
_t = Draft.make_text(["Path array"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Path link array")
|
||||
poly_h_2 = Draft.make_polygon(4, 200)
|
||||
poly_h_2.Placement.Base = Vector(10500, 5000, 0)
|
||||
if App.GuiUp:
|
||||
poly_h_2.ViewObject.Visibility = False
|
||||
|
||||
bspline_path_2 = Draft.make_bspline([Vector(10500, 4500, 0),
|
||||
Vector(11000, 6800, 0),
|
||||
Vector(11500, 6000, 0),
|
||||
Vector(12000, 5200, 0)])
|
||||
|
||||
Draft.makePathArray(poly_h_2, bspline_path_2, 6,
|
||||
use_link=True)
|
||||
t_ypos += 2000
|
||||
_t = Draft.make_text(["Path link array"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Point array
|
||||
_msg(16 * "-")
|
||||
_msg("Point array")
|
||||
poly_h = Draft.make_polygon(3, 250)
|
||||
|
||||
point_1 = Draft.make_point(13000, 3000, 0)
|
||||
point_2 = Draft.make_point(13000, 3500, 0)
|
||||
point_3 = Draft.make_point(14000, 2500, 0)
|
||||
point_4 = Draft.make_point(14000, 3000, 0)
|
||||
|
||||
add_list, delete_list = Draft.upgrade([point_1, point_2,
|
||||
point_3, point_4])
|
||||
compound = add_list[0]
|
||||
if App.GuiUp:
|
||||
compound.ViewObject.PointSize = 5
|
||||
|
||||
Draft.makePointArray(poly_h, compound)
|
||||
t_xpos = 13000
|
||||
t_ypos = 2200
|
||||
_t = Draft.make_text(["Point array"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
# Clone and mirror
|
||||
_msg(16 * "-")
|
||||
_msg("Clone")
|
||||
wire_h = Draft.make_wire([Vector(15000, 2500, 0),
|
||||
Vector(15200, 3000, 0),
|
||||
Vector(15500, 2500, 0),
|
||||
Vector(15200, 2300, 0)])
|
||||
|
||||
Draft.clone(wire_h, Vector(0, 1000, 0))
|
||||
t_xpos = 15000
|
||||
t_ypos = 2100
|
||||
_t = Draft.make_text(["Clone"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
_msg(16 * "-")
|
||||
_msg("Mirror")
|
||||
wire_h = Draft.make_wire([Vector(17000, 2500, 0),
|
||||
Vector(16500, 4000, 0),
|
||||
Vector(16000, 2700, 0),
|
||||
Vector(16500, 2500, 0),
|
||||
Vector(16700, 2700, 0)])
|
||||
|
||||
Draft.mirror(wire_h,
|
||||
Vector(17100, 2000, 0),
|
||||
Vector(17100, 4000, 0))
|
||||
t_xpos = 17000
|
||||
t_ypos = 2200
|
||||
_t = Draft.make_text(["Mirror"], Vector(t_xpos, t_ypos, 0))
|
||||
_set_text(_t)
|
||||
|
||||
doc.recompute()
|
||||
_create_frame(doc=doc)
|
||||
_create_objects(doc=doc, font_file=font_file)
|
||||
|
||||
if App.GuiUp:
|
||||
Gui.runCommand("Std_ViewFitAll")
|
||||
@@ -601,6 +615,7 @@ def create_test_file(file_name="draft_test_objects",
|
||||
# Export
|
||||
if not file_path:
|
||||
file_path = App.getUserAppDataDir()
|
||||
|
||||
out_name = os.path.join(file_path, file_name + ".FCStd")
|
||||
doc.FileName = out_name
|
||||
if save:
|
||||
|
||||
Reference in New Issue
Block a user