summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/base/asymptote.py
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/utils/asymptote/base/asymptote.py')
-rwxr-xr-xBuild/source/utils/asymptote/base/asymptote.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/base/asymptote.py b/Build/source/utils/asymptote/base/asymptote.py
new file mode 100755
index 00000000000..1a7aebd0fd2
--- /dev/null
+++ b/Build/source/utils/asymptote/base/asymptote.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python3
+
+# Python module to feed Asymptote with commands
+# (modified from gnuplot.py)
+from subprocess import *
+class asy:
+ def __init__(self):
+ self.session = Popen(['asy','-quiet','-inpipe=0','-outpipe=2'],stdin=PIPE)
+ self.help()
+ def send(self, cmd):
+ self.session.stdin.write(bytes(cmd+'\n','utf-8'))
+ self.session.stdin.flush()
+ def size(self, size):
+ self.send("size(%d);" % size)
+ def draw(self, str):
+ self.send("draw(%s);" % str)
+ def fill(self, str):
+ self.send("fill(%s);" % str)
+ def clip(self, str):
+ self.send("clip(%s);" % str)
+ def label(self, str):
+ self.send("label(%s);" % str)
+ def shipout(self, str):
+ self.send("shipout(\"%s\");" % str)
+ def erase(self):
+ self.send("erase();")
+ def help(self):
+ print("Asymptote session is open. Available methods are:")
+ print(" help(), size(int), draw(str), fill(str), clip(str), label(str), shipout(str), send(str), erase()")
+ def __del__(self):
+ print("closing Asymptote session...")
+ self.send('quit');
+ self.session.stdin.close();
+ self.session.wait()
+
+if __name__=="__main__":
+ g=asy()
+ g.size(200)
+ g.draw('unitcircle')
+ g.send('draw(unitsquare)')
+ g.fill('unitsquare,blue')
+ g.clip('unitcircle')
+ g.label('"$O$",(0,0),SW')
+ input('press ENTER to continue')
+ g.erase()
+ del g