diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 1898d30..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/html/* -/.gh-pages -/checklink.txt diff --git a/html/.gitkeep b/.gitkeep similarity index 100% rename from html/.gitkeep rename to .gitkeep diff --git a/.htaccess b/.htaccess deleted file mode 100644 index 7084321..0000000 --- a/.htaccess +++ /dev/null @@ -1,23 +0,0 @@ - -RewriteEngine On - -RewriteRule ^$ https://solvespace.com/index.pl [R] -RewriteRule ^index.html$ https://solvespace.com/index.pl [R] - -RewriteRule ^txtlink$ https://solvespace.com/index.pl [R] -RewriteRule ^helpmenu$ https://solvespace.com/ref.pl [R] - -# Somehow DuckDuckGo got a link to solvespace.com/index.pl/, so redirect to fix -# that instead of breaking with AcceptPathInfo Off -RewriteRule ^([A-Za-z0-9_]+\.pl)/.*$ https://solvespace.com/$1 [R=301] - -ErrorDocument 404 https://solvespace.com/index.pl - -RedirectMatch 404 ^/*\.git -RedirectMatch 404 \.sh$ - - - ForceType application/octet-stream - Header set Content-Disposition attachment - - diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 51c7090..0000000 --- a/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -sudo: false -addons: - apt: - packages: - - libgd-gd2-perl - - w3c-linkchecker -script: - - make check -after_success: - - if [ "${TRAVIS_SECURE_ENV_VARS}" != "true" ]; then exit 0; fi - - if [ "${TRAVIS_BRANCH}" != "master" ]; then exit 0; fi - - echo "$DEPLOY_KEY" | base64 -d >~/.ssh/id_rsa && chmod 0600 ~/.ssh/id_rsa - - git config --global user.name "Travis CI" - - git config --global user.email "travis@travis-ci.org" - - make gh-pages REMOTE=git@github.com:solvespace/solvespace-web - - echo "Deployed to https://solvespace.github.io/solvespace-web/" diff --git a/2d.pl b/2d.html similarity index 84% rename from 2d.pl rename to 2d.html index 3009bd1..e1e1682 100644 --- a/2d.pl +++ b/2d.html @@ -1,12 +1,64 @@ -#!/usr/bin/perl - -use TEMPL; -TEMPL::Init(); - -$TEMPL::TITLE = 'SolveSpace - Tutorial - 2d Sketching'; - -TEMPL::OutputWithHeader("TUTORIAL: 2D SKETCHING", < + + +SolveSpace - Tutorial - 2d Sketching + + + + + + + +
+ + SOLVESPACE + -- parametric 2d/3d CAD + +
+ +
+ +
+ Examples +
+ +
+ Tutorials +
+ +
+ Features +
+ +
+ Download +
+ +
+ Reference +
+ + + +
+ Library +
+ +
+ Forum +
+ +
+ Contact +
+ +
+
+
TUTORIAL: 2D SKETCHING
+

In this tutorial, we will look more closely at SolveSpace's two-dimensional drawing tools. SolveSpace is a 3d CAD program; but if we @@ -20,7 +72,7 @@

- +

@@ -63,7 +115,7 @@

- +

@@ -78,7 +130,7 @@

- +

@@ -92,7 +144,7 @@

- +

@@ -116,7 +168,7 @@

- +

@@ -129,7 +181,7 @@

- +

@@ -142,7 +194,7 @@

- +

@@ -178,7 +230,7 @@

- +

@@ -199,7 +251,7 @@

- +

@@ -209,7 +261,7 @@

- +

@@ -223,7 +275,7 @@

- +

@@ -237,7 +289,7 @@

- +

@@ -250,7 +302,7 @@

To round these, we will use the "Tangent Arc" tool. We can start by setting up some parameters of that tool. So with nothing selected, choose -Sketch → Tangent Arc at Point. In the Property Browser, we see that by +Sketch → Tangent Arc at Point. In the text window, we see that by default, the radius of this arc will be chosen automatically. This is not what we want, so we left-click to un-check that box. We now can enter our desired radius, which for the outer contour is 0.200 inches. (It @@ -260,7 +312,7 @@

- +

@@ -271,7 +323,7 @@

- +

@@ -280,7 +332,7 @@

- +

@@ -301,25 +353,25 @@

- +

For the inner contour, we wish to use a different radius: 0.050 inch (or the diameter of 0.100/2). So we choose Sketch → Tangent Arc at -Point with nothing selected, to view the screen in the Property Browser again. +Point with nothing selected, to view the screen in the text window again. We enter our new radius of 0.050 inches, and leave the other settings unchanged. We then select one of the points to be rounded, and choose Sketch → Tangent Arc at Point.

- +

Note that points are hidden in the above image, by clicking the -appropriate icon in the strip at the top of the Property Browser. The points +appropriate icon in the strip at the top of the text window. The points would otherwise clutter the view, and obscure the small arc.

@@ -339,18 +391,18 @@ text, and click again to define the bottom left. By default, the text will consist of the letters "Abc", and the font will be Arial. To change these, we left-click the text to select it. A description of the text appears in -the Property Browser, along with a list of available fonts. (Any TrueType font +the text window, along with a list of available fonts. (Any TrueType font installed through Windows will be available here; the exact list will vary with what programs and special fonts you have chosen to install.) To select a font, click it in that list.

- +

-Then to change the text, we scroll to the top of the Property Browser. The +Then to change the text, we scroll to the top of the text window. The current text ("Abc") is listed, and a link next to that text permits us to change the text. We click that link, type the new string in the text box, and hit Enter to confirm. The text will change, both in the text @@ -358,7 +410,7 @@

- +

@@ -375,7 +427,7 @@

- +

@@ -406,13 +458,13 @@

- +

We choose the latter. Initially, nothing changes, since the new custom style is created with the same line width and color as the default style. -But in the Property Browser, we see a description of our new style, which +But in the text window, we see a description of our new style, which we can edit according to our preference. First, we should name the style something meaningful, by clicking the "rename" link at the top of the page. We might, for example, choose to name it "blue-text". We then @@ -423,7 +475,7 @@

- +

@@ -443,7 +495,7 @@

- +

@@ -459,7 +511,7 @@

- +

@@ -474,14 +526,14 @@ wanted to change the color of the contour from white to green—then we could go back to the list of styles, and edit the appropriate style (in this case, s101-fat-contour) accordingly. From the home screen of -the Property Browser (click the link at the top left of the window, or press +the text window (click the link at the top left of the window, or press Esc a few times), we choose the "line styles" link at the bottom of the page. We now see a list of all the styles. The list is long, because it includes all the default styles:

- +

@@ -503,7 +555,7 @@

- +

@@ -519,7 +571,7 @@

- +

@@ -560,7 +612,7 @@

- +

@@ -598,7 +650,7 @@

This creates a new group. If we return to the home screen in the -Property Browser (by clicking the link at the top left, or pressing Esc a +text window (by clicking the link at the top left, or pressing Esc a few times), then we see that there are now two sketch groups in our file: g002-..., which contains the lines and curves that we've drawn, and g003-..., which is the new empty group we've just created for our @@ -610,7 +662,7 @@

- +

@@ -620,7 +672,7 @@ that would be tedious (and they would all appear with "REF" next to the number, which is not what we want). So we wish to make all dimensions in this group behave as reference dimensions. We can do that by viewing -the group's screen in the Property Browser, by clicking its name in the list. +the group's screen in the text window, by clicking its name in the list.

@@ -629,7 +681,7 @@

- +

@@ -640,7 +692,7 @@

- +

@@ -663,7 +715,7 @@

- +

@@ -681,9 +733,16 @@ This completes the tutorial. Other features in SolveSpace may be specially useful when drawing in 2d; for example, cut and paste work exclusively within workplanes. To learn more about these features, see the -reference manual, +reference manual, or follow the prompts and messages within the program.

-EOT -); + +
+ +
+
+© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
+
+ diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index 7e38835..0000000 --- a/LICENSE.txt +++ /dev/null @@ -1,349 +0,0 @@ -Creative Commons Attribution-ShareAlike 4.0 International Public -License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-ShareAlike 4.0 International Public License ("Public -License"). To the extent this Public License may be interpreted as a -contract, You are granted the Licensed Rights in consideration of Your -acceptance of these terms and conditions, and the Licensor grants You -such rights in consideration of benefits the Licensor receives from -making the Licensed Material available under these terms and -conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. BY-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - k. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - l. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - m. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. Additional offer from the Licensor -- Adapted Material. - Every recipient of Adapted Material from You - automatically receives an offer from the Licensor to - exercise the Licensed Rights in the Adapted Material - under the conditions of the Adapter's License You apply. - - c. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - b. ShareAlike. - - In addition to the conditions in Section 3(a), if You Share - Adapted Material You produce, the following conditions also apply. - - 1. The Adapter's License You apply must be a Creative Commons - license with the same License Elements, this version or - later, or a BY-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the - Adapter's License You apply. You may satisfy this condition - in any reasonable manner based on the medium, means, and - context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms - or conditions on, or apply any Effective Technological - Measures to, Adapted Material that restrict exercise of the - rights granted under the Adapter's License You apply. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, - - including for purposes of Section 3(b); and - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. diff --git a/Makefile b/Makefile deleted file mode 100644 index daa7a19..0000000 --- a/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -REMOTE ?= git@github.com:solvespace/solvespace-web - -PAGES := \ - index examples tutorial bracket box constraints linkage 2d \ - features download ref tech library contact -ASSETS := \ - $(wildcard pics/*) $(wildcard vids/*) $(wildcard dl/*) \ - style.css support.js -OUTPUT := \ - $(patsubst %,html/%.html,$(PAGES)) \ - $(patsubst %,html/%,$(ASSETS)) - -html/%.html: %.pl TEMPL.pm - HTML=1 perl -I. $< >$@ - -html/%: % - @mkdir -p $(dir $@) - cp $< $@ - -all: $(OUTPUT) - -check: all - # requires w3c-linkchecker - checklink -qr html/index.html -X 'html/forum.html$$' | tee checklink.txt - if grep "Code:\ 404" checklink.txt >/dev/null; then exit 1; else rm checklink.txt; fi - -clean: - @rm -rf html/* - -gh-pages: all - mkdir .gh-pages - cp .gitattributes .gh-pages/ - git -C .gh-pages init -q - git -C .gh-pages checkout -q -b gh-pages - cp -rLT html .gh-pages - git -C .gh-pages add . - git -C .gh-pages commit -q -m "Generate documentation." - git -C .gh-pages push -f -q $(REMOTE) gh-pages - rm -rf .gh-pages - -.PHONY: all clean diff --git a/README.md b/README.md deleted file mode 100644 index b41edf8..0000000 --- a/README.md +++ /dev/null @@ -1,61 +0,0 @@ -SolveSpace's website -==================== - -This repository contains the source code of the official website of [SolveSpace], a parametric -2d/3d CAD. - -[solvespace]: https://solvespace.com - -Prerequisites -------------- - -The templating engine that generates this website is written in Perl and requires the `GD` module. - -### Linux - -On Debian, Ubuntu, and compatible distributions the dependencies can be installed with: - - apt-get install perl-base libgd-gd2-perl - -### macOS - -When using Homebrew, the dependencies can be installed with: - - brew install perl libgd - cpan install gd - -### Windows - -On Windows 10, the dependencies can be installed using the Windows Subsystem for Linux, -by first installing [WSL] and then following the [steps for Linux](#linux). - -On any version of Windows, the dependencies can be installed using [Cygwin]: - - * `git` - * `make` - * `perl`, `perl-GD` - -[wsl]: https://msdn.microsoft.com/en-us/commandline/wsl/install_guide -[cygwin]: https://cygwin.com/ - -Workflow --------- - -Before you start, fork the `solvespace-web` repository and clone it into any convenient directory: - - git clone git@github.com:USERNAME/solvespace-web - -Then, verify that the prerequisites are installed correctly by running `make`. If this command -succeeds, open the `html/index.html` file in your browser. - -You can modify the website as follows: - - 1. Change a `.pl` file to modify a page, or add an asset to `pics`, `vids` or `dl`; - 2. (Re)generate HTML for every page and copy assets by invoking `make`; - 3. Verify that the change is correct; - 4. Commit the change and send a pull request. - -License -------- - -[CC BY-SA 4.0](LICENSE.txt) diff --git a/TEMPL.pm b/TEMPL.pm deleted file mode 100644 index c4eb84a..0000000 --- a/TEMPL.pm +++ /dev/null @@ -1,173 +0,0 @@ - -package TEMPL; - -use GD; - -sub SizeInfoForImage { - my ($str) = @_; - - if($str =~ /shim/i) { - return ""; - } - - unless($str =~ m#src=(\S+)#i) { - return ""; - } - my $file = $1; - $file =~ s/"//g; - $file =~ s#.*/##; - $file = "pics/$file"; - - (-r $file) or return ""; - - my $img = GD::Image->new($file); - defined($img) or return ""; - - my ($width, $height) = $img->getBounds(); - - return qq|width="$width" height="$height"|; -} - -sub Init { - $TITLE = 'SolveSpace'; - $ADD_TO_HEAD = ''; - $ADD_TO_BODY = ''; - $VERSION = undef; - $SHOW_VERSION = undef; - $DYNAMIC = 0; - - if(defined $ENV{'HTML'}) { - $HTML = 1; - $PL = 'html'; - } else { - $HTML = 0; - $PL = 'pl'; - } - $VERSION = ''; - if(defined $ENV{'VERSION'}) { - $VERSION = $ENV{'VERSION'}; - } - - $sp = " " x 20; - $sp2 = " " x 4; - $SEP = qq{

*$sp*$sp*$sp2

}; -} - -sub MakeTemplate { - @TOC = ( - [ 'Examples', "examples", 0 ], - [ 'Tutorials', "tutorial", 0 ], - [ 'Features', "features", 0 ], - [ 'Download', "download", 0 ], - [ 'Reference', "ref", 0 ], - [ 'Technology', "tech", 0 ], - [ 'Library', "library", 0 ], - [ 'Forum', "forum", 0 ], - [ 'Contact', "contact", 0 ], - ); - $TOC = ''; - for (@TOC) { - my ($title, $link, $where) = @{ $_ }; - - if($where and not($0 =~/tutorial|bracket/)) { - next; - } - $toc = $where ? "tocsub" : "toc"; - - if($0 =~ /$link\.pl$/) { - $TOC .= qq# -
- $title -
- #; - } else { - $TOC .= qq# -
- $title -
- #; - } - } - - $TOP = qq| - - - -$TITLE - - -$ADD_TO_HEAD - - - -|; - - $BOTTOM = qq| -
-
-© 2008-2022 SolveSpace contributors. -Most recent update July 12 2022. -
-
- -|; -} - -sub OutputWithHeader { - my ($title, $text) = @_; - MakeTemplate(); - - $version = ''; - if(defined $SHOW_VERSION && defined $VERSION && $HTML) { - $version = qq| (for $VERSION)|; - } - - Output(qq| -
- - SolveSpace Logo - SOLVESPACE - -- parametric 2d/3d CAD - -
- -
- $TEMPL::TOC -
-
-
$title$version
- $text -
-|); -} - - -sub Output { - my ($str) = @_; - MakeTemplate(); - - $str =~ s[<(\s*img[^>]+)>][ - sub { - my $v = $1; - $v =~ s#/\s*$##; - if($v =~ /(width|height)\s*=/i) { - return "<$v>"; - } else { - $extra = SizeInfoForImage($v); - return "<$v $extra>"; - } - }->(); - ]iseg; - - if(!$HTML) { - if($DYNAMIC) { - print "Cache-Control: private, no-cache\r\n"; - } else { - print "Cache-Control: public, max-age=3000\r\n"; - } - print "Content-Type: text/html; charset=utf-8\r\n\r\n"; - } - print $TOP . $str . $BOTTOM; -} - -1; diff --git a/box.pl b/box.html similarity index 80% rename from box.pl rename to box.html index 9288917..ef7dd24 100644 --- a/box.pl +++ b/box.html @@ -1,13 +1,64 @@ -#!/usr/bin/perl -use TEMPL; -TEMPL::Init(); + -$TEMPL::TITLE = 'SolveSpace - Tutorial - Assemblies'; -$TEMPL::SHOW_VERSION = 1; + +SolveSpace - Tutorial - Assemblies + + -TEMPL::OutputWithHeader("TUTORIAL: ASSEMBLIES", < + + + + +
+ +
+ Examples +
+ +
+ Tutorials +
+ +
+ Features +
+ +
+ Download +
+ +
+ Reference +
+ + + +
+ Library +
+ +
+ Forum +
+ +
+ Contact +
+ +
+
+
TUTORIAL: ASSEMBLIES (for )
+

In this tutorial, we will take multiple parts, and combine them into a parametric assembly. We will place the parts within the assembly using @@ -18,7 +69,7 @@ and have those changes propagate correctly into our assembly.

- Any SolveSpace file can be linked into any other SolveSpace file; + Any SolveSpace file can be imported into any other SolveSpace file; there is no special type for parts or assemblies. This means that sub-assemblies, for example, work in the obvious way. We could draw any of our parts from scratch, but they are also available for download @@ -29,7 +80,7 @@

Extract these files to a directory somewhere on your computer. It's - possible to link files from any directory into any file, but for + possible to import files from any directory into any file, but for simplicity it is best to put the parts and assembly in a single directory. If we do this, then we can copy that single directory to another computer and retain all the parametric links between the files. @@ -41,7 +92,7 @@ to form a box with six compartments:

- +

We wish to assemble these parts—a base, two sides, and seven @@ -49,12 +100,12 @@ course, we could begin with any component that we wanted. But it's logical to begin with the base.) Create a new file in SolveSpace by choosing File → New. In that new file, choose New Group → - Link / Assemble. Specify the base.slvs file that you just saved on - your computer. (You may also use New Group → Link Recent, if + Import / Assemble. Specify the base.slvs file that you just saved on + your computer. (You may also use New Group → Import Recent, if base.slvs appears in that list. This is exactly equivalent.)

- +

The part will appear in our assembly. We can grab any point with the @@ -72,7 +123,7 @@ screen, we can Ctrl+left-drag either a point or a normal.

- +

It's difficult to precisely define the orientation or position of a @@ -96,7 +147,7 @@ → Same Orientation, or the equivalent constraint from the toolbar.

- +

The two normals are now each marked with a magenta X, which is visible @@ -115,17 +166,17 @@ the translation, we can use a point-coincident constraint. Select the two points marked in red in the image above, and choose Constrain → On Point. The two points will now be constrained to be coincident, locking - the linked part's translation. The imported part is now fully constrained. + the imported part's translation. The imported part is now fully constrained.

Next, we wish to place the seven dividers. We will again choose New - Group → Link / Assemble, and specify divider.slvs. The divider + Group → Import / Assemble, and specify divider.slvs. The divider will appear in our assembly, initially with the wrong position and orientation. We therefore must drag it into roughly the position indicated below, with the longer of the divider's two tabs aligned to the slot on the base. We can do this with the mouse, by left-dragging the position and Shift+left-dragging the orientation. It may also be useful - to choose Edit → Rotate Imported 90°, to rotate the linked + to choose Edit → Rotate Imported 90°, to rotate the imported part by exactly ninety degrees about the coordinate axis that's closest to normal to the screen. (So if we are looking onto the XY plane, for example, then it rotates the part about the Z axis.) @@ -139,7 +190,7 @@ indicating the two normals that are in the same orientation.

- +

And we have again indicated two points in red that could be constrained @@ -149,22 +200,22 @@

We could repeat this process six more times, to place the seven dividers. - But it's easier to step and repeat our one linked part seven times. So + But it's easier to step and repeat our one imported part seven times. So choose New Group → Step and Repeat Translating. By default, three copies of the original part will appear, stepped along some constant distance and direction:

- +

Note that we have now hidden points and normals, by clicking the - respective icons at the top of the Property Browser. The assembly is getting + respective icons at the top of the text window. The assembly is getting more complex, so those were cluttering the screen. We can show or hide those as desired at any time.

- In the step and repeat group's Property Browser screen (press Tab to show + In the step and repeat group's text window screen (press Tab to show that window if it is hidden), we can change the number of times repeated to seven. We now see seven copies of that divider. We can drag these copies with the mouse. The first one is locked, and the orientation of @@ -174,7 +225,7 @@ and direction for the step and repeat.

- +

We can drag the parts into roughly the correct position, and then, as @@ -185,16 +236,16 @@ coincident, and the seven dividers will be placed as desired.

- +

- Finally, we wish to place the two sides. We choose New Group → Link / + Finally, we wish to place the two sides. We choose New Group → Import / Assemble as usual, and specify side.slvs. It appears within our assembly with some arbitrary position and orientation, which are probably not what's desired.

- +

In this particular default position and orientation, it is interfering @@ -208,10 +259,10 @@ define the orientation than by Shift+left-dragging with the mouse.

- +

- Once again, constrain the orientation of the linked part using a + Once again, constrain the orientation of the imported part using a same-orientation constraint, for example on one of that part's normals against our coordinate system's Y axis (drawn in green). Note that it does not matter if the Y axis and part's normal are pointing in exactly @@ -233,7 +284,7 @@ other entities are getting highlighted instead, then try zooming in more.

- +

Select Constrain → On Plane; the part may now move only in such a way @@ -248,7 +299,7 @@ freedom, and the point-on-face constraint has subtracted one.

- +

Next, select the plane of the top of the grey base and a point on the @@ -259,7 +310,7 @@ orange divider's tabs, as indicated below.

- +

Again constrain the point on the face. The green side's position is now @@ -304,21 +355,21 @@ It is therefore invalid.

- Place the other side of the box by any method; for example by linking + Place the other side of the box by any method; for example by importing it again and using a same-orientation and point-coincident constraint, or by stepping and repeating the side that we've just place twice, or in some other way.

- +

The assembly is now complete. We can view it on-screen, and produce isometric (View → Nearest Isometric View) or top, bottom and side (View → Nearest Ortho View) views of all the parts. We can suppress - the display of a part by changing that setting in its Property Browser screen. + the display of a part by changing that setting in its text window screen. For example, to hide the base, we would click the home link at the - top of the Property Browser, and then choose its group—which in our + top of the text window, and then choose its group—which in our assembly was the first import group, g003-import—from the list of groups. We then click the box labeled "suppress this group's solid model" to check it. To show that part again, we click that box again to uncheck @@ -348,7 +399,7 @@

@@ -357,7 +408,7 @@ View → Use Perspective Projection. To adjust the amount of perspective, change the perspective factor in the configuration screen. The configuration screen is reachable from the link at the - bottom of the home screen in the Property Browser.) + bottom of the home screen in the text window.)

We can make changes to one of the parts, and then regenerate the @@ -381,8 +432,15 @@

To learn more about SolveSpace, including the assembly features, see - the other tutorials or - the reference manual. + the other tutorials or + the reference manual.

-EOT -); + +
+ +
+
+© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
+
+ diff --git a/bracket.pl b/bracket.html similarity index 83% rename from bracket.pl rename to bracket.html index e677f06..c711a2a 100644 --- a/bracket.pl +++ b/bracket.html @@ -1,13 +1,64 @@ -#!/usr/bin/perl -use TEMPL; -TEMPL::Init(); + -$TEMPL::TITLE = 'SolveSpace - Tutorial - Drawing an Angle Bracket'; -$TEMPL::SHOW_VERSION = 1; + +SolveSpace - Tutorial - Drawing an Angle Bracket + + -TEMPL::OutputWithHeader("TUTORIAL: DRAWING AN ANGLE BRACKET", < + + + + +
+ +
+ Examples +
+ +
+ Tutorials +
+ +
+ Features +
+ +
+ Download +
+ +
+ Reference +
+ + + +
+ Library +
+ +
+ Forum +
+ +
+ Contact +
+ +
+
+
TUTORIAL: DRAWING AN ANGLE BRACKET (for )
+

In this tutorial, we will draw the part shown below. This is an angle bracket, with a radiused inside corner and a gusset. Both @@ -17,7 +68,7 @@

- +

@@ -41,7 +92,7 @@

- +

@@ -84,7 +135,7 @@ us that the profile is not yet a closed contour.

- +

Before left-clicking the last time, place the mouse over the first @@ -96,7 +147,7 @@ wanted to draw until we had a complete closed contour.)

- +

The profile now consists of six line segments, that join at six @@ -118,13 +169,13 @@ don't want to do that now.)

- Similarly, we can select the origin by left-clicking it. In the - Property Browser, we see that two points are selected. As a convenience, - it tells us their exact coordinates (x, y, z), although we don't care + Similarly, we can select the origin by left-clicking it. In the text + window, we see that two points are selected. As a convenience, it + tells us their exact coordinates (x, y, z), although we don't care about that now.

- +

@@ -140,11 +191,11 @@ horizontal. We can do this with a horizontal constraint on those line segments. So hover the mouse over the bottom line segment, and left click so that the line is selected. The line will be drawn in red, - and information about the line will be displayed in the Property Browser; + and information about the line will be displayed in the text window; selection works the same for lines and curves as for points.

- +

Now choose Constrain → Horizontal, or use the equivalent button @@ -167,7 +218,7 @@ appear highlighted in red.

- +

We then choose Constrain → Parallel / Tangent, or use the @@ -179,7 +230,7 @@ a way as to still satisfy all of the constraints.

- +

Then constrain the short endcap of the roughly-vertical leg of the @@ -210,7 +261,7 @@ or center of the arc to change the radius.

- +

This completes our section. It's not fully constrained, so if we @@ -236,7 +287,7 @@ center-dragging with the mouse.

- +

By default, extrusions are one-sided; so our original sketch is the @@ -253,21 +304,22 @@ construct the desired constraints when that symmetry exists.

- In the Property Browser, SolveSpace has automatically shown information + In the text window, SolveSpace has automatically shown information about the extrusion that we've just created. (If it didn't then we could view that information by choosing the "home" link at the top - left of the Property Browser. We would then see a list of groups, + left of the text window. We would then see a list of groups, including g003-extrude, the extrusion that we've just created. We could click on that name to view the same screen that is shown - automatically. If the Property Browser is not visible, then choose View - → Show Property Browser or press Tab.) + automatically. If the text window is not visible, then choose View + → Show Text Window or press Tab.)

We can see that the extrusion, named g003-extrude, is one-sided. - To change it to be two-sided, click "two-sided" in the Property Browser. + To change it to be two-sided, click "two-sided" in the text + window.

- +

The extrusion now @@ -282,12 +334,12 @@ exists, but it is currently not visible, because it lies within the solid object that we have just extruded. To make it visible, we must show "hidden lines", by clicking that icon at the top far right of the - Property Browser. This causes all lines and points to be displayed, even + text window. This causes all lines and points to be displayed, even if they lie within the solid model. (So it's as if the part becomes transparent.)

- +

We have left-clicked to select that point here, so it is highlighted @@ -318,12 +370,12 @@ contour will be filled in very dark blue, as before.

- +

One point of the triangle should lie exactly on the inside corner of - the angle. (This is also the origin of our current workplane, although - that doesn't matter now.) So select a point of the triangle, and select + the angle (which is also the origin of our workplane, although that + doesn't matter now). So select a point of the triangle, and select the inside corner of the existing extrusion, and choose Constrain → On Point.

@@ -342,7 +394,7 @@ Constrain → Equal. This is the same equal-line-length constraint that we used in the first sketch.
- +

Once the sketch is complete, we can rotate our view (center-drag) to @@ -350,19 +402,16 @@ sketch is at the center of the part—in fact, it lies in the original XY plane—and that two of the edges of our gusset lie coincident with the faces of the angle. This is probably a good time - to re-hide the occluded lines, to make the view less confusing. Click the - button in the far top right of the Property Browser twice more, to cycle - from "occluded lines are dashed" through "occluded lines are solid" to - arrive back at "occluded lines are hidden". + to hide the hidden lines, to make the view less confusing.

- +

We then extrude that section, by choosing New Group → Extrude, in the same way as before. Once again we want a two-sided extrusion, - so change that in the Property Browser. We can also change the color - of the extrusion, by clicking on one of the color swatches. Notice that + so change that in the text window. We can also change the color of + the extrusion, by clicking on one of the color swatches. Notice that it was very simple to place the gusset in the middle of the angle bracket, because we originally drew the angle symmetric about the XY plane. If we hadn't, then we could still have drawn the gusset at its @@ -370,7 +419,7 @@ constraint), but it would have been more complex.

- +

We can change the thickness of the gusset by dragging a point on @@ -397,7 +446,7 @@ to do anything special.)

- +

The constraint has now forced the gusset to have the same thickness @@ -431,7 +480,7 @@ below. Then choose New Group → Sketch in New Workplane.

- +

The view is aligned to our new workplane, as usual. This time we want @@ -442,7 +491,7 @@ Repeat the process to draw a second circle.

- +

We want the circles to have the same radius/diameter, and to be @@ -459,7 +508,7 @@ as a pair of magenta arrows, pointing inwards.

- +

In this case, the points have been placed symmetrically about the @@ -477,7 +526,7 @@ This creates two cylinders, as shown below.

- +

First, the extrusion is going in the wrong direction. We could fix @@ -495,7 +544,7 @@ to rotate our view of the part. This is not a problem.

- +

Then choose Constrain → On Plane. This places the point on the @@ -503,13 +552,13 @@

In the - Property Browser, modify the extrusion so that it is merged as + text window, modify the extrusion so that it is merged as "difference" instead of "union". This means that instead of adding material, this extrusion removes material. So the extrusion cuts two holes, and we're done.

- +

Try dragging each point on the model, to see which degrees of freedom @@ -520,12 +569,12 @@

Also, try going back and making some change to earlier sketches in - the part. In the Property Browser, choose "home" (from the link at the top - left of the Property Browser), or press Escape until we see a list like + the part. In the text window, choose home (from the link at the top + left of the text window), or press Escape until we see a list like the one below.

- +

Each entry in the list corresponds to a group in the part. The first @@ -557,12 +606,12 @@

The current view of the part is rather cluttered. SolveSpace will generate many extra lines and points, because they might be useful to - constrain against. To hide those, choose "hide all" on the Property - Browser home screen. We now see only the lines and curves that - actually form the edges of the solid model. + constrain against. To hide those, choose "hide all" in the text + window, from the home screen. We now see only the lines and curves + that actually form the edges of the solid model.

- +

This solid model can be used in several different ways. We could just @@ -593,5 +642,12 @@

  • bracket.slvs
  • -EOT -); + +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/constraints.pl b/constraints.html similarity index 81% rename from constraints.pl rename to constraints.html index 8dd48ac..aa90397 100644 --- a/constraints.pl +++ b/constraints.html @@ -1,13 +1,64 @@ -#!/usr/bin/perl -use TEMPL; -TEMPL::Init(); + -$TEMPL::TITLE = 'SolveSpace - Tutorial - Constraints'; -$TEMPL::SHOW_VERSION = 1; + +SolveSpace - Tutorial - Constraints + + -TEMPL::OutputWithHeader("TUTORIAL: CONSTRAINTS", < + + + + +
    + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + + + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    + +
    +
    +
    TUTORIAL: CONSTRAINTS (for )
    +

    In this tutorial, we will look more closely at constraints. In SolveSpace, we will almost always use constraints to specify the geometry of our @@ -38,7 +89,7 @@

    - +

    @@ -57,12 +108,12 @@

    - +

    This constraint removes one DOF, so the sketch now has five DOF. To -confirm this, go to the home screen in the Property Browser (by pressing Esc, +confirm this, go to the home screen in the text window (by pressing Esc, or clicking the home link at the top left), and select the sketch, probably g002-sketch-in-plane, from the list. A list of constraints appears, and the number of degrees of freedom is indicated. @@ -76,7 +127,7 @@

    - +

    @@ -94,7 +145,7 @@ We could attempt to constrain the length of another side of the triangle, again by choosing Constrain → Distance. If we do so, then we see that the background of the sketch turns red, to indicate an error. In the -Property Browser, we are informed that the solver has failed. This is because +text window, we are informed that the solver has failed. This is because we have attempted to overconstrain the sketch. We had already specified enough constraints to exactly describe our triangle. This means that any additional constraints are not useful—either they are redundant, @@ -103,7 +154,7 @@

    - +

    @@ -116,7 +167,7 @@

    - +

    @@ -150,7 +201,7 @@

    - +

    @@ -185,7 +236,7 @@

    - +

    @@ -201,7 +252,7 @@

    - +

    @@ -213,7 +264,7 @@

    - +

    @@ -232,7 +283,7 @@

    - +

    @@ -252,7 +303,7 @@

    - +

    @@ -273,7 +324,7 @@

    - +

    @@ -285,7 +336,7 @@

    - +

    @@ -331,7 +382,7 @@

    - +

    @@ -343,11 +394,11 @@

    - +
    - +

    @@ -359,7 +410,7 @@

    - +

    @@ -370,7 +421,7 @@

    - +

    @@ -390,7 +441,7 @@

    - +

    @@ -427,7 +478,7 @@

    - +

    @@ -440,16 +491,23 @@

    To learn more about a particular constraint, see its entry in the reference manual, or just place it in a simple sketch +href="ref.html">reference manual, or just place it in a simple sketch and experiment.

    This tutorial has mostly discussed constraints for drawing, but the same -constraints are also used for assembly. See the assembly +constraints are also used for assembly. See the assembly tutorial for examples.

    -EOT -); + +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/contact.html b/contact.html new file mode 100644 index 0000000..1994d01 --- /dev/null +++ b/contact.html @@ -0,0 +1,99 @@ + + + + +SolveSpace - Contact + + + + + + + + + +
    + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + + + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    + +
    +
    +
    CONTACT
    + +

    SolveSpace was developed by +Jonathan Westhues. I can be reached at:

    + +
    + + + jwesthues-pleaseremove@nospam-cq.cx + + +
    + +

    SolveSpace is now maintained by +whitequark and others through +M-Labs Limited.

    + +

    Bug reports and feature requests may be posted to the +issue tracker. + +

    For commercial support and licensing, please contact:

    + +
    + + + support@solvespace.com + + +
    + + + +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/contact.pl b/contact.pl deleted file mode 100644 index 1a15eb2..0000000 --- a/contact.pl +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/perl - -use TEMPL; -TEMPL::Init(); - -$TEMPL::TITLE = 'SolveSpace - Contact'; -$TEMPL::ADD_TO_BODY = 'onload="fixEmail()"'; - -TEMPL::OutputWithHeader("CONTACT", <SolveSpace was developed by:

    - -

    and many others.

    - -

    If you have a question, please post it on the -forum.

    - -

    Bug reports and feature requests may be posted to the -issue tracker. - - - - -EOT -); diff --git a/download.html b/download.html new file mode 100644 index 0000000..ed2c821 --- /dev/null +++ b/download.html @@ -0,0 +1,141 @@ + + + + +SolveSpace - Download + + + + + + + +

    + +
    + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + + + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    + +
    +
    +
    DOWNLOAD PROGRAM
    +

    The following builds are available:

    + + + + + + + + + + + + + + + + + + + + +
    VersionReleasedPlatformsLink
    2.3December 23, 2016Windows XP–10, Linux, Macvia GitHub
    2.0July 28, 2013Windows XP–10via GitHub
    + +

    Under Windows, no installation is required. After downloading solvespace.exe, +you can run it immediately. If you wish to continue using SolveSpace, +then save solvespace.exe somewhere convenient (e.g., on your desktop).

    + +

    Under OS X, run the .app file directly from the disk image, or drag it +to Applications to install. Under Linux, +build and install, or get SolveSpace through your distribution's package manager.

    + +

    Files saved by 2.3 are usually readable by 2.0, but some + +new features + +are unsupported in older versions.

    + +

    *                    *                    *    

    + +

    Quick start: The first time SolveSpace runs, you will see an empty +workplane.

    +
      +
    • To draw a line, choose the Sketch → Line Segment (or circle, or +arc, or ...) menu. Then left-click to define the endpoints. Hit Escape +if you want to stop drawing before you've formed a closed contour.
    • +
    • Right-drag to pan, center-drag to rotate, and mousewheel to zoom. +To align the view's rotation back to the workplane, choose View → +Align View to Workplane.
    • +
    • To select a line, hover the mouse over the line (it turns yellow), +and left-click (it turns red). To dimension the line's length, choose +Constrain → Distance / Diameter.
    • +
    • To move the dimension, drag it. To change the dimension, double-click +it, type a number, and hit Enter.
    • +
    + +

    To learn more about SolveSpace, see the +tutorials, or the +reference manual. +

    + +

    *                    *                    *    

    + +

    SolveSpace is free software, distributed under the GPLv3. Source +code for the first release is available for download at:

    + + + +

    Later versions of the source code are hosted +in git at GitHub.

    + + +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/download.pl b/download.pl deleted file mode 100644 index d12b042..0000000 --- a/download.pl +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/perl - -use TEMPL; -TEMPL::Init(); - -$TEMPL::TITLE = 'SolveSpace - Download'; - -TEMPL::OutputWithHeader("DOWNLOAD PROGRAM", <The following builds are available:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    VersionReleasedPlatforms
    3.1 stableJune 01, 2022Windows Vista–10, Linux, Mac
    3.0 stableApril 17, 2021Windows Vista–10, Linux, Mac
    2.3 stableDecember 23, 2016Windows XP–10, Linux, Mac
    2.0 stableJuly 28, 2013Windows XP–10
    - -

    Release 3.1 is now available, with - -significant performance improvements, linking of .STL files and other features and fixes. Please report -any issues.

    - -

    Under Windows, no installation is required. Download -solvespace.exe and run it immediately. To continue using SolveSpace, -save solvespace.exe somewhere convenient. For higher performance on -multi-core processors, try solvespace-openmp.exe -(but you may need to install - -vc_redist.x86.exe first). -

    - -

    Under OS X, run the .app file directly from the disk image, or drag it -to Applications to install. Use 3.0 or later, since it is a vast improvement over previous versions. -

    - -

    Under Linux, you may find SolveSpace in your distribution's package manager, or you -can obtain it from the Snap Store. -You may also build SolveSpace from source and install it youself. -

    - -

    Files saved by newer versions may be readable by earlier ones, but some - -new features - -are unsupported in older versions.

    - -$TEMPL::SEP - -

    Quick start: The first time SolveSpace runs, you will see an empty -workplane.

    -
      -
    • To draw a line, choose the Sketch → Line Segment (or circle, or -arc, or ...) menu. Then left-click to define the endpoints. Hit Escape -if you want to stop drawing before you've formed a closed contour.
    • -
    • Right-drag to pan, center-drag to rotate, and mousewheel to zoom. -To align the view's rotation back to the workplane, choose View → -Align View to Workplane.
    • -
    • To select a line, hover the mouse over the line (it turns yellow), -and left-click (it turns red). To dimension the line's length, choose -Constrain → Distance / Diameter.
    • -
    • To move the dimension, drag it. To change the dimension, double-click -it, type a number, and hit Enter.
    • -
    - -

    To learn more about SolveSpace, see the -tutorials, or the -reference manual. -

    - -$TEMPL::SEP - -

    SolveSpace is free software, distributed under the GPLv3. Source -code for the first release is available for download at:

    - - - -

    Later versions of the source code are hosted -in git at GitHub.

    - -EOT -); diff --git a/examples.pl b/examples.html similarity index 61% rename from examples.pl rename to examples.html index 4a9b95c..a0b5594 100644 --- a/examples.pl +++ b/examples.html @@ -1,23 +1,72 @@ -#!/usr/bin/perl -use TEMPL; -TEMPL::Init(); + -$TEMPL::TITLE = 'SolveSpace - Examples'; -$TEMPL::SHOW_VERSION = 1; + +SolveSpace - Examples + + -$sep = '
    '; + -TEMPL::OutputWithHeader("EXAMPLES", < + + +
    + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + + + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    + +
    +
    +
    EXAMPLES (for )
    +
    - +

    A stand made from notched angle iron. Notice the way that parts for @@ -35,15 +84,15 @@

  • ex-stand.zip
  • -$sep +
    - +

    @@ -60,19 +109,19 @@

  • ex-collet.slvs
  • -$sep +
    - +
    - +
    - +
    - +

    A belt-driven ball mill. The images above are a mixture of @@ -100,14 +149,14 @@ -$sep +

    - +
    - +

    A case for a printed circuit board, made by stacking up four parts cut @@ -121,10 +170,10 @@

  • ex-case.zip
  • -$sep +
    - +

    Peaucellier's linkage. The rightmost point moves in an exact vertical @@ -135,10 +184,10 @@

  • ex-peaucellier.slvs
  • -$sep +
    - +

    Chebyshev's linkage. The path traced by the midpoint of the short @@ -149,10 +198,10 @@

  • ex-chebyshev.slvs
  • -$sep +
    - +

    Geometric construction of an isometric view. We @@ -172,5 +221,12 @@

  • ex-isometric.slvs
  • -EOT -); + +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/features.pl b/features.html similarity index 60% rename from features.pl rename to features.html index 73a2dd7..409fb04 100644 --- a/features.pl +++ b/features.html @@ -1,13 +1,64 @@ -#!/usr/bin/perl -use TEMPL; -TEMPL::Init(); + -$TEMPL::TITLE = 'SolveSpace - Features'; -$TEMPL::SHOW_VERSION = 1; + +SolveSpace - Features + + -TEMPL::OutputWithHeader("FEATURES", < + + + + + + +
    + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + + + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    + +
    +
    +
    FEATURES (for )
    +

    Sketch sections using

    • lines, rectangles, datum lines and points
    • @@ -46,8 +97,8 @@

      Build solid model with

        -
      • an extrude, lathe (solid of revolution) or helix from a sketch
      • -
      • Boolean operations: union (add material), difference (remove material), intersection (leave only common material)
      • +
      • extruded or lathed (solid of revolution) sketch
      • +
      • Boolean operations: union (add material), difference (remove material)
      • parametric step and repeat (pattern), rotating or translating
      • operations performed on either meshes or NURBS surfaces
      @@ -56,11 +107,11 @@

      Parametric and associative assembly

        -
      • link parts and drag them with six degrees of freedom
      • -
      • link mirrored or with arbitrary scale
      • +
      • import parts and drag them with six degrees of freedom
      • +
      • import mirrored or with arbitrary scale
      • place parts in assembly using constraints
      • -
      • link surfaces, and merge them using Boolean operations
      • -
      • link lines and curves, for 2d work or solid operations later
      • +
      • import surfaces, and merge them using Boolean operations
      • +
      • import lines and curves, for 2d work or solid operations later
      • changes in parts propagate automatically into assembly
      @@ -99,5 +150,12 @@
    -EOT -); + +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/index.pl b/index.html similarity index 52% rename from index.pl rename to index.html index 19d0544..1e43257 100644 --- a/index.pl +++ b/index.html @@ -1,21 +1,57 @@ -#!/usr/bin/perl -use TEMPL; -TEMPL::Init(); + -$TEMPL::TITLE = 'SolveSpace - parametric 3d CAD'; + +SolveSpace - parametric 3d CAD + + -TEMPL::MakeTemplate(); + -TEMPL::Output(<
    - SolveSpace Logo SOLVESPACE -- parametric 2d/3d CAD
    - $TEMPL::TOC + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + + + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    +
    @@ -45,8 +81,8 @@
    • modeling 3d parts — - draw with extrudes, revolves, helixes and Boolean - (union / difference / intersection) operations
    • + draw with extrudes, revolves, and Boolean + (union / difference) operations
    • modeling 2d parts — draw the part as a single section, and @@ -71,10 +107,14 @@
    -

    Learn more about SolveSpace in the tutorials, -or download it now.

    +

    Learn more about SolveSpace in the tutorials, +or download it now.

    -EOT -) -; + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/library.html b/library.html new file mode 100644 index 0000000..f1682e2 --- /dev/null +++ b/library.html @@ -0,0 +1,111 @@ + + + + +SolveSpace - As a Library + + + + + + + + + +
    + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + + + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    + +
    +
    +
    AS A LIBRARY
    + +

    Parametric sketching is a standard feature of mechanical CAD +software—most operators would consider it essential. It is valuable +in a wide range of applications, including mechanical drawing, MEMS +layout, architectural drawing, and printed circuit board layout. But +outside mechanical PLM packages (Pro/E, Solidworks, etc.), it has not +frequently been implemented.

    + +

    SolveSpace is a standalone executable program, and its constraint +solver is heavily coupled with the rest of the program. If you wish +to embed SolveSpace's constraint solver in another application, then +you may be able to use the library interface exposed by SolveSpace. + +

    *                    *                    *    

    + +

    This library is built from the same code used in SolveSpace; you +can evaluate its performance by downloading +and running solvespace.exe. Constraints and entities exposed in the +program's user interface correspond very closely to constraints and +entities defined by this library.

    + +

    This library is available with SolveSpace's source download package, +in the directory exposed/... in:

    + + + +

    This package includes documentation, the library itself, and the +necessary interface files to use the library with your code. Examples +are included, in:

    + +
      +
    • C/C++ (for the MSVC++ compiler, version 6 or later)
    • +
    • VB.NET (for the Microsoft .NET Framework, version 3.0 or later)
    • +
    + +

    SolveSpace is distributed under the GPLv3, which permits most +use in free software but generally forbids linking the library with +proprietary software. For commercial support and licensing, please contact us.

    + + +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/library.pl b/library.pl deleted file mode 100644 index 48f63b8..0000000 --- a/library.pl +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/perl - -use TEMPL; -TEMPL::Init(); - -$TEMPL::TITLE = 'SolveSpace - As a Library'; - -TEMPL::OutputWithHeader("AS A LIBRARY", <Parametric sketching is a standard feature of mechanical CAD -software—most operators would consider it essential. It is valuable -in a wide range of applications, including mechanical drawing, MEMS -layout, architectural drawing, and printed circuit board layout. But -outside mechanical PLM packages (Pro/E, Solidworks, etc.), it has not -frequently been implemented.

    - -

    SolveSpace is a standalone executable program, and its constraint -solver is heavily coupled with the rest of the program. If you wish -to embed SolveSpace's constraint solver in another application, then -you may be able to use the library interface exposed by SolveSpace. - -$TEMPL::SEP - -

    This library is built from the same code used in SolveSpace; you -can evaluate its performance by downloading -and running solvespace.exe. Constraints and entities exposed in the -program's user interface correspond very closely to constraints and -entities defined by this library.

    - -

    This library is available with SolveSpace's source download package, -in the directory exposed/... in:

    - - - -

    This package includes documentation, the library itself, and the -necessary interface files to use the library with your code. Examples -are included, in:

    - -
      -
    • C/C++ (for the MSVC++ compiler, version 6 or later)
    • -
    • VB.NET (for the Microsoft .NET Framework, version 3.0 or later)
    • -
    - -

    SolveSpace is distributed under the GPLv3, which permits most -use in free software but generally forbids linking the library with -proprietary software. For commercial support and licensing, please contact us.

    - -EOT -); diff --git a/linkage.pl b/linkage.html similarity index 78% rename from linkage.pl rename to linkage.html index 64c8b20..926453b 100644 --- a/linkage.pl +++ b/linkage.html @@ -1,13 +1,64 @@ -#!/usr/bin/perl -use TEMPL; -TEMPL::Init(); + -$TEMPL::TITLE = 'SolveSpace - Tutorial - Linkages'; -$TEMPL::SHOW_VERSION = 1; + +SolveSpace - Tutorial - Linkages + + -TEMPL::OutputWithHeader("TUTORIAL: LINKAGES", < + + + + +
    + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + + + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    + +
    +
    +
    TUTORIAL: LINKAGES (for )
    +

    In this tutorial, we will sketch various linkages, and use SolveSpace's geometric constraint solver to simulate their motion. A linkage will consist of at least two parts, constrained to move with respect to each @@ -29,7 +80,7 @@ motion. It appears as below:

    - +

    The pink plate is held stationary. The mechanism is driven at the blue @@ -51,7 +102,7 @@

    A dimensioned drawing of that skeleton appears as below:

    - +

    It's an eight-bar linkage (since it consists of eight @@ -79,7 +130,7 @@ it gets dimensioned.

    - +

    Then, we insert line length constraints for each link, by hovering @@ -88,7 +139,7 @@ double-click each dimension on the sketch, and type in the desired length.

    - +

    We also constrain the fixed links (drawn earlier in green), by @@ -102,7 +153,7 @@ sketching, the default "g002-sketch-in-plane".

    - +

    We can now work the linkage, by dragging a link with the mouse. The @@ -122,7 +173,7 @@ actuator driving the linkage.

    - +

    The sketch is now fully constrained, with 0 DOF. To trace the @@ -139,7 +190,7 @@ will otherwise work too quickly for us to see it animate.

    - +

    We also can record the position of a point on the linkage as the @@ -148,7 +199,7 @@ be recorded with a cyan curve.

    - +

    To stop tracing, we choose Analyze → Stop Tracing. A file dialog @@ -164,7 +215,7 @@ but many programs could do this, for example most spreadsheets).

    - +

    If the linkage was worked with Step Dimension, then that speed is @@ -174,7 +225,7 @@ (the black trace) as a function of time or, equivalently, angle.

    - +

    Once the skeleton of the linkage exists, solid models may be @@ -185,10 +236,10 @@ of constraints is:

      -
    • linked part's z-axis normal parallel to our reference z-axis normal, -to hold the linked part in a plane parallel to our linkage plane;
    • -
    • a point from linked part lies in specified workplane (or on specified -plane face from solid model), to hold the linked part at the desired +
    • imported part's z-axis normal parallel to our reference z-axis normal, +to hold the imported part in a plane parallel to our linkage plane;
    • +
    • a point from imported part lies in specified workplane (or on specified +plane face from solid model), to hold the imported part at the desired translation normal to the plane;
    • point-on-point, in 2d (choose a workplane parallel to the linkage plane, and choose Sketch → In Workplane; then select the two points, and @@ -213,7 +264,7 @@ so that we can mark it in blue, and hide it in any exported file.

      - +

      The linkage drawn above used only pin joints. Other kinds of joints @@ -222,7 +273,7 @@ constraint is used here, to model a Whitworth quick-return mechanism:

      - +

      This mechanism contains rotating links: one 15 mm long, about the @@ -244,7 +295,7 @@ they will follow the motion of the mechanism.

      - +

      Here, we've once again provided a handle to aid in working the linkage, @@ -256,7 +307,7 @@ linkage, and finally Analyze → Stop Tracing to save the results.

      - +

      The "quick return" feature is visible here, as the output position @@ -268,7 +319,7 @@ line will trace out an axis-aligned ellipse:

      - +

      The SolveSpace models used in this tutorial are available for download @@ -280,5 +331,12 @@

    • mechanisms.zip
    -EOT -); + +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/pics/solvespace-scalable.svg b/pics/solvespace-scalable.svg deleted file mode 100644 index 0d060d1..0000000 --- a/pics/solvespace-scalable.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/pics/tut-both-sides.png b/pics/tut-both-sides.png index 75648b0..09bc948 100644 Binary files a/pics/tut-both-sides.png and b/pics/tut-both-sides.png differ diff --git a/pics/tut-finished.png b/pics/tut-finished.png index 4239b52..e43310d 100644 Binary files a/pics/tut-finished.png and b/pics/tut-finished.png differ diff --git a/pics/tut-group-list.png b/pics/tut-group-list.png index 85b9d6a..56adc08 100644 Binary files a/pics/tut-group-list.png and b/pics/tut-group-list.png differ diff --git a/pics/tut-hidden-lines.png b/pics/tut-hidden-lines.png index 63df08b..47b2646 100644 Binary files a/pics/tut-hidden-lines.png and b/pics/tut-hidden-lines.png differ diff --git a/pics/window-linux-main.png b/pics/window-linux-main.png deleted file mode 100644 index 38f8fba..0000000 Binary files a/pics/window-linux-main.png and /dev/null differ diff --git a/pics/window-linux-property-browser.png b/pics/window-linux-property-browser.png deleted file mode 100644 index 3075ea8..0000000 Binary files a/pics/window-linux-property-browser.png and /dev/null differ diff --git a/ref.pl b/ref.html similarity index 79% rename from ref.pl rename to ref.html index dbad6dc..1d4a854 100644 --- a/ref.pl +++ b/ref.html @@ -1,31 +1,80 @@ -#!/usr/bin/perl -use TEMPL; -TEMPL::Init(); + -$TEMPL::TITLE = 'SolveSpace - Reference'; -$TEMPL::SHOW_VERSION = 1; + +SolveSpace - Reference + + -TEMPL::OutputWithHeader("REFERENCE MANUAL", < + + + + +
    + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + + + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    + +
    +
    +
    REFERENCE MANUAL (for )
    +

    This is a reference manual for SolveSpace. It is not intended as an introduction to the program; for that, see the -tutorials.

    +tutorials.

    -

    -General Navigation

    +

    General Navigation

    The user interface consists of two windows: a larger window that contains mostly graphics, and a smaller window that contains mostly text. The graphics window is used to draw the geometry, and to view - the 3d model. The Property Browser provides information about the model, + the 3d model. The text window provides information about the model, and may also be used to modify settings and numerical parameters.

    -

    -Graphics Window and Model View

    +

    Graphics Window and Model View

    To pan the view, right-drag with the mouse. @@ -94,8 +143,7 @@ axes are always conveniently available on-screen, which is useful e.g. when constraining a line parallel to the x-axis.) -

    -Dimension Entry and Units

    +

    Dimension Entry and Units

    Dimensions may be displayed in either millimeters or inches. @@ -114,30 +162,21 @@ places where a dimension is expected, it's possible to enter an arithmetic expression ("4*20 + 7") instead of a single number. -

    - You can use sqrt, square, sin, - cos, asin, acos, pi, - +, -, *, /, - (, ) in the expressions. For example - "7*pi/(3+cos(45))". The trigonometric functions take - degrees. - -

    -Text Window

    +

    Text Window

    - The Property Browser appears as a floating palette window. It may + The text window appears as a floating palette window. It may be shown or hidden by pressing Tab, or by choosing View → Show Text Window.

    - The Property Browser works like a web browser. Any underlined text is + The text window works like a web browser. Any underlined text is a link. To activate a link, click it with the mouse. The links - may be used to navigate to other pages in the Property Browser. For + may be used to navigate to other pages in the text window. For example, the "home" screen is a list of groups in the sketch:

    - +

    @@ -148,9 +187,9 @@ "shown" column.

    - As a convenience, the Property Browser will sometimes automatically + As a convenience, the text window will sometimes automatically navigate to a page that is likely to be relevant. For example, - when a new group is created, the Property Browser displays that new + when a new group is created, the text window displays that new group's page. It's always possible to navigate to a different page, by clicking the "home" link at the top left corner (or pressing Esc), and following the links from there. @@ -158,12 +197,12 @@

    When sketch entities are selected (e.g., the user has clicked on them with the mouse), information about those entities is - displayed in the Property Browser. If a single entity is selected, + displayed in the text window. If a single entity is selected, then information about that entity is displayed. For example, the window display's a circle's center and radius.

    - If multiple entities are selected, then the Property Browser can + If multiple entities are selected, then the text window can sometimes display information about all of them. These cases include: @@ -180,8 +219,7 @@ -

    -Show / Hide Entities

    +

    Show / Hide Entities

    As the sketch becomes more complex, it may be useful to hide @@ -190,7 +228,7 @@

    - Along the top of the Property Browser, a row of icons appears. These icons + Along the top of the text window, a row of icons appears. These icons make it possible to hide and show different elements in the sketch:

    @@ -302,7 +340,7 @@ cylinder will remain visible.

    - To hide a group, go to the home screen in the Property Browser, by + To hide a group, go to the home screen in the text window, by pressing Esc or choosing the link at the top left. A list of groups is displayed, along with their visibility. If a group is visible, then the checkbox in the "shown" column is checked. @@ -310,12 +348,11 @@ is hidden. The show / hide status of groups is saved in the part file. If - a part is linked into an assembly, then entities that were + a part is imported into an assembly, then entities that were visible in the part file will be visible in the assembly, and entities that were hidden will be hidden. -

    -Active Workplane

    +

    Active Workplane

    SolveSpace represents all geometry in 3d; it's possible to draw @@ -326,7 +363,7 @@ it possible to draw in a plane. If a workplane is active, then all entities that are drawn will be forced to lie that plane. The active workplane ("in plane:") is indicated in the top line of - the Property Browser, at the right. + the text window, at the right.

    When SolveSpace starts with a new empty file, a workplane parallel @@ -347,8 +384,7 @@ workplane may be activated by choosing Sketch → In Workplane; there is no need to select it first. -

    -Active Group

    +

    Active Group

    When a new line, circle, or other curve is created, it will be created @@ -357,31 +393,19 @@ are hidden.

    - In the Property Browser's home screen (press Escape, or choose the link + In the text window's home screen (press Escape, or choose the link in the top left corner), the active group's line in the list of groups has a selected radio button in the "active" column. All other groups (except g001-#references, which cannot be activated) have an unselected radio button in that column. To activate an inactive group, click its radio button. -

    - In order to reduce distraction when sketching in 2D, solid models from - inactive groups are "dimmed" (by rendering them using the - #def-dim-solid style) so that they blend into the background. To - disable this uncheck View → Darken Inactive Solids. By modifying - the #def-dim-solid style any color may be assigned to geometry from - inactive groups instead of just "dimming" them. A brighter color may - even be assigned to this style to make geometry from inactive groups - stand out more clearly instead if desired. -

    -

    -Sketch Entities

    +

    Sketch Entities

    -

    -Construction Geometry

    +

    Construction Geometry

    In normal operation, the user draws line and curves in a @@ -398,15 +422,12 @@

    To mark an entity as construction-only, choose Sketch → Toggle - Construction. A construction entity will behave just like any other - entity, except that it is drawn in green, and does not contribute to - the geometry for export by default (or to the section that will be - extruded or lathed or swept). You may also toggle construction - geometry while sketching a new entity by using the 'g' keyboard - shortcut. + Construction. A construction entity will behave just like any + other entity, except that it is drawn in green, and does not + contribute to the geometry for export (or to the section that + will be extruded or lathed or swept). -

    -Datum Point

    +

    Datum Point

    This entity is defined by a single point. @@ -423,8 +444,7 @@ might place datum points in order to simplify the dimensioning of line segments or other entities. -

    -Workplane

    +

    Workplane

    This entity is specified by a point and a normal. The point @@ -439,8 +459,7 @@ It's almost never necessary to create workplanes explicitly. Instead, create a new Sketch in New Workplane group. -

    -Line Segment

    +

    Line Segment

    This entity is specified by its two endpoints. If a workplane is @@ -466,8 +485,7 @@ lie on the starting point, and since a constraint was inserted, SolveSpace will stop drawing.) -

    -Rectangle

    +

    Rectangle

    This entity consists of two vertical line segments, and two @@ -486,8 +504,7 @@ A workplane must be active when the rectangle is drawn, since the workplane defines the meaning of "horizontal" and "vertical". -

    -Circle

    +

    Circle

    This entity is specified by its center point, by its diameter, @@ -510,8 +527,7 @@ and the normal may be dragged (or constrained) to determine the circle's orientation. -

    -Arc of a Circle

    +

    Arc of a Circle

    This entity is specified by its center point, the two endpoints, @@ -532,8 +548,7 @@ The arc must be drawn in a workplane; it cannot be drawn in free space. -

    -Tangent Arc at Point

    +

    Tangent Arc at Point

    To round off a sharp corner (for example, between two lines), @@ -558,14 +573,13 @@

    By default, the radius of the tangent arc is chosen automatically. To change that, choose Sketch → Tangent Arc at Point with nothing - selected. A screen will appear in the Property Browser, where the radius + selected. A screen will appear in the text window, where the radius may be specified. It is also possible to specify whether the original lines and curves should be kept, but changed to construction lines (which may be useful if you want to place constraints on them), or whether they should be deleted. -

    -Bezier Cubic Spline

    +

    Bezier Cubic Spline

    This entity is specified by at least two on-curve points, and @@ -601,14 +615,14 @@ spline, which will be C2 continuous everywhere, including at that first point. -

    -Text in a TrueType Font

    +

    Text in a TrueType Font

    - This entity is defined by four points, at each corner of the text. The - distance between the points determines the height and width of the - text; the angle of the line between them determines the orientation of - the text, and their position determines the text's position. + This entity is defined by two points, at the top left and bottom + left of the text. The distance between the points determines the + height of the text; the angle of the line between them determines + the orientation of the text, and their position determines the + text's position.

    To create the text, choose Sketch → Text in TrueType Font. Then @@ -617,23 +631,11 @@

    To change the font, select the text entity. A list of installed - fonts appears in the Property Browser; click the font name to select + fonts appears in the text window; click the font name to select it. To change the displayed text, select the text entity and - click the [change] link in the Property Browser. - -

    -Image

    - -

    - This entity may be used to place a bitmap reference image in a sketch. - The entity is defined by four control points that may be used to - position, constrain and orient the image similar to those for TrueType - Text entities. Image entities are typically used as a reference for - sketching or tracing other entities and removed later. As such, Image - entities are not exportable. + click the [change] link in the text window. -

    -Splitting and Trimming Entities

    +

    Splitting and Trimming Entities

    In some cases, it is desirable to draw by creating overlapping @@ -642,7 +644,7 @@ the short arc are then deleted, to form a single closed shape.

    - +

    @@ -664,12 +666,10 @@

    -

    -Constraints

    +

    Constraints

    -

    -General

    +

    General

    To create a constraint, first select the geometry to be @@ -690,14 +690,14 @@ Most constraints are available in both 3d and projected versions. If a workplane is active, then the constraint applies on the projection of the geometry into that workplane. If no workplane - is active, then the constraint applies to the actual geometry + is active, then the constraint applies to the actually geometry in free space.

    For example, consider the line shown below:

    - +

    @@ -738,38 +738,7 @@ appear on the screen, where the new value can be entered. Press enter to commit the change, or Esc to cancel. -

    -Automatic Constraints

    - -

    - There is an option in the configuration screen labled "enable - automatic line constraints". If this option is checked and a line - being drawn is nearly horizontal, a horizontal contraint will - appear over the middle of the line and will be applied when the - second point of the line is clicked in place. Similarly when a - nearly vertical line is being drawn a "V" constraint will appear - automatically. If the line is not close enough to horizontal or - vertical, no constraint will be added. Holding Ctrl while sketching - will also disable this feature. - -

    - If an automatic constraint is redundant or would result in the - sketch being over-constrained, it will not be created even if - it is shown during line placement. Similarly if a distance or - diameter constraint is added that would over-constrain the - sketch, it will be created as a reference (REF). - -

    - Another option in the configuration screen is "edit newly added - dimensions". With this option enabled, when a new Distance, Lenght - Ratio, or Length Difference constraint is added the input box will - automatically appear so a specific value can be entered. With the - option off the user would have to create the constraint and then - double-click on it to edit the value, which is almost always what - we want to do. - -

    -Failure to Solve

    +

    Failure to Solve

    In some cases, the solver will fail. This is usually because the @@ -787,17 +756,17 @@

    If the sketch is inconsistent or redundant, then the background of the graphics window is drawn in red (instead of the usual - black), and an error is displayed in the Property Browser: + black), and an error is displayed in the text window:

    - +

    As a convenience, SolveSpace calculates a list of constraints that could be removed to make the sketch consistent again. To see which constraints those are, hover the mouse over the links - in the Property Browser; the constraint will appear highlighted in + in the text window; the constraint will appear highlighted in the graphics window. By deleting one or more of the constraints in that list, the user can make the sketch consistent again. @@ -812,8 +781,7 @@ Edit → Undo. -

    -Reference Dimensions

    +

    Reference Dimensions

    By default, the dimension drives the geometry. If a line segment @@ -835,8 +803,7 @@ dimension is specified by the geometry, not the user, so it is not meaningful to type in a new value for the reference dimension. -

    -Specific Constraints

    +

    Specific Constraints

    To get help on a specific constraint, choose its menu item without @@ -850,8 +817,7 @@ the line and then the point, and the result would be identical. Some exceptions exist, and are noted below. -

    -Distance / Diameter

    +

    Distance / Diameter

    This constraint sets the diameter of an arc or a circle, or the @@ -866,8 +832,7 @@ distance is always shown positive on the sketch; to flip to the other side, enter a negative value. -

    -Angle

    +

    Angle

    This constraint sets the angle between two vectors. A vector @@ -889,7 +854,7 @@ known as supplementary angles, and they always sum to 180 degrees.

    - +

    @@ -910,8 +875,7 @@ constraint of 30 degrees on one supplementary angle is exactly equivalent to a constraint of 150 degrees on the other. -

    -Horizontal / Vertical

    +

    Horizontal / Vertical

    This constraint forces a line segment to be horizontal or @@ -929,8 +893,7 @@ the workplanes so that lines are horizontal and vertical within those workplanes. -

    -On Point / Curve / Plane

    +

    On Point / Curve / Plane

    This constraint forces two points to be coincident, or a point @@ -953,8 +916,7 @@ in the same workplane), then the point will lie on the curve, but otherwise it will not. -

    -Equal Length / Radius / Angle

    +

    Equal Length / Radius / Angle

    This constraint forces two lengths, angles, or radiuses to @@ -974,8 +936,7 @@ the line is forced equal to the length (not the radius) of the arc. -

    -Length Ratio

    +

    Length Ratio

    This constraint sets the ratio between the lengths of two line @@ -987,24 +948,7 @@ The order in which the lines are selected matters; if line A is selected before line B, then the ratio is length of A:length of B. -

    -Length Difference

    - -

    - This constraint sets the difference between the lengths of two line - segments. For example, if line A and line B have length difference - 5 mm, then the constraint is satisfied if A is 50 mm long and B - is 55 mm long or 45mm long. - -

    - Note that a negative difference can be entered when editing the - constraint to change which is the shorter segment. At the same time - the value is always displayed as a positive number (the absolute - difference) and entering positive numbers does not change the - "direction". - -

    -At Midpoint

    +

    At Midpoint

    This constraint forces a point to lie on the midpoint of a line. @@ -1015,8 +959,7 @@ constraining it at the midpoint of the line, and then constraining that midpoint to lie on the plane. -

    -Symmetric

    +

    Symmetric

    This constraint forces two points to be symmetric about some @@ -1034,15 +977,13 @@ or vertical axis is chosen, depending which is closer to the configuration in which the points were initially drawn. -

    -Perpendicular

    +

    Perpendicular

    This constraint is exactly equivalent to an angle constraint for ninety degrees. -

    -Parallel / Tangent

    +

    Parallel / Tangent

    This constraint forces two vectors to be parallel. @@ -1073,8 +1014,7 @@ constraint. The constraint will force them to also be tangent at that point. -

    -Same Orientation

    +

    Same Orientation

    This constraint forces two normals to have the same orientation. @@ -1095,7 +1035,7 @@ normals are constrained to be parallel:

    - +

    @@ -1113,24 +1053,10 @@

    This is a useful constraint when building an assemblies; a single - "same orientation" constraint will fix all three of a linked + "same orientation" constraint will fix all three of the imported part's rotational degrees of freedom. -

    -Lock Point Where Dragged

    - -

    - Constrain a point such that the solver will not alter its location. - This does not prevent direct manipulation by dragging the entity - that owns the point or the point itself. It simply instructs the - solver to consider the point fully constrained. This can be easily - demonstrated by drawing an equilateral triangle with sides - constrained equal and one point locked. Dragging the side opposite - this locked point will not alter its position but will resize the - triangle instead. - -

    -Comment

    +

    Comment

    A comment is a single line of text that appears on the drawing. @@ -1160,12 +1086,11 @@

    -

    -Groups

    +

    Groups

    - To view a list of groups, go to the home page of the Property Browser. + To view a list of groups, go to the home page of the text window. This is accessible from the link at the top left of the text window, or by pressing Esc. To view a group's page, click its name in the list. @@ -1173,19 +1098,17 @@

    All groups have a name. When the group is created, a default name (e.g., "g008-extrude") is assigned. The user may change this name; - to do so, go to the group's page in the Property Browser, and choose + to do so, go to the group's page in the text window, and choose [rename].

    Groups that create a solid (e.g. extrudes or lathes) have a "solid - model as" option, which is displayed in the page in the Property Browser. + model as" option, which is displayed in the page in the text window. The group can be merged as union, which adds material to the - model, or as difference, which cuts material away. A third option is - intersection, which preserves only the material that falls within - both solids. + model, or as difference, which cuts material away.

    - The union, difference and intersection operations may be performed either as + The union and difference operations may be performed either as triangle meshes, or as exact NURBS surfaces. Triangle meshes are fast to compute and robust, but they require any smooth curves to be approximated as piecewise linear segments. The NURBS surface @@ -1197,18 +1120,17 @@

    These groups also have a color, which determines the color of the surfaces they produce. To change the color, click one of - the swatches in the group's page in the Property Browser. + the swatches in the group's page in the text window.

    - The group's page in the Property Browser also includes a list of all + The group's page in the text window also includes a list of all requests, and of all constraints. To identify a constraint or a request, hover the mouse over its name; it will appear highlighted in the graphics window. To select it, click the link in the - Property Browser. This is equivalent to hovering over and clicking + text window. This is equivalent to hovering over and clicking the actual object in the graphics window. -

    -Sketch in 3d

    +

    Sketch in 3d

    This creates a new empty group, in which the user may draw lines, @@ -1227,8 +1149,7 @@ dark blue. This is the area that would be swept or extruded or lathed by a subsequent group. -

    -Sketch in New Workplane

    +

    Sketch in New Workplane

    This creates a new empty group, similar to a new "Sketch in 3d". @@ -1278,8 +1199,7 @@ drawn across the gap. An error is also displayed if the curves are not all coplanar. -

    -Step Translating

    +

    Step Translating

    This group takes geometry in the active group, and copies it @@ -1294,7 +1214,7 @@

    The number of copies to create is specified by the user. To change this value, click the [change] link in the group's page - in the Property Browser. + in the text window.

    The copies may be translated on one side, or on two sides. If @@ -1320,7 +1240,7 @@ section, and then extrude the step and repeat.

    - If the active group is a solid (extrude, helix, lathe, revolve), then + If the active group is a solid (extrude, lathe), then the solid is stepped and repeated. In this case, the user would draw a section, extrude the section, and then step and repeat the extrusion. @@ -1331,8 +1251,7 @@ isn't parallel to the section plane, then only the second option will work. -

    -Step Rotating

    +

    Step Rotating

    This group takes the geometry in the active group, and copies @@ -1368,8 +1287,7 @@ Constraints (for example an angle constraint, or a point-on-lie constraint) may be used to specify the angle of rotation exactly. -

    -Extrude

    +

    Extrude

    This group takes a flat section, and extrudes it to form a solid. @@ -1401,10 +1319,6 @@ workplane. This means, for example, that a rectangle is extruded to form a rectangular prism. The extrusion has one degree of freedom, so a single distance constraint will fully constrain it. - It is possible to extrude perpendicular to a workplane other - than the one the sketch is drawn in by selecting the other - workplane prior to creating the extrusion. This can be used to - create skewed extrusions.

    By default, no workplane is active in a new extrude group. This @@ -1414,8 +1328,7 @@ behaviour, but it's possible to activate a workplane in the usual way (by selecting it, then choosing Sketch → In Workplane). -

    -Lathe

    +

    Lathe

    This group takes a flat sketch, and sweeps it around a @@ -1432,57 +1345,23 @@ curve. If the section crosses the axis of rotation, then it is certain to intersect itself and fail. -

    -Revolve

    - -

    - This group takes a flat sketch, and sweeps it around a - specified axis, to form a solid of revolution. The difference - between this and a Lathe group is that Revolve does not sweep - a full 360 degrees. The resulting solid can be dragged or constrained - to a specific angle. If dragged beyond 360 degrees this will - produce the exact same solid as a Lathe group. - -

    -Helix

    - -

    - This group takes a flat sketch, and sweeps it around a specified - axis while also translating along that axis. The result is a - helical surface which can be used to model threads or other - twisted surfaces. The two most common approaches are to use an - axis in the sketch plane to create a spiral shape, or an axis - perpendicular to the sketch plane to create what behaves like a - twisted version of the standard extrusion. - -

    - When a Helix group is created, a construction line will also be - created along the axis of the helix. Dragging the ends of that - line or any other points on the axis will change the length of - the helical extrusion. Dragging points that are not on the axis - will change the angle of the helix similar to a Revolve group. - The angle of a helix can be much more than 360 degrees to allow - creation of very long spiral shapes, or all of the threads on a - bolt in a single group. - -

    -Link / Assemble

    +

    Import / Assemble

    In SolveSpace, there is no distinction between "part" files and - "assembly" files; it's always possible to link one file into - another. An "assembly" is just a part file that links one or + "assembly" files; it's always possible to import one file into + another. An "assembly" is just a part file that imports one or more other parts.

    - The linked file is not editable within the assembly. It is - included exactly as it appears in the source file, but with an - arbitrary position and orientation. This means that the linked + The imported file is not editable within the assembly. It is + imported exactly as it appears in the source file, but with an + arbitrary position and orientation. This means that the imported part has six degrees of freedom.

    - To move (translate) the part, click any point on it - and drag it. To rotate the part, click any point and Shift+ + To move (translate) the part, click any point on the imported + part and drag it. To rotate the part, click any point and Shift+ or Ctrl+drag it. The position and orientation of the part may be fixed with constraints, in the same way that any other geometry is constrained. @@ -1499,34 +1378,27 @@

    To rotate the part by exactly ninety degrees about the coordinate axis (x, y, or z axis) closest to perpendicular to the screen, choose - Edit → Rotate Imported 90°. If an entity in a linked group + Edit → Rotate Imported 90°. If an entity in an imported group is selected, then the part from that group will be rotated. If an import group is active, then the part from the active group will be rotated.

    The Same Orientation constraint is particularly useful when - linking parts. This one constraint completely determines the - linked part's rotation. (Select a normal on the linked part, + importing parts. This one constraint completely determines the + imported part's rotation. (Select a normal on the imported part, select some other normal to constrain it against, and choose Constrain → Same Orientation).

    - The linked part also has an associated scale factor. This makes - it possible to link a smaller or larger version of the part. If + The imported part also has an associated scale factor. This makes + it possible to import a smaller or larger version of the part. If the scale factor is negative, then the part is scaled by the absolute value of the scale factor and mirrored. -

    - SolveSpace also has the ability to import IDF (.emn) files defining - printed circuit boards from electronic design tools. - This is useful for designing enclosures and checking fit within - an assembly. Sketch entities and an extrusion of the board will - be created and can be used for taking measurements. -

    Import groups have a special "solid model as" option: in addition - to the usual "union", "difference" and "intersection", they have "assemble". + to the usual "union" and "difference", they have "assemble". The "assemble" option should be used when combining parts that should not interfere with each other into an assembly. To verify that the assembly does not interfere, choose Analyze @@ -1542,24 +1414,23 @@ propagate into file B when the part is regenerated.

    - Similarly, it's possible to draw an open section in file A, link + Similarly, it's possible to draw an open section in file A, import that section into file B, and then draw additional lines or curves (in the same group or another group) within file B to close that - section. If file C links in file B, then the closed section may be + section. If file C imports file B, then the closed section may be extruded. This allows the user to reuse sections, or portions of a section, in multiple files, in such a way that a change in the original will propagate to all the parts that use that geometry.

    When an assembly file is loaded, SolveSpace loads all of the - linked files as well. If the linked files are not available, + imported files as well. If the imported files are not available, then an error occurs. When transfering an assembly file to another - computer, it's necessary to transfer all of the linked files + computer, it's necessary to transfer all of the imported files as well.

    -

    -Line Styles

    +

    Line Styles

    @@ -1573,12 +1444,12 @@

    SolveSpace's basic color scheme is defined by the default styles. To view -them, choose "line styles" from the home screen in the Property Browser. This +them, choose "line styles" from the home screen in the text window. This is where, for example, lines are specified to be white by default, and constraints to be magenta, and points to be green. The default styles may -be modified. These modifications will be saved in the user config (the -registry on Windows, a .json file on other platforms), and will apply to -all files opened on that computer.

    +be modified. These modifications will be saved in the registry, and will +apply to all files opened on that computer. +

    It is also possible to create custom styles, for cosmetic or other purposes. @@ -1600,7 +1471,7 @@

    Entities (like lines, circles, or arcs) may be assigned to a line style. One way to do so is to enter the desired line style's screen in the text window, and then select the desired entities. Then click the "assign to -style" link in the Property Browser. Another way to do so is to right-click +style" link in the text window. Another way to do so is to right-click the entity, and assign it to the style using the context menu.

    Comments (Constrain → Comment) may also be assigned to styles. The @@ -1610,13 +1481,13 @@ Grid) is often useful when creating cosmetic text.

    User-created styles are saved in the .slvs file, along with the geometry. -If a part with user-created styles is linked in, then the styles are not -imported; but the style identifiers for the linked in entities are maintained. -This means that the user can specify the line styles in the file doing the -linking (i.e., the "assembly").

    +If a part with user-created styles is imported, then the styles are not +imported; but the style identifiers for the imported entities are maintained. +This means that the user can specify the line styles in the importing file +(i.e., the "assembly").

    -

    If a style is hidden, then all objects within that style will be hidden, -even if their group is shown. If a style is not marked exportable, then +

    If a style is hidden, then all objects within that style will be +hidden, even if their group is shown. If a style is not exportable, then objects within that style will appear on-screen, but will not appear in an exported file. This behavior is similar to that of construction lines.

    @@ -1626,12 +1497,10 @@
    -

    -Analysis

    +

    Analysis

    -

    -Trace Point

    +

    Trace Point

    SolveSpace can draw a "trail" behind a point as it moves. This @@ -1639,7 +1508,7 @@ a four-bar linkage:

    - +

    @@ -1702,8 +1571,7 @@ this case, it may be useful to try stepping the dimension to its new value, instead of changing it in a single step. -

    -Measure Volume

    +

    Measure Volume

    This feature reports the volume of the part. Depending on @@ -1717,8 +1585,7 @@ that looks fairly smooth on-screen, expect an error around one percent. To decrease this error, choose a finer chord tolerance. -

    -Measure Area

    +

    Measure Area

    This feature reports the area of the current sketch. Depending on @@ -1733,8 +1600,7 @@ curve, or if it intersects itself) then an error is reported, because the area cannot be defined. -

    -Show Degrees of Freedom

    +

    Show Degrees of Freedom

    This feature indicates which points in the sketch are not completely @@ -1752,12 +1618,10 @@

    -

    -Export

    +

    Export

    -

    -Bitmap Image

    +

    Bitmap Image

    This option will export a bitmap image of whatever is displayed @@ -1768,8 +1632,7 @@ Choose File → Export Image. The file is exported as a PNG, which most graphics software can open. -

    -2d Section

    +

    2d Section

    This option will cut the solid model along a specified plane. All @@ -1791,7 +1654,7 @@

    Any surfaces coplanar with that plane face will appear in the file. The faces must be shown before they can be selected; - click the link in the third line of the Property Browser. + click the link in the third line of the text window.

    @@ -1842,8 +1705,7 @@ on the color space used by your viewer.

    -

    -2d View

    +

    2d View

    This option will project the 3d model onto a plane, in the same way @@ -1897,12 +1759,7 @@ been extruded or lathed, so no solid model is present) then curves will be exported in exact form when possible. -

    - Normals, datum points and image entities are not exported for vector - formats. - -

    -3d Wireframe

    +

    3d Wireframe

    This option behaves almost identically to File → Export 2d View; @@ -1915,8 +1772,7 @@ of solid parts. For that, use a triangle mesh or a NURBS surface (STEP) file. -

    -Triangle Mesh (STL, OBJ)

    +

    Triangle Mesh (STL, OBJ)

    This option will generate a 3d triangle mesh that represents @@ -1935,8 +1791,7 @@ The units of the STL file are determined by the export scale factor, which may be specified in the configuration screen. -

    -NURBS Surfaces (STEP)

    +

    NURBS Surfaces (STEP)

    If the model is represented as NURBS surfaces (and not just as a triangle @@ -1950,15 +1805,13 @@

    -

    -Configuration

    +

    Configuration

    -

    -Material Colors

    +

    Material Colors

    - In the Property Browser screen for certain groups (extrude, lathe, + In the text window screen for certain groups (extrude, lathe, sweep), a palette of eight colors is displayed. This palette allows the user to choose the color of any surfaces generated by that group. @@ -1974,38 +1827,32 @@ existing surfaces in the sketch, even if the color of an existing surface no longer appears in the palette. -

    -Light Directions

    +

    Light Directions

    - The 3d part is displayed with simulated lighting, to produce the - impression of depth. There are two types of lights, directional and - ambient. The directions and intensities of these lights may be - modified according to user preference. + The 3d part is displayed with simulated lighting, to produce + the impression of depth. The directions and intensities of these + lights may be modified according to user preference.

    - Directional lights do not have a position; they have only a direction, - as if they were coming from very far away. This direction is specified - in 3 components, "right, top, front". The light with direction "1, 0, - 0" is coming from the right of the screen. The light with direction - "-1, 0, 0" is coming from the left of the screen. The light with - direction "0, 0, 1" is coming from in front of the screen. The ambient - light has no direction and acts as a fill light of uniform intensity - from all directions. + The lights do not have a position; they have only a direction, + as if they were coming from very far away. This direction is + specified in 3 components, "right, top, front". The light with + direction "1, 0, 0" is coming from the right of the screen. + The light with direction "-1, 0, 0" is coming from the left of + the screen. The light with direction "0, 0, 1" is coming from + in front of the screen.

    The intensity must lie between 0 and 1. A light with intensity - 0 has no effect, and 1 is full brightness. Lighting from ambient and - directional lights is additive. If the ambient light intensity is set - to 1 a "flat shading" effect will be achieved. + 0 has no effect, and 1 is full brightness.

    - Two directional lights are available. If only one is desired, then the - second may be disabled by setting its intensity to zero. When the part + Two lights are available. If only one is desired, then the second + may be disabled by setting its intensity to zero. When the part is rotated or translated, the lights do not move. -

    -Chord Tolerance, and Max Segments

    +

    Chord Tolerance, and Max Segments

    SolveSpace does not always represent curved edges or surfaces @@ -2021,24 +1868,17 @@ be generated, to produce a better approximation.

    - There are two chord tolerance values in the configuration screen. - The first is specified as a percent of the overall size of the - sketch and its value in length units is also calculated and shown. - This means a sketch consisting of a single circle will have very - smooth curves, while a large object with small holes may have - fewer segments because the hole is much smaller than the overall - sketch and closer in size to the chord tolerance. - -

    The second value is the "export chord tolerance" which is an - absolute value in mm. When exporting a triangle mesh for 3d printing - or g-code for machining, this value will determine how much the - resulting part can deviate from the ideal curved surfaces. - + The chord tolerance is specified in units of screen pixels. This + means that when the user zooms in on the model, a better approximation + is produced. To regenerate the model with a finer mesh, zoom in and + then choose Edit → Regenerate All. +

    - When combining NURBS surface or triangle meshes from different - groups, SovleSpace uses the chord tolerance in some calculations. - That means when a boolean operation fails, making adjustments to - the chord tolerance can "fix" the problem in some cases. + The same tolerance is used for the mesh that's displayed on + screen, and for the mesh that is used to export to a file. It + may be helpful to use a large chord tolerance (2-5 pixels) while + drawing, for fast response, and then temporarily specify a small + chord tolerance (~0.5 pixels) before exporting an STL or DXF file.

    The fineness of the mesh is also limited by the specified maximum @@ -2046,8 +1886,7 @@ be broken down into more than that number of line segments, no matter how fine the chord tolerance. -

    -Perspective Factor

    +

    Perspective Factor

    To display a 3d part on-screen, it must be projected into 2d. One @@ -2071,7 +1910,7 @@ smaller.

    - +

    @@ -2081,7 +1920,7 @@ because the eye is accustomed to seeing images with perspective.)

    - +

    @@ -2097,8 +1936,7 @@ the model is equal to one thousand pixels divided by the perspective factor. -

    -Snap Grid Spacing

    +

    Snap Grid Spacing

    This specifies the pitch of the snap grid, in inches or millimeters. By @@ -2109,8 +1947,7 @@ be snapped to grid in the same way.

    -

    -Export Scale Factor

    +

    Export Scale Factor

    Internally, SolveSpace represents lengths in millimeters. Before @@ -2128,8 +1965,7 @@ a left-handed coordinate system (so that a right-handed screw thread will become left-handed, and text would appear mirrored). -

    -Cutter Radius Offset

    +

    Cutter Radius Offset

    When exporting a 2d view or section, this option may be used to @@ -2151,8 +1987,7 @@ "curves as piecewise linear" is set to "no".

    -

    -Export Shaded 2d Triangles

    +

    Export Shaded 2d Triangles

    When exporting a view of the part, the user can export only the @@ -2164,8 +1999,7 @@ Not all export file formats support shaded triangles; currently, SVG, EPS, and PDF do, but DXF and HPGL do not. -

    -Export Curves as Piecewise Linear

    +

    Export Curves as Piecewise Linear

    A smooth curve (like a circle, or a Bezier curve) may be exported @@ -2180,8 +2014,7 @@ of importing exact curves, but almost all software will be capable of importing piecewise linear segments. -

    -Export Canvas Size

    +

    Export Canvas Size

    This specifies the canvas size for any exported 2d geometry. For example, @@ -2190,19 +2023,16 @@ one of two ways: either as a fixed size, or as a set of margins around the exported geometry. -

    -Fix White Exported Lines

    +

    Fix White Exported Lines

    By default, SolveSpace draws white lines on a black background. But most export file formats assume a white background, which means that - white lines would be illegible. By default, SolveSpace will rewrite any - white (lighter than approximately 75% gray) colors to black when - exporting into such a file format. That behavior may be disabled with - this option. + white lines would be illegible. By default, SolveSpace will rewrite + any white (or very light) colors to black when exporting into such a + file format. That behavior may be disabled with this option. -

    -Draw Triangle Back Faces in Red

    +

    Draw Triangle Back Faces in Red

    SolveSpace always works with solid shells. This means that in @@ -2216,8 +2046,7 @@ graphics card renders triangles. This setting determines whether those surfaces are discarded, or drawn highlighted in red. -

    -Check for Closed Contours

    +

    Check for Closed Contours

    Most solid operations (like extrudes and lathes) work only on closed, @@ -2232,8 +2061,7 @@ For general 2d and 3d wireframe CAD work, this behavior may not be desired. The warnings may therefore be disabled with this option. -

    -G Code Parameters

    +

    G Code Parameters

    SolveSpace is not a CAM program, but it is capable of exporting simple G code for 2d parts. By applying the correct cutter radius @@ -2250,8 +2078,7 @@

    -

    -Known Bugs and Issues

    +

    Known Bugs and Issues

    @@ -2299,5 +2126,12 @@ while drawing complicated sections.
    -EOT -); + +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/style.css b/style.css index 2fa8147..5055b44 100644 --- a/style.css +++ b/style.css @@ -175,11 +175,3 @@ table.dltab { border-collapse: collapse; margin-left: 20px; } -.anchor::before { - content:url('pics/solvespace-scalable.svg'); - display: inline-block; - margin: 0; - padding: 0; - width: 16px; - height: 16px; -} \ No newline at end of file diff --git a/tech.pl b/tech.html similarity index 52% rename from tech.pl rename to tech.html index 2bfff69..72df722 100644 --- a/tech.pl +++ b/tech.html @@ -1,12 +1,64 @@ -#!/usr/bin/perl -use TEMPL; -TEMPL::Init(); + -$TEMPL::TITLE = 'SolveSpace - Technology'; + +SolveSpace - Technology + + -TEMPL::OutputWithHeader("TECHNOLOGY: SOLVING CONSTRAINTS", < + + + + +
    + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + +
    + Technology +
    + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    + +
    +
    +
    TECHNOLOGY: SOLVING CONSTRAINTS
    +

    The core of any parametric CAD program is its geometric constraint solver. The solver starts with geometric properties of the sketch, like a line length or an angle or a tangency. Based on these properties, @@ -21,14 +73,14 @@ hundreds of unknowns.

    - +

    In SolveSpace, constraints are represented as equations in a symbolic algebra system. In general, these equations are solved numerically, by a modified Newton's method. Some special cases are handled, for any equation that can be solved by forward-substitution, -and equations that are solvable alone.

    +and equations that are soluble alone.

    If the sketch is not fully constrained, then the Jacobian is solved in a least squares sense, with each equation written in such a way as @@ -53,7 +105,14 @@ in projected forms.

    The constraint solver used in SolveSpace is available separately -as a library.

    +as a library.

    + -EOT -); +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/tutorial.pl b/tutorial.html similarity index 62% rename from tutorial.pl rename to tutorial.html index e0227cd..4dd1c99 100644 --- a/tutorial.pl +++ b/tutorial.html @@ -1,27 +1,78 @@ -#!/usr/bin/perl -use TEMPL; -TEMPL::Init(); + -$TEMPL::TITLE = 'SolveSpace - Tutorials'; -$TEMPL::SHOW_VERSION = 1; + +SolveSpace - Tutorials + + -TEMPL::OutputWithHeader("TUTORIALS", < + -

    An introductory tutorial is available, + + +

    + +
    + +
    + Examples +
    + +
    + Tutorials +
    + +
    + Features +
    + +
    + Download +
    + +
    + Reference +
    + + + +
    + Library +
    + +
    + Forum +
    + +
    + Contact +
    + +
    +
    +
    TUTORIALS (for )
    +

    + +

    An introductory tutorial is available, in which we draw the same part that is shown in the demo video. This covers most of the basic features of SolveSpace, including sketches, constraints, extrusions, and Boolean operations.



    -

    An assembly tutorial, in which we combine +

    An assembly tutorial, in which we combine multiple parts into a parametric assembly. We use constraints to define the positions and orientations of the parts within the assembly. This means that we can @@ -29,13 +80,13 @@ assembled in the desired configuration.



    -

    A tutorial on constraints. We look +

    A tutorial on constraints. We look more closely at the geometric meaning of constraints in SolveSpace, and the ways that an incorrectly-constrained sketch will fail. We constrain a simple sketch in several different ways, and use the tools @@ -44,13 +95,13 @@ projected into a workplane.



    -

    A tutorial on linkages. We use +

    A tutorial on linkages. We use geometric constraints to model a planar linkage; we then displace one of the links, and let the constraint solver calculate the resulting geometry. We use this to plot the coupler curves of the linkage, and @@ -59,13 +110,13 @@ joints.



    -

    A 2d drawing tutorial. We use SolveSpace +

    A 2d drawing tutorial. We use SolveSpace to draw a pure 2d part. So we start with a contour, and specify it using dimensions and constraints. We also use special tools to split lines and curves where they intersect, and trim them against each other, and to @@ -73,19 +124,19 @@ on the geometry, and export a human-readable dimensioned drawing.



    -$TEMPL::SEP +

    *                    *                    *    

    Thomas Knight has some additional tutorials (external site).

    -$TEMPL::SEP +

    *                    *                    *    


    And video tutorials are available for a range of topics. These tutorials were recorded using an earlier version of SolveSpace, so @@ -99,7 +150,7 @@ onerror="videoFallback(parentNode)"> - +

    @@ -117,7 +168,7 @@ onerror="videoFallback(parentNode)"> - +
    @@ -136,7 +187,7 @@ onerror="videoFallback(parentNode)"> - +
    @@ -156,7 +207,7 @@ onerror="videoFallback(parentNode)"> - +
    @@ -176,7 +227,7 @@ onerror="videoFallback(parentNode)"> - +
    @@ -197,7 +248,7 @@ onerror="videoFallback(parentNode)"> - +
    @@ -209,5 +260,12 @@
    -EOT -); + +
    + +
    +
    +© 2008-2018 SolveSpace contributors. Most recent update Nov 22 2018. +
    +
    + diff --git a/videncode.sh b/videncode.sh deleted file mode 100755 index 36ed2d3..0000000 --- a/videncode.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh -ex - -INPUT="$1" - -# Web video is an utter disaster. A fractal of incompatibility. -# Basically unusable. A very abridged version is that browsers -# effectively support only the yuv420p colorspace (whether with -# VP8 or H.264), and we have videos in the rgb colorspace, and -# in order to not lose chroma information to subsampling we have -# to upsample the video itself first. Also, half of the browsers -# supports only H.264, and a few others supports only WebM, -# so we're stuck converting and serving everything twice. - -UPSAMPLE="-vf scale=iw*2:ih*2 -pix_fmt yuv420p \ - -sws_flags full_chroma_inp+full_chroma_int+bitexact+neighbor" -WEBM="-c:v libvpx -crf:v 25" -H264="-c:v libx264 -profile:v main -preset slow -crf:v 25" - -# Some of the original WMV videos have tbr/tbn/tbc values -# that imply a bizarre 1000fps framerate, which doesn't -# do much harm with webm, but completely cripples the h264 -# encoder. Recompute the timestamps using the correct fps. - -TSFIX="-fflags +genpts -r 8" - -ffmpeg -y -i ${INPUT} ${TSFIX} ${UPSAMPLE} ${WEBM} ${INPUT%.*}.webm -ffmpeg -y -i ${INPUT} ${TSFIX} ${UPSAMPLE} ${H264} ${INPUT%.*}.mp4