GithubHelp home page GithubHelp logo

solvespace / solvespace Goto Github PK

View Code? Open in Web Editor NEW
3.0K 113.0 466.0 21.24 MB

Parametric 2d/3d CAD

Home Page: http://solvespace.com/

License: GNU General Public License v3.0

C 2.60% C++ 86.62% CMake 2.55% Objective-C++ 2.40% Shell 0.03% JavaScript 2.75% GLSL 0.42% Visual Basic .NET 2.16% HTML 0.19% CSS 0.28%
cad parametric

solvespace's Introduction

SolveSpace

SolveSpace Logo

Build Status solvespace solvespace

This repository contains the source code of SolveSpace, a parametric 2d/3d CAD.

Community

The official SolveSpace website has tutorials, reference manual and a forum; there is also an official IRC channel #solvespace at web.libera.chat.

Installation

Via Official Packages

Official release packages for macOS (>=10.6 64-bit) and Windows (>=Vista 32-bit) are available via GitHub releases. These packages are automatically built by the SolveSpace maintainers for each stable release.

Via Flathub

Official releases can be installed as a Flatpak from Flathub.

Get SolveSpace from Flathub

These should work on any Linux distribution that supports Flatpak.

Via Snap Store

Official releases can be installed from the stable channel.

Builds from master are automatically released to the edge channel in the Snap Store. Those packages contain the latest improvements, but receive less testing than release builds.

Get it from the Snap Store

Or install from a terminal:

# for the latest stable release:
snap install solvespace

# for the bleeding edge builds from master:
snap install solvespace --edge

Via automated edge builds

โš ๏ธ Edge builds might be unstable or contain severe bugs! They are intended for experienced users to test new features or verify bugfixes.

Cutting edge builds from the latest master commit are available as zip archives from the following links:

Extract the downloaded archive and install or execute the contained file as is appropriate for your platform.

Via source code

Irrespective of the OS used, before building, check out the project and the necessary submodules:

git clone https://github.com/solvespace/solvespace
cd solvespace
git submodule update --init

You will need git. See the platform specific instructions below to install it.

Building on Linux

Building for Linux

You will need the usual build tools, CMake, zlib, libpng, cairo, freetype. To build the GUI, you will need fontconfig, gtkmm 3.0 (version 3.16 or later), pangomm 1.4, OpenGL and OpenGL GLU, and optionally, the Space Navigator client library. On a Debian derivative (e.g. Ubuntu) these can be installed with:

sudo apt install git build-essential cmake zlib1g-dev libpng-dev \
            libcairo2-dev libfreetype6-dev libjson-c-dev \
            libfontconfig1-dev libgtkmm-3.0-dev libpangomm-1.4-dev \
            libgl-dev libglu-dev libspnav-dev

On a RedHat derivative (e.g. Fedora) the dependencies can be installed with:

sudo dnf install git gcc-c++ cmake zlib-devel libpng-devel \
            cairo-devel freetype-devel json-c-devel \
            fontconfig-devel gtkmm30-devel pangomm-devel \
            mesa-libGL-devel mesa-libGLU-devel libspnav-devel

Before building, check out the project and the necessary submodules.

After that, build SolveSpace as following:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=ON
make

# Optionally
sudo make install

Link Time Optimization is supported by adding -DENABLE_LTO=ON to cmake at the expense of longer build time.

The graphical interface is built as build/bin/solvespace, and the command-line interface is built as build/bin/solvespace-cli. It is possible to build only the command-line interface by passing the -DENABLE_GUI=OFF flag to the cmake invocation.

Building for Windows

Ubuntu will require 20.04 or above. Cross-compiling with WSL is also confirmed to work.

You will need the usual build tools, CMake, and a Windows cross-compiler. On a Debian derivative (e.g. Ubuntu) these can be installed with:

apt-get install git build-essential cmake mingw-w64

Before building, check out the project and the necessary submodules.

Build 64-bit SolveSpace with the following:

mkdir build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-mingw64.cmake \
            -DCMAKE_BUILD_TYPE=Release
make

The graphical interface is built as build/bin/solvespace.exe, and the command-line interface is built as build/bin/solvespace-cli.exe.

Space Navigator support will not be available.

Building for web (very experimental)

Please note that this port contains many critical bugs and unimplemented core functions.

You will need the usual build tools, cmake and Emscripten. On a Debian derivative (e.g. Ubuntu) dependencies other than Emscripten can be installed with:

apt-get install git build-essential cmake

First, install and prepare emsdk:

git clone https://github.com/emscripten-core/emsdk
cd emsdk
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
cd ..

Before building, check out the project and the necessary submodules.

After that, build SolveSpace as following:

mkdir build
cd build
emcmake cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_LTO="ON" -DENABLE_TESTS="OFF" -DENABLE_CLI="OFF" -DENABLE_COVERAGE="OFF"
make

The graphical interface is built as multiple files in the build/bin directory with names starting with solvespace. It can be run locally with emrun build/bin/solvespace.html.

The command-line interface is not available.

Building on macOS

You will need git, XCode tools, CMake and libomp. Git, CMake and libomp can be installed via Homebrew:

brew install git cmake libomp

XCode has to be installed via AppStore or the Apple website; it requires a free Apple ID.

Before building, check out the project and the necessary submodules.

After that, build SolveSpace as following:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DENABLE_OPENMP=ON
make

Link Time Optimization is supported by adding -DENABLE_LTO=ON to cmake at the expense of longer build time.

Alternatively, generate an XCode project, open it, and build the "Release" scheme:

mkdir build
cd build
cmake .. -G Xcode

The application is built in build/bin/SolveSpace.app, the graphical interface executable is build/bin/SolveSpace.app/Contents/MacOS/SolveSpace, and the command-line interface executable is build/bin/SolveSpace.app/Contents/MacOS/solvespace-cli.

Building on OpenBSD

You will need git, cmake, libexecinfo, libpng, gtk3mm and pangomm. These can be installed from the ports tree:

pkg_add -U git cmake libexecinfo png json-c gtk3mm pangomm

Before building, check out the project and the necessary submodules.

After that, build SolveSpace as following:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
sudo make install

Unfortunately, on OpenBSD, the produced executables are not filesystem location independent and must be installed before use. By default, the graphical interface is installed to /usr/local/bin/solvespace, and the command-line interface is built as /usr/local/bin/solvespace-cli. It is possible to build only the command-line interface by passing the -DENABLE_GUI=OFF flag to the cmake invocation.

Building on Windows

You will need git, cmake and a C++ compiler (either Visual C++ or MinGW). If using Visual C++, Visual Studio 2015 or later is required. If gawk is in your path be sure it is a proper Windows port that can handle CL LF line endings. If not CMake may fail in libpng due to some awk scripts - issue #1228.

Before building, check out the project and the necessary submodules.

Building with Visual Studio IDE

Create a directory build in the source tree and point cmake-gui to the source tree and that directory. Press "Configure" and "Generate", then open build\solvespace.sln with Visual C++ and build it.

Building with Visual Studio in a command prompt

First, ensure that git and cl (the Visual C++ compiler driver) are in your %PATH%; the latter is usually done by invoking vcvarsall.bat from your Visual Studio install. Then, run the following in cmd or PowerShell:

mkdir build
cd build
cmake .. -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release
nmake

Building with MinGW

It is also possible to build SolveSpace using MinGW, though Space Navigator support will be disabled.

First, ensure that git and gcc are in your $PATH. Then, run the following in bash:

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make

Contributing

See the guide for contributors for the best way to file issues, contribute code, and debug SolveSpace.

License

SolveSpace is distributed under the terms of the GPL v3 or later.

solvespace's People

Contributors

77maxikov avatar a-downing avatar bcmpinc avatar cr1901 avatar draconis-25 avatar dustinhartlyn avatar evil-spirit avatar iskunk avatar jwesthues avatar luzpaz avatar maxipaille avatar nabijaczleweli avatar parport0 avatar phkahler avatar pjanx avatar ppd avatar progval avatar q3k avatar rlutz avatar robnee avatar rpavlik avatar ruevs avatar rurban avatar timmmm avatar tinywrkb avatar tomsci avatar verylowfreq avatar vespakoen avatar whitequark avatar xzcvczx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

solvespace's Issues

Add "intersection" boolean operation for combining solids

Add this types for logic how solid model combine.

  • "intersect" - make visible only those region where solid models intersect
  • "XOR" (exclusive or) - make visible only those regions of solid models that not intersect (inverted to "intersect")

Allow move enhancment from previouse group if it not hard constrained

Currently, if in new plane make connecting between line end from current and point (that not constrained in any manner) from previouse group its impossible drag line from current group.
But if select end of line, that constrained to point from previouse group, its possible move it.

Use case will publish soon with screenshot.

Generalized constraint creation

Would be useful to display a list of valid constraint types for the selected objects.

Desired workflow for creating a constraint.

Click "Constraint" command --> Select items to be constrained --> Select from a list in the "property browser window" of possible valid constraints.

As more items get selected the list would get smaller. For example I could select 2 lines. It would show all the constraints I could do with 2 lines. As soon as I click on a point. It shows things I could do with 2 lines and a point.

Dependency path problems on Mac OS X

I have all required dependencies installed using MacPorts, which places them in opt/local/.... I also have the Mono.framework installed on my system, which includes libpng and freetype.

After running cmake, it is in a strange state where it uses the headers from Mono.framework and the libraries from /opt/local/lib, causing run-time errors with libpng because of mismatching versions.

The only way I have found to fix this is manually editing build/CMakeCache.txt after running cmake and replacing all occurrences of:

/Library/Frameworks/Mono.framework/Headers

with

/opt/local/include

I then had to run cmake again to recreate the makefiles. Now, the resulting binary works fine.

I'm not sure where exactly the problem is, or how it could be fixed, but I guess this is the best place to document my solution if anyone stumbles upon the same problem in the future.

Export of Bill of Materials

Produce a list of all instances of parts in an assembly.

I would like like the capability of producing a list of instances of parts in an assembly.

For example if I have an assembly of a plate and a screw that has been patterned 4 times I would like to see a list like the following.

Parts:
plate.slvs
screw.slvs
screw.slvs
screw.slvs
screw.slvs

It would be even better if it was possible to assign a user defined attribute to the instances of the parts such as a call out number or part number for raw stock. And be able to select the attributes to be output in the report.

Parts, call out, part number:
plate.slvs, 1, Steel-0123
screw.slvs, 2, *
screw.slvs, 2, *
screw.slvs, 2, *
screw.slvs, 2, *

SVG export dimensions seem slighly off

Exporting something to a SVG file one can specify bounds manually (width / height / offset x / offset y) - however, the numeric values that appear in the SVG output as 'width', 'height' and 'bounding box' coordinates are always one unit higher. For example, inputting '100 by 50.8' results in '101 by 51.8' appearing in the SVG file (notably, the input '50.8' gets immediately 'rounded' to '50.799999' by SolveSpace, but that is probably completely unrelated).

solvespace fails to build on OS X 10.12

$ cmake .. -DENABLE_TESTS=OFF
-- The C compiler identification is AppleClang 7.0.2.7000181
-- The CXX compiler identification is AppleClang 7.0.2.7000181
-- Check for working C compiler: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenGL: /System/Library/Frameworks/OpenGL.framework
-- Using in-tree libdxfrw
-- Found ZLIB: /usr/lib/libz.dylib (found version "1.2.8")
-- Found PNG: /opt/local/lib/libpng.dylib (found version "1.6.24")
-- Found Freetype: /opt/local/lib/libfreetype.dylib (found version "2.6.5")
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/moeller/code/solvespace/build

$ make
[ 13%] Built target dxfrw
[ 43%] Built target solvespace_cad
[ 85%] Built target resources
[ 85%] Building CXX object src/CMakeFiles/solvespace.dir/platform/cocoamain.mm.o
In file included from /Users/moeller/code/solvespace/src/platform/cocoamain.mm:11:
In file included from /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSArray.h:5:
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:44:12: error: unknown property attribute 'class'
@property (class, readonly) BOOL supportsSecureCoding;
           ^
In file included from /Users/moeller/code/solvespace/src/platform/cocoamain.mm:11:
In file included from /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:12:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:6:
/System/Library/Frameworks/Foundation.framework/Headers/NSString.h:262:12: error: unknown property attribute 'class'
@property (class, readonly) const NSStringEncoding *availableStringEncodings;
           ^
/System/Library/Frameworks/Foundation.framework/Headers/NSString.h:269:12: error: unknown property attribute 'class'
@property (class, readonly) NSStringEncoding defaultCStringEncoding;    // Should be rarely used
           ^
In file included from /Users/moeller/code/solvespace/src/platform/cocoamain.mm:11:
In file included from /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:12:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:11:
/System/Library/Frameworks/Foundation.framework/Headers/NSNotification.h:45:12: error: unknown property attribute 'class'
@property (class, readonly, strong) NSNotificationCenter *defaultCenter;
           ^
In file included from /Users/moeller/code/solvespace/src/platform/cocoamain.mm:11:
In file included from /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:12:
/System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:33:12: error: unknown property attribute 'class'
@property (class, readonly, strong) NSBundle *mainBundle;
           ^
/System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:46:12: error: unknown property attribute 'class'
@property (class, readonly, copy) NSArray<NSBundle *> *allBundles;
           ^
/System/Library/Frameworks/Foundation.framework/Headers/NSBundle.h:47:12: error: unknown property attribute 'class'
@property (class, readonly, copy) NSArray<NSBundle *> *allFrameworks;
           ^
In file included from /Users/moeller/code/solvespace/src/platform/cocoamain.mm:11:
In file included from /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:14:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSCalendar.h:7:
/System/Library/Frameworks/Foundation.framework/Headers/NSDate.h:46:12: error: unknown property attribute 'class'
@property (class, readonly) NSTimeInterval timeIntervalSinceReferenceDate;
           ^
/System/Library/Frameworks/Foundation.framework/Headers/NSDate.h:60:12: error: unknown property attribute 'class'
@property (class, readonly, copy) NSDate *distantFuture;
           ^
/System/Library/Frameworks/Foundation.framework/Headers/NSDate.h:61:12: error: unknown property attribute 'class'
@property (class, readonly, copy) NSDate *distantPast;
           ^
In file included from /Users/moeller/code/solvespace/src/platform/cocoamain.mm:11:
In file included from /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:14:
/System/Library/Frameworks/Foundation.framework/Headers/NSCalendar.h:108:12: error: unknown property attribute 'class'
@property (class, readonly, copy) NSCalendar *currentCalendar;                                  // user's preferred calendar
           ^
/System/Library/Frameworks/Foundation.framework/Headers/NSCalendar.h:109:12: error: unknown property attribute 'class'
@property (class, readonly, strong) NSCalendar *autoupdatingCurrentCalendar NS_AVAILABLE(10_5, 2_0); // tracks changes to user's preferr...
           ^
In file included from /Users/moeller/code/solvespace/src/platform/cocoamain.mm:11:
In file included from /System/Library/Frameworks/AppKit.framework/Headers/AppKit.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:15:
/System/Library/Frameworks/Foundation.framework/Headers/NSCharacterSet.h:21:22: error: unknown property attribute 'class'
@property (readonly, class, copy) NSCharacterSet *controlCharacterSet;
                     ^
/System/Library/Frameworks/Foundation.framework/Headers/NSCharacterSet.h:22:22: error: unknown property attribute 'class'
@property (readonly, class, copy) NSCharacterSet *whitespaceCharacterSet;
                     ^
/System/Library/Frameworks/Foundation.framework/Headers/NSCharacterSet.h:23:22: error: unknown property attribute 'class'
@property (readonly, class, copy) NSCharacterSet *whitespaceAndNewlineCharacterSet;
                     ^
/System/Library/Frameworks/Foundation.framework/Headers/NSCharacterSet.h:24:22: error: unknown property attribute 'class'
@property (readonly, class, copy) NSCharacterSet *decimalDigitCharacterSet;
                     ^
/System/Library/Frameworks/Foundation.framework/Headers/NSCharacterSet.h:25:22: error: unknown property attribute 'class'
@property (readonly, class, copy) NSCharacterSet *letterCharacterSet;
                     ^
/System/Library/Frameworks/Foundation.framework/Headers/NSCharacterSet.h:26:22: error: unknown property attribute 'class'
@property (readonly, class, copy) NSCharacterSet *lowercaseLetterCharacterSet;
                     ^
/System/Library/Frameworks/Foundation.framework/Headers/NSCharacterSet.h:27:22: error: unknown property attribute 'class'
@property (readonly, class, copy) NSCharacterSet *uppercaseLetterCharacterSet;
                     ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [src/CMakeFiles/solvespace.dir/platform/cocoamain.mm.o] Error 1
make[1]: *** [src/CMakeFiles/solvespace.dir/all] Error 2
make: *** [all] Error 2

Can't see files with uppercase extension names

Currently SolveSpace not see supported file formats in filedialogs if their extension name include uppercase letters. For example, if in one folder there are "draft1.slvs", "draft2.SLVS", "draft3.SlvS", "draft.SLVs" program can see only those that are with ".slvs" (lowercase) extension name.
Same problem for all other supported formats in all file choosing dialogs.

P.S.: As I know on Linux its possible hold in one folder files like "drawing.DXF" and "drawing.dxf", but on Windows its impossible. So, maybe its only Linux-related bug.

My platform: LinuxMint 17.3 XFCE
Program version: 2.1 (release)

Defining PMI views and using them in Three.js export

I would like to be able to define views with in a part each with there own zoom and orientation captured. Also would like to be able to create reference dimensions against each of these views that would not appear in the other views.

Would allow for 3d disclosure of information contained with in the file.

OSX build fails in a fresh install

Freshly cloned the repo, precisely followed the instructions for OSX build in the README.md, got this far:

[ 85%] Copying resource threejs/hammer-2.0.8.js.gz [ 85%] Copying resource threejs/SolveSpaceControls.js [ 85%] Built target resources src/CMakeFiles/solvespace.dir/build.make:286: *** missing separator. Stop. make[1]: *** [src/CMakeFiles/solvespace.dir/all] Error 2 make: *** [all] Error 2

build.make

Add properties in exported PDF file

I propose add small addition to PDF exporter, that can add some extra info in PDF file properties.
For example, it would be usefull add in 'Keywords' property info about exported scale like Scale 1:10 or M 1:72.
Also it would be usefull add info about chord tolerance or some other

Hi, copy transformed fixes

I try some code to fix the mirror sketch by copy transfformed and set scale -1.

So it originally fail to mirrored sketch that have constraint.

the constraint need to be scaled to, this is what i add after line 205 clipboard.cpp

if (c.type == ConstraintBase::Type::PT_LINE_DISTANCE) {
        if(scale < 0) {
                c.valA *= -1;
        }
        c.valA *= fabs(scale);
}

I have test , and looks like it work, although it will introduce unsolvable constraint, because some constraint cannot be negative * fixes... limiting the PT_LINE only will eliminate the unsolvable constraint

thx for the great CAD software.
Ryan widi

Mac OS X: Occasional SIGSEGV on mouse (Magic Trackpad) move

Process:               solvespace [30608]
Path:                  /Applications/solvespace.app/Contents/MacOS/solvespace
Identifier:            solvespace
Version:               2.1 (2.1)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           solvespace [30608]
User ID:               502

Date/Time:             2016-05-29 00:24:12.402 +0100
OS Version:            Mac OS X 10.11.5 (15F34)
Report Version:        11
Anonymous UUID:        77A06C71-7219-FFF3-7683-72B79C8D32EE

Sleep/Wake UUID:       9B50071F-8246-4CC9-B847-AF35F9AB8A65

Time Awake Since Boot: 140000 seconds
Time Since Wake:       2000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000002000000020
Exception Note:        EXC_CORPSE_NOTIFY

VM Regions Near 0x2000000020:
    CoreAnimation          000000098dd22000-00000009913a1000 [ 54.5M] rw-/rwx SM=PRV  
--> 
    STACK GUARD            0000700000083000-0000700000084000 [    4K] ---/rwx SM=NUL  stack guard for thread 1

Global Trace Buffer (reverse chronological seconds):
464.718595   libextension.dylib         0x00007fff91303533 tearing down extension request for pid 30645

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   ???                             0x0000002000000020 0 + 137438953504
1   solvespace                      0x000000010a460376 SolveSpace::TextWindow::MouseEvent(bool, bool, double, double) + 566
2   solvespace                      0x000000010a3ddd44 -[TextWindowView mouseMoved:] + 100
3   com.apple.AppKit                0x00007fff937131e4 -[NSTrackingArea mouseMoved:] + 152
4   com.apple.AppKit                0x00007fff93c99bd1 -[NSWindow _handleMouseMovedEvent:] + 266
5   com.apple.AppKit                0x00007fff93c9ab15 -[NSWindow _reallySendEvent:isDelayedEvent:] + 2108
6   com.apple.AppKit                0x00007fff936d9539 -[NSWindow sendEvent:] + 517
7   com.apple.AppKit                0x00007fff936594db -[NSApplication sendEvent:] + 1167
8   com.apple.AppKit                0x00007fff934c0df2 -[NSApplication run] + 796
9   solvespace                      0x000000010a3df458 main + 296
10  solvespace                      0x000000010a3c2e54 start + 52

Lathe difference broken

Using Group rotating on active sketch (Shift+L) together with using solid model as difference seem to be broken.

Way to reproduce:

  1. Extrude a rectangle to a box.
  2. Sketch e.g. a circle on one of the box sides.
  3. Group rotate circle sketch (Shift+L) and use difference.

I'm using SolveSpace version 2.1~dce90646 on Linux Mint 17.3.

failed lathe
failed lathe.slvs.zip

BTW: Thanks for the effort to provide a free and usable 3D CAD program for Linux (too). The best alternative, OpenSCAD, only works for some use cases. Truly appreciated.

Coincident vs distance = 0

I've noticed that in some cases, coincident constraint on points doesn't work whereas setting distance to 0 does... but only before the first regeneration. This looks like a bug.

The case where I most often encounter this is setting difference extrusion depth. This is actually very tricky to do without overconstraining the sketch if you want to make it using constraints and not just drag and leave it wherever.

Add a better explanation on how to use the three.js html export

Currently you have to either scroll through the 46k line html file and notice that there are multiple js libraries, or read someone else's embedded code to know how to embed just the exported js in a page.

Some options that I think would help explain this:

  • A comment at the top of the html file either stating that there are three libraries that need to be included if one wishes to directly embed the js (three.js, hammer.js, and SolveSpaceControls.js), or explain that it should be embedded as an iframe
  • An archived export that contains the necessary javascript files separately + a much smaller html file
  • A page on the website that explains how to use the different three.js exports (how to directly embed the .js only export, what to do with the html export, etc)

Single window UI

Make UI look like 'single window' by merge "Property Browser" inside main window UI.

Crash when using symmetric contraint

Easily reproduced by as:

  • Create two circles
  • Select the center points
  • Setup symmetric constraint

Here follows a backtrace for this crash:

Program received signal SIGSEGV, Segmentation fault.
0x00000000005b5aa9 in SolveSpace::Constraint::MenuConstrain (id=<incomplete type>)
    at /home/henrik/Development/upstream/solvespace/src/constraint.cpp:373
373                 c.entityA = gs.entity[0];
Missing separate debuginfos, use: dnf debuginfo-install atk-2.18.0-1.fc23.x86_64 atkmm-2.24.1-1.fc23.x86_64 bzip2-libs-1.0.6-19.fc23.x86_64 cairo-1.14.2-2.fc23.x86_64 cairomm-1.12.0-1.fc23.x86_64 expat-2.1.1-2.fc23.x86_64 fontconfig-2.11.94-5.fc23.x86_64 freetype-2.6.0-3.fc23.x86_64 gdk-pixbuf2-2.32.3-1.fc23.x86_64 glib2-2.46.2-2.fc23.x86_64 glibmm24-2.46.2-1.fc23.x86_64 graphite2-1.3.6-1.fc23.x86_64 gtk2-2.24.30-1.fc23.x86_64 gtkmm24-2.24.4-7.fc23.x86_64 gtk-murrine-engine-0.98.2-10.fc23.x86_64 harfbuzz-1.0.6-1.fc23.x86_64 json-c-0.12-6.fc23.x86_64 libdatrie-0.2.8-6.fc23.x86_64 libffi-3.1-8.fc23.x86_64 libgcc-5.3.1-6.fc23.x86_64 libpng-1.6.23-1.fc23.x86_64 libselinux-2.4-4.fc23.x86_64 libsigc++20-2.6.2-1.fc23.x86_64 libstdc++-5.3.1-6.fc23.x86_64 libthai-0.1.21-2.fc23.x86_64 libX11-1.6.3-2.fc23.x86_64 libXau-1.0.8-5.fc23.x86_64 libxcb-1.11.1-1.fc23.x86_64 libXcomposite-0.4.4-7.fc23.x86_64 libXcursor-1.1.14-4.fc23.x86_64 libXdamage-1.1.4-7.fc23.x86_64 libXext-1.3.3-3.fc23.x86_64 libXfixes-5.0.1-5.fc23.x86_64 libXi-1.7.6-1.fc23.x86_64 libXinerama-1.1.3-5.fc23.x86_64 libXrandr-1.5.0-2.fc23.x86_64 libXrender-0.9.9-2.fc23.x86_64 mesa-libGLU-9.0.0-9.fc23.x86_64 pango-1.38.1-1.fc23.x86_64 pangomm-2.38.1-1.fc23.x86_64 pcre-8.39-2.fc23.x86_64 pixman-0.34.0-1.fc23.x86_64 zlib-1.2.8-9.fc23.x86_64
(gdb) bt
#0  0x00000000005b5aa9 in SolveSpace::Constraint::MenuConstrain(SolveSpace::Command) (id=<incomplete type>)
    at /home/henrik/Development/upstream/solvespace/src/constraint.cpp:373
#1  0x00000000005a7e89 in SolveSpace::MainMenuItem<Gtk::MenuItem>::on_activate() (this=0xfcc0b0)
    at /home/henrik/Development/upstream/solvespace/src/platform/gtkmain.cpp:935
#2  0x00007ffff753c910 in Gtk::MenuItem_Class::activate_callback(_GtkMenuItem*) () at /lib64/libgtkmm-2.4.so.1
#3  0x00007ffff54a69d4 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
#4  0x00007ffff54c12bd in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#5  0x00007ffff54c18ff in g_signal_emit () at /lib64/libgobject-2.0.so.0
#6  0x00007ffff6c38bdc in closure_accel_activate () at /lib64/libgtk-x11-2.0.so.0
#7  0x00007ffff54a67a5 in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#8  0x00007ffff54b8851 in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0
#9  0x00007ffff54c1122 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#10 0x00007ffff54c18ff in g_signal_emit () at /lib64/libgobject-2.0.so.0
#11 0x00007ffff6a328af in gtk_accel_group_activate () at /lib64/libgtk-x11-2.0.so.0
#12 0x00007ffff6a33d0d in gtk_accel_groups_activate () at /lib64/libgtk-x11-2.0.so.0
#13 0x00007ffff6c52ce1 in gtk_window_activate_key () at /lib64/libgtk-x11-2.0.so.0
#14 0x00007ffff6c52d78 in gtk_window_key_press_event () at /lib64/libgtk-x11-2.0.so.0
#15 0x00007ffff759e904 in Gtk::Widget::on_key_press_event(_GdkEventKey*) () at /lib64/libgtkmm-2.4.so.1
#16 0x000000000059cc49 in SolveSpace::GraphicsWindowGtk::on_key_press_event(_GdkEventKey*) (this=0xe59300, event=0x1013d90)
    at /home/henrik/Development/upstream/solvespace/src/platform/gtkmain.cpp:698
#17 0x00007ffff75a0924 in Gtk::Widget_Class::key_press_event_callback(_GtkWidget*, _GdkEventKey*) () at /lib64/libgtkmm-2.4.so.1
#18 0x00007ffff6b0a75d in _gtk_marshal_BOOLEAN__BOXED () at /lib64/libgtk-x11-2.0.so.0
#19 0x00007ffff54a67a5 in g_closure_invoke () at /lib64/libgobject-2.0.so.0
#20 0x00007ffff54b8dfe in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0
#21 0x00007ffff54c1122 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
#22 0x00007ffff54c18ff in g_signal_emit () at /lib64/libgobject-2.0.so.0
#23 0x00007ffff6c3a79c in gtk_widget_event_internal () at /lib64/libgtk-x11-2.0.so.0
#24 0x00007ffff6b08b27 in gtk_propagate_event () at /lib64/libgtk-x11-2.0.so.0
#25 0x00007ffff6b08e0b in gtk_main_do_event () at /lib64/libgtk-x11-2.0.so.0
#26 0x00007ffff651186c in gdk_event_dispatch () at /lib64/libgdk-x11-2.0.so.0
#27 0x00007ffff1f83e5a in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#28 0x00007ffff1f841f0 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#29 0x00007ffff1f84512 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#30 0x00007ffff6b07e57 in gtk_main () at /lib64/libgtk-x11-2.0.so.0
#31 0x00007ffff753a9cf in Gtk::Main::run(Gtk::Window&) () at /lib64/libgtkmm-2.4.so.1
#32 0x000000000059a7d6 in main(int, char**) (argc=1, argv=0x7fffffffdcf8)
    at /home/henrik/Development/upstream/solvespace/src/platform/gtkmain.cpp:1668
(gdb) 

SIGABRT when exporting DXF

Process:               solvespace [80710]
Path:                  /Applications/solvespace.app/Contents/MacOS/solvespace
Identifier:            solvespace
Version:               3.0 (3.0~e0283b2d)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           solvespace [80710]
User ID:               501

Date/Time:             2016-06-22 19:05:55.643 +0300
OS Version:            Mac OS X 10.11.5 (15F34)
Report Version:        11
Anonymous UUID:        D5F1B9B3-8243-2CC6-6E35-3EEC052C8A6A

Sleep/Wake UUID:       FE8B54CA-06C8-4F55-8C53-B4081747805F

Time Awake Since Boot: 1100000 seconds
Time Since Wake:       29000 seconds

System Integrity Protection: disabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
abort() called

Global Trace Buffer (reverse chronological seconds):
18446744028.618950 libextension.dylib           0x00007fff9903b533 tearing down extension request for pid 80711
18446744050.065845 libextension.dylib           0x00007fff9903b533 tearing down extension request for pid 80711
18446744055.060570 libextension.dylib           0x00007fff9903b533 tearing down extension request for pid 80711

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x00007fff8dfc3f06 __pthread_kill + 10
1   libsystem_pthread.dylib         0x00007fff8890b4ec pthread_kill + 90
2   libsystem_c.dylib               0x00007fff9231f6e7 abort + 129
3   solvespace                      0x0000000106384973 SolveSpace::assert_failure(char const*, unsigned int, char const*, char const*, char const*) + 371
4   solvespace                      0x00000001063e60b4 DxfWriteInterface::writeLTypes() + 9380
5   solvespace                      0x000000010664dfa5 dxfRW::writeTables() + 10901
6   solvespace                      0x000000010664a62d dxfRW::write(DRW_Interface*, DRW::Version, bool) + 5421
7   solvespace                      0x00000001063da5bc SolveSpace::DxfFileWriter::FinishAndCloseFile() + 396
8   solvespace                      0x00000001063d38ba SolveSpace::VectorFileWriter::OutputLinesAndMesh(SolveSpace::SBezierLoopSetSet*, SolveSpace::SMesh*) + 1914
9   solvespace                      0x00000001063d25c2 SolveSpace::SolveSpaceUI::ExportLinesAndMesh(SolveSpace::SEdgeList*, SolveSpace::SBezierList*, SolveSpace::SMesh*, SolveSpace::Vector, SolveSpace::Vector, SolveSpace::Vector, SolveSpace::Vector, double, SolveSpace::VectorFileWriter*) + 11346
10  solvespace                      0x00000001063d2de1 SolveSpace::SolveSpaceUI::ExportViewOrWireframeTo(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) + 1985
11  solvespace                      0x00000001064c01d2 SolveSpace::SolveSpaceUI::MenuFile(SolveSpace::Command) + 3026
12  solvespace                      0x000000010638a54c +[MainMenuResponder handleStatic:] + 140
13  libsystem_trace.dylib           0x00007fff8c23b07a _os_activity_initiate + 75
14  com.apple.AppKit                0x00007fff82fdcdbd -[NSApplication sendAction:to:from:] + 460
15  com.apple.AppKit                0x00007fff82fdcb57 -[NSMenuItem _corePerformAction] + 336
16  com.apple.AppKit                0x00007fff82fdc8b7 -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 114
17  libsystem_trace.dylib           0x00007fff8c23b07a _os_activity_initiate + 75
18  com.apple.AppKit                0x00007fff8306ee54 -[NSMenu performActionForItemAtIndex:] + 131
19  com.apple.AppKit                0x00007fff8306edc7 -[NSMenu _internalPerformActionForItemAtIndex:] + 35
20  com.apple.AppKit                0x00007fff8306ec1f -[NSCarbonMenuImpl _carbonCommandProcessEvent:handlerCallRef:] + 107
21  com.apple.AppKit                0x00007fff82f13fd9 NSSLMMenuEventHandler + 708
22  com.apple.HIToolbox             0x00007fff935807be DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1231
23  com.apple.HIToolbox             0x00007fff9357fc48 SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 404
24  com.apple.HIToolbox             0x00007fff935959e6 SendEventToEventTarget + 40
25  com.apple.HIToolbox             0x00007fff935df99a SendHICommandEvent(unsigned int, HICommand const*, unsigned int, unsigned int, unsigned char, void const*, OpaqueEventTargetRef*, OpaqueEventTargetRef*, OpaqueEventRef**) + 411
26  com.apple.HIToolbox             0x00007fff9360ad5b SendMenuCommandWithContextAndModifiers + 59
27  com.apple.HIToolbox             0x00007fff9360ad0c SendMenuItemSelectedEvent + 188
28  com.apple.HIToolbox             0x00007fff9360abe8 FinishMenuSelection(SelectionData*, MenuResult*, MenuResult*) + 96
29  com.apple.HIToolbox             0x00007fff9360b596 MenuSelectCore(MenuData*, Point, double, unsigned int, OpaqueMenuRef**, unsigned short*) + 711
30  com.apple.HIToolbox             0x00007fff9360b230 _HandleMenuSelection2 + 460
31  com.apple.AppKit                0x00007fff82eff0fa _NSHandleCarbonMenuEvent + 277
32  com.apple.AppKit                0x00007fff82d7413d _DPSNextEvent + 1906
33  com.apple.AppKit                0x00007fff82d73226 -[NSApplication _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 454
34  com.apple.AppKit                0x00007fff82d67d80 -[NSApplication run] + 682
35  solvespace                      0x0000000106391bf5 main + 437
36  libdyld.dylib                   0x00007fff887ef5ad start + 1

Export mesh to AC3D (for assembled models)

Allow export triangle mesh to *.AC (AC3D) file format specially for assembled models.

AC3D format very simple and very powerfull especially for models with parented elements. It will be usefull for export assembled models ready for animating in Blender.

REFERENCES:

Segfault on Fedora 24

I managed to compile and install on Fedora 24 with the following commands:

sudo dnf install gcc gcc-c++ libpng zlib json-c-devel fontconfig freetype \
    gtkmm24-devel pangomm-devel mesa-libGL-devel mesa-libGLU-devel cmake
git clone https://github.com/solvespace/solvespace
cd solvespace
git submodule update --init extlib/libdxfrw
mkdir build
cd build
cmake .. -DENABLE_TESTS=OFF
make
sudo make install

However, now when I run solvespace, all I get is the following:

realpath(/usr/local/bin/../res): No such file or directory
json_object_from_file: error opening file /home/smaddox/.config/solvespace/settings.json: No such file or directory
SolveSpace!

Segmentation fault (core dumped)

If there's any more information I can provide, please let me know.

Show standart data point in "g001-#references"

Currently standart point (at 0.0, 0.0, 0.0) not listed in group "g001-#references", but when select this point directly then in property browser can see string IN GROUP g001-#references

Please, fix it and show this point as other points listed in next groups.

Version 2.1 fails rank test on jansen-asm, version 2.0 did not

First I realize this is a fairly "stupid" bug report but I think it is important.

The 2.1 release of SolveSpace is much slower than 2.0.

Open "jansen-asm.slvs" from here http://solvespace.com/dl/mechanisms.zip (http://solvespace.com/linkage.pl)

Drag the "handle" to make the mechanism "walk" in 2.0 (chord tolerance 0.5; now 2184 triangles) then do the same in 2.1 (chord tolerance 0.01%; 0.03mm; 2184 triangles) - it is much, MUCH slower.

So slow in fact that it is trivial to cause "SOLVE FAILED! in less than 45 degrees rotation of the handle! See the attached screen shot.
solvespace2_1_slow

This is quite unacceptable. Sovespace is/was one of the few fast and lean programs in the 3D world.

Software: Windows XP 32

Hardware:
CPU: Core 2 Duo E8500 3.2GHz
Graphics: Intel Q45/Q43 Express Chipset (driver v. 6.14.10.5420)
RAM: 4GB

Unable to save or export file after rotating text element by > 720 degrees

This is version 2.1 on Windows 7 (64 bit) using the binary posted on GitHub.

To reproduce: Start SolveSpace, click the text tool, and place the text element anywhere on the current workspace. Grab either point of the text box and rotate it about the other point by more than 720 degrees. Attempt to save/export.

If this isn't specific to my setup, then this should produce an error box with the text, "Couldn't write to file [foo]'. No subsequent action (barring a restart of the program) can restore the ability to save, including undoing the rotation. It does not appear to matter which point one uses or the direction of rotation.

Filed on behalf of Yee, Benjamin Tong

Debian Jessie fails to build solvespace

Any idea? (thanks by the way!)

$ make
[ 86%] Built target dxfrw
[ 86%] Built target solvespace_cad
[ 86%] Built target resources
[ 86%] Linking CXX executable solvespace
CMakeFiles/solvespace.dir/platform/gtkmain.cpp.o: In function `SolveSpace::SetCurrentFilename(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
gtkmain.cpp:(.text+0x1026): undefined reference to `Glib::ustring::ustring(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
CMakeFiles/solvespace.dir/platform/gtkmain.cpp.o: In function `SolveSpace::RefreshRecentMenu(SolveSpace::Command, SolveSpace::Command)':
gtkmain.cpp:(.text+0x1ace): undefined reference to `Glib::ustring::ustring(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
CMakeFiles/solvespace.dir/platform/gtkmain.cpp.o: In function `SolveSpace::ConvertFilters(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, SolveSpace::FileFilter const*, Gtk::FileChooser*)':
gtkmain.cpp:(.text+0x1d4a): undefined reference to `Glib::ustring::ustring(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
gtkmain.cpp:(.text+0x1ec6): undefined reference to `Glib::ustring::ustring(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
CMakeFiles/solvespace.dir/platform/gtkmain.cpp.o: In function `SolveSpace::GetOpenFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SolveSpace::FileFilter const*)':
gtkmain.cpp:(.text+0x21ba): undefined reference to `Glib::ustring::ustring(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
CMakeFiles/solvespace.dir/platform/gtkmain.cpp.o:gtkmain.cpp:(.text+0x22f5): more undefined references to `Glib::ustring::ustring(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' follow
collect2: error: ld returned 1 exit status
src/CMakeFiles/solvespace.dir/build.make:283: recipe for target 'src/solvespace' failed
make[2]: *** [src/solvespace] Error 1
CMakeFiles/Makefile2:230: recipe for target 'src/CMakeFiles/solvespace.dir/all' failed
make[1]: *** [src/CMakeFiles/solvespace.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

The Constraint value editor is keep the expresion text next time it edited

I have make some change, after many hours try learning and finding where and what need to add (my base experience is python, need time to learn cpp).

I add string exps; to constraint class. And when double click, it show this string, or revert to default if this string is empty.

and when editdone, the expression string saved in this exps.

its simple code i dont know if it have bugs, need to check. and i need to learn more about git so i an help you guys.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.