{ "info": { "author": "Takuro Wada", "author_email": "taxpon@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Code Generators", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "[![Build Status](https://travis-ci.org/taxpon/openpyscad.svg?branch=develop)](https://travis-ci.org/taxpon/openpyscad) [![Coverage Status](https://coveralls.io/repos/github/taxpon/openpyscad/badge.svg?branch=develop)](https://coveralls.io/github/taxpon/openpyscad?branch=develop) [![Python2](https://img.shields.io/badge/python-2-blue.svg)](#) [![Python3](https://img.shields.io/badge/python-3-blue.svg)](#)\n# OpenPySCAD\nPython library to generate [OpenSCAD](http://www.openscad.org/) source code. This library provides intuitive interface when you handle 3D data.\nOpenPySCAD supports both python2(2.7) and python3(3.4+).\n\n## Install\n```bash\npip install openpyscad\n```\n\n## How to use\n- Write python code as follows:\n```python\nimport openpyscad as ops\nc1 = ops.Cube([10, 20, 10])\nc2 = ops.Cube([20, 10, 10])\n(c1 + c2).write(\"sample.scad\")\n```\n\n- Generated code will be written in the \"sample.scad\". OpenSCAD can detect the change of your code and reload automatically. That's so cool :D\n```openscad\nunion(){\n cube([10, 20, 10]);\n cube([20, 10, 10]);\n};\n```\n\n## Generated code examples\n\n### 3D Shapes\n\nPython:\n```python\nSphere(r=10, _fn=100)\nCube([10, 10, 10])\nCylinder(h=10, r=10)\np = Polyhedron(\n points=[\n [10, 10, 0], [10, -10, 0], [-10, -10, 0], [-10, 10, 0], [0, 0, 10]\n ],\n faces=[\n [0, 1, 4], [1, 2, 4], [2, 3, 4], [3, 0, 4], [1, 0, 3], [2, 1, 3]\n ]\n)\n```\n\nGenerated OpenSCAD code:\n```openscad\nsphere(r=10, $fn=100);\ncube(size=[10, 10, 10]);\ncylinder(h=10, r=10);\npolyhedron(points=[[10, 10, 0], [10, -10, 0], [-10, -10, 0], [-10, 10, 0], [0, 0, 10]], faces=[[0, 1, 4], [1, 2, 4], [2, 3, 4], [3, 0, 4], [1, 0, 3], [2, 1, 3]]);\n```\n\n### Boolean Operations\n\nPython:\n```python\n# Union\nCube([20, 10, 10]) + Cube([10, 20, 10])\n\n# You can also write like this\nu = Union()\nu.append(Cube[20, 10, 10])\nu.append(Cube[10, 20, 10])\n\n# Difference\nCube([20, 10, 10]) - Cube([10, 20, 10])\n\n# You can also write like this\ni = Difference()\ni.append(Cube[20, 10, 10])\ni.append(Cube[10, 20, 10])\n\n# Intersection\nCube([20, 10, 10]) & Cube([10, 20, 10])\n\n# You can also write like this\ni = Intersection()\ni.append(Cube[20, 10, 10])\ni.append(Cube[10, 20, 10])\n```\n\nGenerated OpenSCAD code:\n```openscad\n// Union\nunion(){\n cube([20, 10, 10])\n cube([10, 20, 10])\n};\n\n// Difference\ndifference(){\n cube([20, 10, 10]);\n cube([10, 20, 10]);\n};\n\n// Intersection\nintersection(){\n cube([20, 10, 10]);\n cube([10, 20, 10]);\n};\n```\n\n### Transformations\n\nPython:\n```python\n# Translate\nCube([20, 10, 10]).translate([10, 10, 10])\n\n# Rotate\nCube([20, 10, 10]).rotate([0, 0, 45])\n\n# Scale\nCube([20, 10, 10]).scale([2, 1, 1])\n\n# Resize\nCube([20, 10, 10]).resize([2, 1, 1])\n\n# Mirror\nCube([20, 10, 10]).mirror([1, 1, 1])\n\n# Color\nCube([20, 10, 10]).color(\"Red\")\n\n# Offset\nCircle(10).offset(10)\n```\n\nGenerated OpenSCAD code:\n```openscad\n// Translate\ntranslate(v=[10, 10, 10]){\n cube([20, 10, 10]);\n};\n\n// Rotate\nrotate(v=[0, 0, 45]){\n cube([20, 10, 10]);\n};\n\n// Scale\nscale(v=[2, 1, 1]){\n cube([20, 10, 10]);\n};\n\n// Resize\nresize(newsize=[2, 1, 1]){\n cube(size=[20, 10, 10]);\n};\n\n// Mirror\nmirror([1, 1, 1]){\n cube(size=[20, 10, 10]);\n};\n\n// Color\ncolor(\"Red\"){\n cube(size=[20, 10, 10]);\n};\n\n// Offset\noffset(r=10){\n circle(r=10);\n};\n```\n\n### Modifiers\nOpenPySCAD provides [modifiers](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Modifier_Characters) interfaces (\"*\", \"!\", \"#\" and \"%\").\n\nPython:\n```python\nc1 = Cube(10)\nc1.disable() # add \"*\" character\nc1.show_only() # add \"!\" character\nc1.is_debug() # add \"#\" character\nc1.is_transparent() # add \"&\" character\n```\n\n\n### LICENSE\nMIT\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/taxpon/openpyscad", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "OpenPySCAD", "package_url": "https://pypi.org/project/OpenPySCAD/", "platform": "", "project_url": "https://pypi.org/project/OpenPySCAD/", "project_urls": { "Homepage": "https://github.com/taxpon/openpyscad" }, "release_url": "https://pypi.org/project/OpenPySCAD/0.3.2/", "requires_dist": [ "six" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "summary": "Python library to generate OpenSCAD source code", "version": "0.3.2" }, "last_serial": 5203440, "releases": { "0.0.1": [ { "comment_text": "built for Darwin-15.3.0", "digests": { "md5": "bcd2db2538b2b41a7d4c5f23dc101952", "sha256": "4ceed464fa496891f9e62133bab517ee59bfc3360eaf9c69aad34a8d41666329" }, "downloads": -1, "filename": "OpenPySCAD-0.0.1.macosx-10.11-x86_64.tar.gz", "has_sig": false, "md5_digest": "bcd2db2538b2b41a7d4c5f23dc101952", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 6664, "upload_time": "2016-02-19T04:59:19", "url": "https://files.pythonhosted.org/packages/17/aa/79eb3bfff860064b46ffda2221a2f48f670f5173503cabaa374ff6a35da6/OpenPySCAD-0.0.1.macosx-10.11-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "d1a9663eef1e31509cafbb428d401d1a", "sha256": "f11dcbd43586755308f2f98cd2487b1233a15deda9fa812958747e9f964a054c" }, "downloads": -1, "filename": "OpenPySCAD-0.0.1-py2.7.egg", "has_sig": false, "md5_digest": "d1a9663eef1e31509cafbb428d401d1a", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 8013, "upload_time": "2016-02-19T04:59:26", "url": "https://files.pythonhosted.org/packages/8d/aa/9dcda0da011f4132f1daa0ae0280d85f2cdf5be609452a1d9648f9f5b976/OpenPySCAD-0.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "f850104caf75f00c3c080104dde5ed3a", "sha256": "de7c1e410231e490e9d6414abe8f6bdbf984f97c1b1915347e1d3a500d5ab890" }, "downloads": -1, "filename": "OpenPySCAD-0.0.1.tar.gz", "has_sig": false, "md5_digest": "f850104caf75f00c3c080104dde5ed3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3187, "upload_time": "2016-02-19T04:59:12", "url": "https://files.pythonhosted.org/packages/92/0d/00351b93d68aaf36d45f75023d6d8d09f397565dee9053fb12c8be47987e/OpenPySCAD-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "built for Darwin-15.3.0", "digests": { "md5": "485e6bea8fb900b10b64f764d9bcf958", "sha256": "0d1d373d5752b170fe80a2b41ddc162858508946a38598c43c7a4fb05deb56bf" }, "downloads": -1, "filename": "OpenPySCAD-0.0.2.macosx-10.11-x86_64.tar.gz", "has_sig": false, "md5_digest": "485e6bea8fb900b10b64f764d9bcf958", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 6653, "upload_time": "2016-02-19T06:51:24", "url": "https://files.pythonhosted.org/packages/62/20/a461f4d403f3334f2264ee2ac2a8ae24a3f09c4300c9a474deed723bb4fd/OpenPySCAD-0.0.2.macosx-10.11-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "5d806e8420133291e42f31bbb2a5faab", "sha256": "2d813859e37cde9369e1b7373528af774d81a3d4c5299610e8f5912324f82096" }, "downloads": -1, "filename": "OpenPySCAD-0.0.2-py2.7.egg", "has_sig": false, "md5_digest": "5d806e8420133291e42f31bbb2a5faab", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 7995, "upload_time": "2016-02-19T06:51:29", "url": "https://files.pythonhosted.org/packages/5b/63/69d18d74aacc8861de1f2ce3531d8fae1ee77b0f618edd07b7c357e6904a/OpenPySCAD-0.0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "63a802480a348e7578f5f32b89f01bff", "sha256": "09538e698ad9275d4bf7355fc416de6e2142fdf028707f81bb06afe44a9f064e" }, "downloads": -1, "filename": "OpenPySCAD-0.0.2.tar.gz", "has_sig": false, "md5_digest": "63a802480a348e7578f5f32b89f01bff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3412, "upload_time": "2016-02-19T06:51:09", "url": "https://files.pythonhosted.org/packages/3b/a1/6b576a2db2fb2302673f953f80b10c375c154fb5be086e94e60d2b0081e2/OpenPySCAD-0.0.2.tar.gz" } ], "0.1.0": [ { "comment_text": "built for Darwin-15.3.0", "digests": { "md5": "d72d6e82f8468d641b49001e24ddef0e", "sha256": "55cef4bb9ed5d5e25ea3e2794fb2c811a9c7865d1a82571258c7b047aa8e4c72" }, "downloads": -1, "filename": "OpenPySCAD-0.1.0.macosx-10.11-x86_64.tar.gz", "has_sig": false, "md5_digest": "d72d6e82f8468d641b49001e24ddef0e", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 9338, "upload_time": "2016-02-21T10:56:15", "url": "https://files.pythonhosted.org/packages/6a/7b/a73e30b2e20f2278facee9bf73ab85713732a38a375b82eb137ea873d2f4/OpenPySCAD-0.1.0.macosx-10.11-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "1686dd768a09ea76bccdf114c67391ab", "sha256": "2777536d56945ef6683bc8c66af45383fced8b6f7e310194eeaf89fae911be9a" }, "downloads": -1, "filename": "OpenPySCAD-0.1.0-py2.7.egg", "has_sig": false, "md5_digest": "1686dd768a09ea76bccdf114c67391ab", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 14119, "upload_time": "2016-02-21T10:56:21", "url": "https://files.pythonhosted.org/packages/1d/aa/02e928259bfbc052b3f864ff845917d470f6703971908ac13ad3c32ad9cb/OpenPySCAD-0.1.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "1a12c719e8b34b37b8e39ebedee9977a", "sha256": "f7782cb00e2e7684600613e6a35e50ab42ec3d96e32577af247582bb3127b923" }, "downloads": -1, "filename": "OpenPySCAD-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1a12c719e8b34b37b8e39ebedee9977a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4904, "upload_time": "2016-02-21T10:56:03", "url": "https://files.pythonhosted.org/packages/d6/1d/61b7af7ad3da1d0b450e098f1d112fa8dbc97b20801d5a53785754a7f7fe/OpenPySCAD-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "327747049a92644d1287629bd8538c10", "sha256": "d0ae2a620a8bd7fc7a085f6651f3f7fede3cacdf845febe7f2487049c9a4e9d5" }, "downloads": -1, "filename": "OpenPySCAD-0.1.1.tar.gz", "has_sig": false, "md5_digest": "327747049a92644d1287629bd8538c10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4967, "upload_time": "2016-02-21T12:16:35", "url": "https://files.pythonhosted.org/packages/7b/63/13ea275c28711f909ead71ae9affaa1af282d7e79853b2be6e09d60001a3/OpenPySCAD-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "built for Darwin-15.3.0", "digests": { "md5": "55f9c63a245f588e51cda6684d3dfd75", "sha256": "92c1e770f924afe4e9a9cde537c10298b1390eb35f5cf66f40a1a2490539c098" }, "downloads": -1, "filename": "OpenPySCAD-0.1.2.macosx-10.11-x86_64.tar.gz", "has_sig": false, "md5_digest": "55f9c63a245f588e51cda6684d3dfd75", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 9588, "upload_time": "2016-02-21T12:17:52", "url": "https://files.pythonhosted.org/packages/3e/64/e592c33c5458e1e3dedb766d8be37ba717d5d2ca2b989c6587be88472319/OpenPySCAD-0.1.2.macosx-10.11-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "75f1e0575a743ade134122c91810ad13", "sha256": "5a85caa9a692c73c0a53f4a81f65b23a5cd301baedb59bcf3d11c44cee0eaabc" }, "downloads": -1, "filename": "OpenPySCAD-0.1.2-py2.7.egg", "has_sig": false, "md5_digest": "75f1e0575a743ade134122c91810ad13", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 14321, "upload_time": "2016-02-21T12:18:09", "url": "https://files.pythonhosted.org/packages/3c/08/125e4307815cbeff4402692f0d16d906ad4b2a639a2c2f53d02bbec26103/OpenPySCAD-0.1.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "b12e4d1613a29428b9a94aae24f61f98", "sha256": "594379e99bf09d8f2100f2a7ce9385180553f9a86059f33e31819e507075ae83" }, "downloads": -1, "filename": "OpenPySCAD-0.1.2.tar.gz", "has_sig": false, "md5_digest": "b12e4d1613a29428b9a94aae24f61f98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4968, "upload_time": "2016-02-21T12:17:30", "url": "https://files.pythonhosted.org/packages/32/91/e2b0b274a1cd77f68e68921a262d293625a95f0b7c7f9e1e0c1ce4bec577/OpenPySCAD-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "df038d47bf60325282b4b178587e6f74", "sha256": "5ccb3a23e0736d0c08616372f6759caf1bbd32bd87c5006b24607b061206604b" }, "downloads": -1, "filename": "OpenPySCAD-0.2.0.tar.gz", "has_sig": false, "md5_digest": "df038d47bf60325282b4b178587e6f74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5117, "upload_time": "2017-01-08T23:48:56", "url": "https://files.pythonhosted.org/packages/33/6f/23bd7336221187b1cbf8f0a624b94c41185d8edc53b6f4a46cca99e4da2b/OpenPySCAD-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3e2f9ba74da31327c74510a8566b82a2", "sha256": "2f594384054bbeaecf64881f03323a085b1d2ea183e7016851734cd4254547f1" }, "downloads": -1, "filename": "OpenPySCAD-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3e2f9ba74da31327c74510a8566b82a2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8446, "upload_time": "2019-04-29T01:00:31", "url": "https://files.pythonhosted.org/packages/9c/9f/c58120d76d625627fd3a632a1af103d54dfd5d9c503f530521af2408932e/OpenPySCAD-0.3.0-py3-none-any.whl" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "859e91636319ddb38b2e7cf55be94015", "sha256": "e41d4d080ab089d4e3d6661f7c672a6eeae043d3e553f4354164b0b8f029473f" }, "downloads": -1, "filename": "OpenPySCAD-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "859e91636319ddb38b2e7cf55be94015", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9683, "upload_time": "2019-04-29T01:11:51", "url": "https://files.pythonhosted.org/packages/7a/76/23dc164f4f9ac913db3d7c703cd74520521f3bb4092774d4f07626df5cc9/OpenPySCAD-0.3.1-py3-none-any.whl" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "fbf5e9482408825668b8030633f7a6a5", "sha256": "4b11c5227df9d3e06eeb4ea70fc77abc2a8329232c74db87ff3d0c098d7a83fd" }, "downloads": -1, "filename": "OpenPySCAD-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fbf5e9482408825668b8030633f7a6a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 9723, "upload_time": "2019-04-29T14:48:57", "url": "https://files.pythonhosted.org/packages/2c/7f/995dc3c28cdb674973e3c806e49d3ce200fca695bbd82dcedf7b87a94989/OpenPySCAD-0.3.2-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fbf5e9482408825668b8030633f7a6a5", "sha256": "4b11c5227df9d3e06eeb4ea70fc77abc2a8329232c74db87ff3d0c098d7a83fd" }, "downloads": -1, "filename": "OpenPySCAD-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "fbf5e9482408825668b8030633f7a6a5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 9723, "upload_time": "2019-04-29T14:48:57", "url": "https://files.pythonhosted.org/packages/2c/7f/995dc3c28cdb674973e3c806e49d3ce200fca695bbd82dcedf7b87a94989/OpenPySCAD-0.3.2-py3-none-any.whl" } ] }