home Defines a line providing start and end point
name: line
shapes:
A: point(-5,-5)
B: point(5,5)
line: Line(A,B)
A = point(-5,-5)
B = point(5,5)
line = Line(A,B)
line.set_name("line")
home Defines a rectangle providing bottom left corner, x dimension, y dimension
name: rectangle
shapes:
L: 8
h: 5
p: point(-(L/2),-(h/2))
rectangle: Rectangle(p,L,h)
L = 8
h = 5
p = point(-(L/2),-(h/2))
rectangle = Rectangle(p,L,h)
rectangle.set_name("rectangle")
home Defines a circle proving center and radius
name: circle
shapes:
circle: Circle(point(0,0),5)
circle = Circle(point(0,0),5)
circle.set_name("circle")
home Defines a triangle providing three corner
name: triangle
shapes:
L: 3.0
W: 4.0
triangle: Triangle(p1=(W/2,0), p2=(3*W/2,W/2), p3=(4*W/5.,L))
L = 3.0
W = 4.0
triangle = Triangle(p1=(W/2,0), p2=(3*W/2,W/2), p3=(4*W/5.,L))
triangle.set_name("triangle")
home Defines a sizing mark with a label
name: dwt
shapes:
fontsize: 14
t: r'$ 2\pi R^2 $' # sample text
dwt: Distance_wText((-4,0), (8, 5), t, fontsize)
fontsize=14
t = r'$ 2\pi R^2 $' # sample text
dwt = Distance_wText((-4,0), (8, 5), t, fontsize)
dwt.set_name("dwt")
home Defines a given text positionned at the provided point
name: text
shapes:
text: Text(r'$c$', point(0,0))
text = Text(r'$c$', point(0,0))
text.set_name("text")
home Defines a cross positionned at the provided point
name: cross
shapes:
cross: Cross(point(0,0))
cross = Cross(point(1,0))
cross.set_name("cross")
home Defines an axis at the given point with a given label
name: axis
shapes:
axis: Axis((0,0), 5, 'x', rotation_angle=0)
axis = Axis((0,0), 5, 'x', rotation_angle=0)
axis.set_name("axis")
home Defines an Arc providing a center point, a radius, a starting angle and an angle (rotates clock-wise)
name: arc
shapes:
center: point(0,0)
radius: 1
angle: 120
start_angle: 180-angle
arc_angle: angle
arc: Arc(center, radius, start_angle, arc_angle)
center = point(0,0)
radius = 1
angle = 120
start_angle = 180-angle
arc_angle = angle
arc = Arc(center, radius, start_angle, arc_angle)
arc.set_name("arc")
home Defines an arc with text positionned left (moving clock-wise) of arc half-way
name: arc_wtxt
shapes:
center: point(0,0)
radius: 1
angle: 120
start_angle: 180-angle
arc_angle: angle
arc_wtxt: "Arc_wText(r'$<bslash>theta$', center, radius, start_angle, arc_angle)"
center = point(0,0)
radius = 1
angle = 120
start_angle = 180-angle
arc_angle = angle
arc_wtxt = Arc_wText(r'$\theta$', center, radius, start_angle, arc_angle)
arc_wtxt.set_name("arcwtxt")
home defines a line with arrow(s) given starting and ending point and arrow termination(s) ->, <->, <-
name: arrow1
shapes:
start: point(0,0)
end: point(5,5)
arrow1: Arrow1(start, end, style='<->')
start = point(0,0)
end = point(5,5)
arrow1 = Arrow1(start, end, style='<->')
arrow1.set_name("arrow1")
home defines an Indication of a force by an arrow and a text (symbol)
name: force
shapes:
x: 0
y: 0
contact: point(x, y)
vector: point(-3,-5)
force: Force(contact - vector, contact, r'$Force$', text_pos='start')
x = 0
y = 0
contact = point(x, y)
vector = point(-3,-5)
force = Force(contact - vector, contact, r'$Force$', text_pos='start')
force.set_name("force")
home defines an hached box given starting, ending point and thickness, filled with a pattern
name: wall
shapes:
theta: 30
L: 8
B: point(L-4,-2) # wall right end
A: point(-4,tan(radians(theta))*L-2) # wall left end
wall:
formula: Wall(x=[A[0], B[0]], y=[A[1], B[1]], thickness=-0.5,transparent=False)
style:
linecolor: black
theta = 30
L = 8
B = point(L-4,-2) # wall right end
A = point(-4,tan(radians(theta))*L-2) # wall left end
wall= Wall(x=[A[0], B[0]], y=[A[1], B[1]], thickness=-0.5,transparent=False)
wall.set_linecolor('black')
wall.set_name("wall")
home In order to display the various shapes, use the following code in a jupyter notebook
[1]: %matplotlib widget
[2]: from pysketcher import *
[3]: from math import tan, radians, sin, cos # needed for python code
[4]: drawing_tool.set_coordinate_system(xmin=-10, xmax=10,ymin=-10, ymax=10,axis=True)
[5]: drawing_tool.mpl.gcf().canvas
for Yaml, you need to add those extra steps
head = """\
libraries: ["from math import tan, radians, sin, cos","from pysketcher import *"]
myfig={}
sketchParse(head,myfig)
The above code initialize myfig sketch space loading into it libraries references so samples can use tan, radians, si, cos and all the objects defined in pysketcher (the module name of jupytersketcher): this is used by the yaml definition of shapes
myfig={}
sketch="""
# put here the yaml 'object' definition
"""
drawing_tool.erase()
sketchParse(sketch,myfig)
# replace 'object' by the actual one
d = myfig['object'].draw()
drawing_tool.display()
drawing_tool.erase()
# put the code of the object case here
# replace object by the actual name line, rectangle, circle...
object.draw()
drawing_tool.display()