Commit Graph

918 Commits (953c472897b081d0c438302f650559a429bae52b)

Author SHA1 Message Date
phkahler 6ff8db93e8 Use zOrder for selections within the same group 2020-10-31 11:58:14 -04:00
phkahler 8a3e5b4d56 Don't do numeric surface intersections if an exact curve has been copied. We don't want 2 overlapping but different sets of PWLs. 2020-10-29 14:02:57 -04:00
phkahler eadeac44f0 use VERY_NEGATIVE and VERY_POSITIVE instead of numeric values which is some cases were 1e-10 instead of -1e10 2020-10-28 13:37:54 -04:00
phkahler 6c4b075eef Increase MAX_UNDO to 100 2020-10-28 13:37:54 -04:00
ruevs 7e99ba0096 UI: Fix the Property Browser window scrollbar
- Scrolling with the scrollbar now works properly.

- Do not scroll with the mouse wheel while an edit field is active in
  the property browser.

Fixes: https://github.com/solvespace/solvespace/issues/782
2020-10-28 13:37:30 -04:00
Koen Schmeets 73bbbdef83 Travis: include libomp in macOS .app 2020-10-26 02:26:54 +01:00
ruevs 88b26aabdb Update the year in the About dialog 2020-10-25 19:16:34 -04:00
ruevs 7292c32e6f Performance: inline the Bernstein functions
This is another small profiling driven optimization.
Moving the initialization of `const double *c` as part of the definition
also helps with the generated assembler.
2020-10-25 19:16:22 -04:00
Maximilian Federle 24720a0024 Revert "CMake: use sanitizer flags for internal targets only"
This reverts commit 68b1abf77f.

The warnings are valuable and shouldn't be cast aside.
As of 8f509f1, we special case macOS and don't set -fno-sanitize-recover
to allow CI to succeed.
In the future, this could be made stricter again by only suppressing
known bugs, which ideally should also be fixed or reported upstream.
2020-10-24 17:10:47 +02:00
ruevs 7035071526 Performance optimization of the Vector class
Profiling with MSVC 2019 showed that many of the Vector methods are on
a critical path (not surprising). They are changed to be inline and
unnecessary temporaries are removed.

On the example below generate times decreased from 102s. to 64s.
At the same time the executable size shrank from 5569536	to 5150208 bytes
in release mode (with global optimizations).

This should not stop us from working on optimizing inner loops e.g. https://github.com/solvespace/solvespace/issues/759 .

[Test model](https://github.com/solvespace/solvespace/files/5414683/PrismConeNURBSNormalsTangents300.zip)
2020-10-23 20:08:43 -04:00
Maximilian Federle 68b1abf77f CMake: use sanitizer flags for internal targets only
Previously sanitizer flags were set unconditionally for
all code, including that of external libraries.
Set them only for targets in src/, tests/ and exposed/.

Unfortunately, the linker equivalent to add_compile_options,
add_link_options, is only available for CMake version >= 3.13.
So add the sanitizer flags manually to each target's linker options.
2020-10-23 19:39:36 +02:00
phkahler c674bc8fb9 Add OpenMP parallel for to SShell::CopyCurvesSplitAgainst 2020-10-23 12:53:54 -04:00
phkahler 0f1ece2b8e Resovle a huge performance regression introduced by commit ab10e38 while still fixing the NURBS issues resolved by that commit with only modest speed penalty. The performance is significantly improved by using bounding box tests on curves prior to doing complex intersection testing. 2020-10-23 12:52:27 -04:00
ruevs 0761339ec9 STEP Export: include colors and alpha
Make the color export work in KiCAD and Horison EDA which do not support
transparency.

Fixes: https://github.com/solvespace/solvespace/issues/452
https://github.com/solvespace/solvespace/pull/763
2020-10-22 09:59:35 +03:00
ruevs 32e695bfee STEP Export: include colors and alpha
The implementation may be sub-optimal, since the colour and alpha is
defined for each NURBS surface instead of on group level, but the STEP
export currently does not represent group structure at all and I am not
familiar with the format in order to change this.

Fixes: https://github.com/solvespace/solvespace/issues/452
2020-10-21 17:19:12 -04:00
phkahler ab10e38d44 Add vertexes to curve intersection list in addition to surface intersections.
Sometimes a vertex can be used to split a curve where surface intersections can't. Those unsplit curves can cause boolean failures.
2020-10-20 12:37:18 -04:00
Koen Schmeets 3af8127e8f macOS: add NSOpenGLPFADoubleBuffer to NSOpenGLPixelFormatAttribute 2020-10-20 10:59:58 -04:00
Koen Schmeets 8e7416f3fd
Travis: Build improvements and fixes (#751)
- Add OpenMP to macOS build
- Use as many cores as possible in CI
- Update travis osx image to xcode12.2
- Ignore .vscode folder
- In `.travis/sign-macos.sh`, only create keychain when `CI` variable is present
- Only run macOS deploy stage when a tag is pushed
2020-10-20 09:39:26 +02:00
phkahler b28499ea48 initial support (disabled) for keepout regions in IDF files. 2020-10-19 18:26:45 -04:00
phkahler b12bcc5889 Fix some IDF file curves. 2020-10-19 18:26:45 -04:00
Koen Schmeets 0548702043 macOS CI fixes 2020-10-19 09:36:52 -04:00
phkahler 408128a138 Avoid zero tangnet vectors on degenerate NURBS edges. Fixes #652 2020-10-18 14:54:00 -04:00
ruevs 6558cb9ebe Fix crash in solvespace-cli
`window` is a `nullptr` with guinone.cpp - avoid dereferencing it.

Fixes: https://github.com/solvespace/solvespace/issues/567
2020-10-16 17:44:58 -04:00
ruevs 3ea8ebfaf5 Win32: Fix "File|Open...", "Save" and "Save As" when a command line argument is used.
`GetSaveFileNameA` `OPENFILENAMEA` does not like UNC ( "\\\\?\\C:\\..." ) file prefixes in `lpstrFile`.
Work around it by not `Expand`-ing parameters passed on the command line too early.

The only user visible change is that "File|Open Recent" will show items as they
were passed instead of expanded to full path for example:
"..\..\NURBSTests\Intersection2.slvs"

Fixes: https://github.com/solvespace/solvespace/issues/622
2020-10-16 17:44:27 -04:00
phkahler d72eba8039 Create intersection curves from existing ones.
When a plane coinsides with a seam we need to copy that trim curve. The existing curve belongs to the original shell surfaces and an intersection is otherwise not found. Fixes #540.
2020-10-10 02:02:34 -04:00
julien581 c514ddad54 Fix for https://github.com/solvespace/solvespace/issues/248 2020-10-03 15:27:14 -04:00
phkahler c021df33c0 Fix issue 684 as whitequark suggested via WM_KEYDOWN->WMCHAR change. 2020-10-01 13:55:40 -04:00
Johannes Rehnman 3ce8c29982 Allow DXF import of 3D arcs and circles
Extrusion direction (normal) of arcs and circles were not taken into
account when importing.

- Add method for calculating a quaternion from extrusion direction
  according to DXF arbitrary axis algorithm
- Add required workplanes for arcs not on XY origin plane
- Adjust addDimRadial and addDimDiametric to include normal when
  creating associated circle request
2020-10-01 12:59:43 -04:00
phkahler 8cf9d68ecf IDF file Linking.
Can read PCB outlines and cutouts, as well as Pin and Mounting holes. A simple PPCB model sans components is added to the assembly.
2020-09-30 14:20:35 -04:00
phkahler 0a061b6f9e NFC: Performance. For step-and-repeat groups, create the copies first (in parallel) and then combine them using unions of equal size shells to reduce the total time spent on booleans. 2020-09-22 16:30:03 -04:00
phkahler d49c8a1aef add debug message showing the name of a group whose linked file can't be found. 2020-09-22 15:28:17 -04:00
phkahler 39f419e28c Flip sign of exportCanvas dx and dy. Fixes issue #523 2020-09-20 19:54:26 -04:00
phkahler 704bb4a3be Fix view centering and directions or cli thumbnail function. 2020-09-19 15:03:01 -04:00
Christoph Dittmann 34328c9756 solvespace-cli: Fix --view
This fixes issues #499. The --view option changes projUp and
projRight. For --view to affect the camera, the camera needs to be
initialized using these values.
2020-09-18 21:15:53 -04:00
phkahler 6e515b6735 Fix 699: Allow dragging linked objects in an assembly. 2020-09-17 17:55:04 -04:00
phkahler 094eff755b Fix 197 Update the state of checkboxes in menus after failed workplace activation. 2020-09-17 11:34:22 -04:00
phkahler 668fe6f493 Make the redundant constraint timeout a configuration value and add the config UI elements to edit that value. 2020-09-16 16:39:43 -04:00
phkahler 615708440f Fix #131. Prevent UI freeze by having a timeout when finding which constraints can be removed to fix jacobian. 2020-09-16 16:39:43 -04:00
phkahler e74185b639 Fix #696. Account for multiple coincident edges when looking for naked edges. 2020-09-14 12:07:17 -04:00
phkahler d8f5a8da32 Fix issue #296.
We need to recognize two consecutive bridges as a non-ear.
2020-09-08 18:54:02 -04:00
phkahler 705249627a Fix #693 issues.
This set of changes covers all triangulation errors in issue 693. A point coincident with a triangle vertex is OK and needed for bridges, but sometimes the middle point has edges cutting through the triangle that make it a non-ear. We fix that and a couple of off-by-one error (that fixes one of the test cases).
2020-09-08 18:54:02 -04:00
phkahler 0413c1b926 NFC:Triangulation - don't add zero-length bridges to avoid list. 2020-09-08 18:54:02 -04:00
phkahler b208cd8cae NFC, Performance: Use OpenMP for boolean function MakeItersectionCurvesAgainst.
This is the last long-running single-threaded part of the boolean code. On one test model this took Regenerate form 27 seconds down to 18s. The critical sections needed a name (into) because that object must not be modified while in use in different places.
2020-09-06 12:43:24 -04:00
nabijaczleweli 360b347ad7 Export backgrounds in vector files
VectorFileWriter::Background() is an empty impl, except that it writes
  * a rectangle the size of the output for EPS and PDF, and
  * a <style> element setting background-color for SVG

Ref: #525
2020-09-05 20:58:07 -04:00
nabijaczleweli 028b613f10 Add ExportBackgroundColor config to GUI and CLI 2020-09-05 20:58:07 -04:00
phkahler d3da2c8b22 Performance: Don't call std::inplace_merge for IdList::AddAndAssignID() via Add() because it is redundant. 2020-08-29 15:34:48 -04:00
phkahler 6894b0c9c3 NFC: remove a critical section, runs faster. 2020-08-19 17:55:42 -04:00
phkahler d974615d0e NFC replace 2 nested loops with 1 loop and a lookup for speed improvement. 2020-08-19 17:55:42 -04:00
phkahler bc4924ae47 Don't duplicate points when connecting contours with zero length bridge. Fixes #303 2020-08-14 16:39:09 -04:00
phkahler 04b332dfd0 Ratpoly - Less noise in terminal. Comment out expected dbg print and try harder to converge. 2020-08-13 16:56:18 -04:00