From 2154a7bfbd7c48ea0c34c52f3a25d4b8e6634d91 Mon Sep 17 00:00:00 2001 From: Dave Cowden Date: Sat, 12 Dec 2015 15:08:38 -0500 Subject: [PATCH] fixed various documentation errors. changed license to apache --- LICENSE | 315 ++++++++++++++++++++----------------- README.md | 3 +- cadquery.egg-info/PKG-INFO | 11 +- cadquery/cqgi.py | 4 +- doc/cqgi.rst | 2 +- doc/designprinciples.rst | 2 +- doc/examples.rst | 70 ++++----- doc/fileformat.rst | 5 +- doc/installation.rst | 9 +- doc/quickstart.rst | 2 +- doc/selectors.rst | 23 +++ 11 files changed, 246 insertions(+), 200 deletions(-) diff --git a/LICENSE b/LICENSE index a7b94b0..c09a9cc 100644 --- a/LICENSE +++ b/LICENSE @@ -2,182 +2,207 @@ CadQuery Copyright (C) 2015 Parametric Products Intellectual Holdings, LLC This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +modify it under the terms of the Apache Public License, v 2.0 - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + 1. Definitions. - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - 0. Additional Definitions. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - 1. Exception to Section 3 of the GNU GPL. + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. - 2. Conveying Modified Versions. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - 3. Object Code Incorporating Material from Library Header Files. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - b) Accompany the object code with a copy of the GNU GPL and this license - document. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. - 4. Combined Works. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - d) Do one of the following: + END OF TERMS AND CONDITIONS - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. + APPENDIX: How to apply the Apache License to your work. - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) + Copyright [yyyy] [name of copyright owner] - 5. Combined Libraries. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: + http://www.apache.org/licenses/LICENSE-2.0 - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md index cc1a67d..f9d41e7 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,8 @@ CadQuery scripts have several key advantages over OpenSCAD: License ======== -CadQuery is licensed under the terms of the LGPLv3. http://www.gnu.org/copyleft/lesser.html +CadQuery is licensed under the terms of the Apache Public License, version 2.0. +A copy of the license can be found at http://www.apache.org/licenses/LICENSE-2.0 Where is the GUI? ================== diff --git a/cadquery.egg-info/PKG-INFO b/cadquery.egg-info/PKG-INFO index a12e07e..a6a1f17 100644 --- a/cadquery.egg-info/PKG-INFO +++ b/cadquery.egg-info/PKG-INFO @@ -5,7 +5,7 @@ Summary: CadQuery is a parametric scripting language for creating and traversin Home-page: https://github.com/dcowden/cadquery Author: David Cowden Author-email: dave.cowden@gmail.com -License: LGPL +License: Apache Public License Description: What is a CadQuery? ======================================== @@ -33,13 +33,6 @@ Description: What is a CadQuery? It has tons of awesome features like integration with FreeCAD so you can see your objects, code-autocompletion, an examples bundle, and script saving/loading. Its definitely the best way to kick the tires! - Recently Added Features - ======================================== - - * 12/5/14 -- New FreeCAD/CadQuery Module! https://github.com/jmwright/cadquery-freecad-module - * 10/25/14 -- Added Revolution Feature ( thanks Jeremy ! ) - - Why CadQuery instead of OpenSCAD? ======================================== @@ -67,7 +60,7 @@ Description: What is a CadQuery? License ======== - CadQuery is licensed under the terms of the LGPLv3. http://www.gnu.org/copyleft/lesser.html + CadQuery is licensed under the terms of the Apache Public License, v 2.0 http://www.apache.org/licenses/LICENSE-2.0 Where is the GUI? ================== diff --git a/cadquery/cqgi.py b/cadquery/cqgi.py index 4cf9d88..92fd860 100644 --- a/cadquery/cqgi.py +++ b/cadquery/cqgi.py @@ -81,7 +81,7 @@ class CQModel(object): :param build_parameters: a dictionary of variables. The variables must be assignable to the underlying variable type. :raises: Nothing. If there is an exception, it will be on the exception property of the result. - This is the interface so that we can return other information onthe result, such as the build time + This is the interface so that we can return other information on the result, such as the build time :return: a BuildResult object, which includes the status of the result, and either a resulting shape or an exception """ @@ -309,7 +309,7 @@ class InvalidParameterError(Exception): class NoOutputError(Exception): """ - Raised when the script does not execute the build_output() method to + Raised when the script does not execute the build_object() method to return a solid """ pass diff --git a/doc/cqgi.rst b/doc/cqgi.rst index f8cb0dc..6e47b91 100644 --- a/doc/cqgi.rst +++ b/doc/cqgi.rst @@ -61,7 +61,7 @@ If the script was successful, the results property will include a list of result If the script failed, the exception property contains the exception object. -If your have a way to get inputs from a user, you can override any of the constants defined in the user script +If you have a way to get inputs from a user, you can override any of the constants defined in the user script with new values:: from cadquery import cqgi diff --git a/doc/designprinciples.rst b/doc/designprinciples.rst index 848e4ea..a74c8c3 100644 --- a/doc/designprinciples.rst +++ b/doc/designprinciples.rst @@ -38,7 +38,7 @@ If you have experience with 3D CAD systems, you also know that there is a key de After the base block is created, how the hole is located is key. If it is located from one edge, changing the block size will have a different affect than if the hole is located from the center. -Many scripting langauges to not provide a way to capture design intent-- because they require that you always work in +Many scripting langauges do not provide a way to capture design intent-- because they require that you always work in global coordinates. CadQuery is different-- you can locate features relative to others in a relative way-- preserving the design intent just like a human would when creating a drawing or building an object. diff --git a/doc/examples.rst b/doc/examples.rst index 4cce28d..0705da5 100644 --- a/doc/examples.rst +++ b/doc/examples.rst @@ -42,7 +42,7 @@ Just about the simplest possible example, a rectangular box .. cq_plot:: - result = cadquery.Workplane("front").box(2.0,2.0,0.5) + result = cadquery.Workplane("front").box(2.0, 2.0, 0.5) build_object(result) .. topic:: Api References @@ -96,7 +96,7 @@ By default, rectangles and circles are centered around the previous working poin .. cq_plot:: - result = cq.Workplane("front").circle(2.0).rect(0.5,0.75).extrude(0.5) + result = cq.Workplane("front").circle(2.0).rect(0.5, 0.75).extrude(0.5) build_object(result) .. topic:: Api References @@ -121,7 +121,7 @@ closed curve. .. cq_plot:: - result = cq.Workplane("front").lineTo(2.0,0).lineTo(2.0,1.0).threePointArc((1.0,1.5),(0.0,1.0))\ + result = cq.Workplane("front").lineTo(2.0, 0).lineTo(2.0, 1.0).threePointArc((1.0, 1.5),(0.0, 1.0))\ .close().extrude(0.25) build_object(result) @@ -149,9 +149,9 @@ A new work plane center can be established at any point. .. cq_plot:: result = cq.Workplane("front").circle(3.0) #current point is the center of the circle, at (0,0) - result = result.center(1.5,0.0).rect(0.5,0.5) # new work center is (1.5,0.0) + result = result.center(1.5, 0.0).rect(0.5, 0.5) # new work center is (1.5, 0.0) - result = result.center(-1.5,1.5).circle(0.25) # new work center is ( 0.0,1.5). + result = result.center(-1.5, 1.5).circle(0.25) # new work center is ( 0.0, 1.5). #the new center is specified relative to the previous center, not global coordinates! result = result.extrude(0.25) @@ -181,7 +181,7 @@ like :py:meth:`Workplane.circle` and :py:meth:`Workplane.rect`, will operate on .. cq_plot:: r = cq.Workplane("front").circle(2.0) # make base - r = r.pushPoints( [ (1.5,0),(0,1.5),(-1.5,0),(0,-1.5) ] ) # now four points are on the stack + r = r.pushPoints( [ (1.5, 0),(0, 1.5),(-1.5, 0),(0, -1.5) ] ) # now four points are on the stack r = r.circle( 0.25 ) # circle will operate on all four points result = r.extrude(0.125 ) # make prism build_object(result) @@ -204,8 +204,8 @@ correct for small hole sizes. .. cq_plot:: - result = cq.Workplane("front").box(3.0,4.0,0.25).pushPoints ( [ ( 0,0.75 ),(0,-0.75) ]) \ - .polygon(6,1.0).cutThruAll() + result = cq.Workplane("front").box(3.0, 4.0, 0.25).pushPoints ( [ ( 0,0.75 ),(0, -0.75) ]) \ + .polygon(6, 1.0).cutThruAll() build_object(result) .. topic:: Api References @@ -226,7 +226,7 @@ This example uses a polyline to create one half of an i-beam shape, which is mir .. cq_plot:: - (L,H,W,t) = ( 100.0,20.0,20.0,1.0) + (L,H,W,t) = ( 100.0, 20.0, 20.0, 1.0) pts = [ (0,H/2.0), (W/2.0,H/2.0), @@ -262,15 +262,15 @@ needs a complex profile s = cq.Workplane("XY") sPnts = [ - (2.75,1.5), - (2.5,1.75), - (2.0,1.5), - (1.5,1.0), - (1.0,1.25), - (0.5,1.0), - (0,1.0) + (2.75, 1.5), + (2.5, 1.75), + (2.0, 1.5), + (1.5, 1.0), + (1.0, 1.25), + (0.5, 1.0), + (0, 1.0) ] - r = s.lineTo(3.0,0).lineTo(3.0,1.0).spline(sPnts).close() + r = s.lineTo(3.0, 0).lineTo(3.0, 1.0).spline(sPnts).close() result = r.extrude(0.5) build_object(result) @@ -331,7 +331,7 @@ Keep in mind that the origin of new workplanes are located at the center of a fa .. cq_plot:: - result = cq.Workplane("front").box(2,3,0.5) #make a basic prism + result = cq.Workplane("front").box(2,3, 0.5) #make a basic prism result = result.faces(">Z").workplane().hole(0.5) #find the top-most face and make a hole build_object(result) @@ -359,7 +359,7 @@ how deep the part is .. cq_plot:: - result = cq.Workplane("front").box(3,2,0.5) #make a basic prism + result = cq.Workplane("front").box(3,2, 0.5) #make a basic prism result = result.faces(">Z").vertices("Z").workplane() \ - .transformed(offset=cq.Vector(0,-1.5,1.0),rotate=cq.Vector(60,0,0)) \ + result = cq.Workplane("front").box(4.0, 4.0, 0.25).faces(">Z").workplane() \ + .transformed(offset=cq.Vector(0, -1.5, 1.0),rotate=cq.Vector(60, 0, 0)) \ .rect(1.5,1.5,forConstruction=True).vertices().hole(0.25) build_object(result) @@ -434,8 +434,8 @@ In the example below, a rectangle is drawn, and its vertices are used to locate .. cq_plot:: - result = cq.Workplane("front").box(2,2,0.5).faces(">Z").workplane() \ - .rect(1.5,1.5,forConstruction=True).vertices().hole(0.125 ) + result = cq.Workplane("front").box(2, 2, 0.5).faces(">Z").workplane() \ + .rect(1.5, 1.5, forConstruction=True).vertices().hole(0.125 ) build_object(result) .. topic:: Api References @@ -459,7 +459,7 @@ are removed, and then the inside of the solid is 'hollowed out' to make the shel .. cq_plot:: - result = cq.Workplane("front").box(2,2,2).faces("+Z").shell(0.05) + result = cq.Workplane("front").box(2, 2, 2).faces("+Z").shell(0.05) build_object(result) .. topic:: Api References @@ -480,8 +480,8 @@ and a circular section. .. cq_plot:: - result = cq.Workplane("front").box(4.0,4.0,0.25).faces(">Z").circle(1.5) \ - .workplane(offset=3.0).rect(0.75,0.5).loft(combine=True) + result = cq.Workplane("front").box(4.0, 4.0, 0.25).faces(">Z").circle(1.5) \ + .workplane(offset=3.0).rect(0.75, 0.5).loft(combine=True) build_object(result) @@ -505,8 +505,8 @@ Similar to :py:meth:`Workplane.hole` , these functions operate on a list of poin .. cq_plot:: - result = cq.Workplane(cq.Plane.XY()).box(4,2,0.5).faces(">Z").workplane().rect(3.5,1.5,forConstruction=True)\ - .vertices().cboreHole(0.125, 0.25,0.125,depth=None) + result = cq.Workplane(cq.Plane.XY()).box(4,2, 0.5).faces(">Z").workplane().rect(3.5, 1.5, forConstruction=True)\ + .vertices().cboreHole(0.125, 0.25, 0.125, depth=None) build_object(result) @@ -533,7 +533,7 @@ Here we fillet all of the edges of a simple plate. .. cq_plot:: - result = cq.Workplane("XY" ).box(3,3,0.5).edges("|Z").fillet(0.125) + result = cq.Workplane("XY" ).box(3, 3, 0.5).edges("|Z").fillet(0.125) build_object(result) .. topic:: Api References @@ -554,12 +554,12 @@ with just a few lines of code. .. cq_plot:: - (length,height,bearing_diam, thickness,padding) = ( 30.0,40.0,22.0,10.0,8.0) + (length,height,bearing_diam, thickness,padding) = ( 30.0, 40.0, 22.0, 10.0, 8.0) result = cq.Workplane("XY").box(length,height,thickness).faces(">Z").workplane().hole(bearing_diam) \ .faces(">Z").workplane() \ .rect(length-padding,height-padding,forConstruction=True) \ - .vertices().cboreHole(2.4,4.4,2.1) + .vertices().cboreHole(2.4, 4.4, 2.1) build_object(result) @@ -604,12 +604,12 @@ ones at 13 lines, but that's very short compared to the pythonOCC version, which .. cq_plot:: - (L,w,t) = (20.0,6.0,3.0) + (L,w,t) = (20.0, 6.0, 3.0) s = cq.Workplane("XY") #draw half the profile of the bottle and extrude it - p = s.center(-L/2.0,0).vLine(w/2.0) \ - .threePointArc((L/2.0, w/2.0 + t),(L,w/2.0)).vLine(-w/2.0) \ + p = s.center(-L/2.0, 0).vLine(w/2.0) \ + .threePointArc((L/2.0, w/2.0 + t),(L, w/2.0)).vLine(-w/2.0) \ .mirrorX().extrude(30.0,True) #make the neck diff --git a/doc/fileformat.rst b/doc/fileformat.rst index b95f173..e34afa5 100644 --- a/doc/fileformat.rst +++ b/doc/fileformat.rst @@ -7,17 +7,16 @@ CadQuery scripts are pure python scripts, that may follow a few conventions. If you are using cadquery as a library, there are no constraints. -If you are using cadquery scripts inside of a caduquer execution environment, +If you are using cadquery scripts inside of a cadquery execution environment, like `The CadQuery Freecad Module `_ or `parametricParts.com `_, there are a few conventions you need to be aware of: * cadquery is already imported as 'cq' * to return an object to the container, you need to call the build_object() method. -See the Each script generally has three sections: - * Variable Assignments + * Variable Assignments and metadata definitions * cadquery and other python code * object exports, via the export_object() function diff --git a/doc/installation.rst b/doc/installation.rst index b623756..8633a9d 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -42,16 +42,21 @@ Adding a Nicer GUI via the cadquery-freecad-module -------------------------------------------------------- If you prefer to have a GUI available, your best option is to use -the `The CadQuery Freecad Module `_. +`The CadQuery Freecad Module `_. Simply extract cadquery-freecad-module into your FreeCAD installation. You'll end up with a cadquery workbench that allows you to interactively run scripts, and then see the results in the FreeCAD GUI +If you are using Ubuntu, you can also install it via this ppa: + +https://code.launchpad.net/~freecad-community/+archive/ubuntu/ppa/+packages + + Zero Step Install ------------------------------------------------- If you would like to use cadquery with no installation all, you can -use `ParametricParts.com `_, a web-based platform that runs cadQuery scripts +use `ParametricParts.com `_, a web-based platform that runs cadquery scripts It is free, and allows running and viewing cadquery scripts in your web browser or mobile phone diff --git a/doc/quickstart.rst b/doc/quickstart.rst index b046139..6701942 100644 --- a/doc/quickstart.rst +++ b/doc/quickstart.rst @@ -161,7 +161,7 @@ There is quite a bit going on here, so lets break it down a bit. **Line 5** creates a new padding parameter that decides how far the holes are from the edges of the plate. -**Line 10** selects the top-most face of the block, and creates a workplane on the top that face, which we'll use to +**Line 10** selects the top-most face of the block, and creates a workplane on the top of that face, which we'll use to define the centers of the holes in the corners. There are a couple of things to note about this line: diff --git a/doc/selectors.rst b/doc/selectors.rst index 0a7ac10..b14a02a 100644 --- a/doc/selectors.rst +++ b/doc/selectors.rst @@ -25,6 +25,29 @@ string patterns in, CadQuery will automatically use the associated selector obje See :ref:`extending` to see how. +Combining Selectors +========================== + +Selectors can be combined arithmetically and logically, so that it is possible to do intersection, union, and other +combinations. For example:: + + box = cadquery.Workplane("XY").box(10,10,10) + + s = selectors.StringSyntaxSelector + + ### select all edges on right and left faces + #box = box.edges((s("|Z") + s("|Y"))).fillet(1) + + ### select all edges on top and bottom + #box = box.edges(-s("|Z")).fillet(1) + #box = box.edges(s('|X')+s('Y')).fillet(1) + box = box.faces(s('>Z')+s('Z')+s('