designspark
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Hamcha 2023-09-24 01:44:02 +02:00
parent e694194853
commit 3a7a983935
Signed by: hamcha
GPG Key ID: 1669C533B8CF6D89
15 changed files with 192 additions and 34 deletions

View File

@ -11,6 +11,6 @@ Reading in publication order is suggested (there are callouts) but feel free to
----
Coming up (in no particular order): Designspark Mechanical, SolveSpace and more.
Coming up (in no particular order): SALOME, SolveSpace and more.
[Click here](/tags/cad-shootout/index.xml) for a RSS feed dedicated to this series.

View File

@ -0,0 +1,152 @@
---
title: "Hobby CAD shootout: DesignSpark Mechanical"
description: I explore DesignSpark Mechanical for hobbyist use. I put it through its paces and show strong points and weaknesses.
toc: true
software: DesignSpark Mechanical
license: Limited free version, otherwise 12€/month
tags:
- cad
- cad-shootout
tldr: |
I explore DesignSpark Mechanical Explorer for hobbyist use. DSM is a stripped down version of Ansys SpaceClaim that takes out most of the manufacturing features and leaves behind a very barebones modeling app with an approach that's both quick to use but punishing when you get things wrong. Its comparable to Solid Edge's synchronous environment but IMO not as reliable.
keywords:
- cad
- designspark mechanical
- ansys
- spaceclaim
date: 2023-09-23T23:42:08.569Z
---
With [Solid Edge]({{< relref "cad-shootout-solidedge.md" >}} "Hobby CAD shootout: Solid Edge") we had our taste of a different kind of workflow from what we find in bog-standard parametric CAD tools: its synchronous environment was both very expressive and frustrating.
So what would happen if we used a CAD software that's *only* that?
## SpaceClaim / DesignSpark Mechanical
DesignSpark Mechanical is a stripped down version of Ansys' SpaceClaim of which I only became aware after seeing [someone use it at blazing speed](https://youtu.be/gQexsAlcJMY?t=4433) at the 2023 3D CAD Speedmodelling World Championship.
SpaceClaim's party trick is its direct modelling approach, a novel system that completely ditches the tradizional "sketch -> feature" separation and just keeps everything together in one big model soup.
DesignSpark Mechanical is heavily RS branded and features heavy integration with RS, from the integration with DesignSpark PCB to their 3D catalog which includes models from their store that can automatically be compiled into a bill of material you can get a quote for. The top export option is a Cura integration and I have no clue if this provided because of an agreement or just convenience, Ultimaker is not affiliated with RS last I recall. I'm quite surprised they haven't added a button to have a part 3D printed on a partner service.
### More flashbangs
DSM has no dark mode, you can style the main ribbon UI to be on the dark greyish side but only if you're ok reliving Windows Vista UI and you can darken the background for parts. Take this as your flashbang warning for pics and videos to come.
Also the camera moves weird exactly like in FreeCAD (with *both* options)!
### You don't get much for free
DesignSpark comes with a free version (Explorer) and a subscription tier (Creator). There is an even more expensive tier (Engineer) but it only unlocks features in DesignSpark PCB so it's useless here. The subscription price is the lowest yet (12€/mo in my country).
The free version is VERY restricted:
- Only export in OBJ, STL and PDF
- No drawings
- No importing STL/STEP/other 3D formats
Things get worse when you consider that previous versions of DSM could import STL/STEP and after removing it in the latest version they shut down the license verification servers for older versions to force everyone to upgrade.
The one upside is that unlike every proprietary software I've looked so far there is no restriction on usage: the free version is OK for commercial use... but you know, [we went through this](https://youtu.be/S9hmi1leU2s) already, [twice](https://youtu.be/SlnEThQ4HR8).
As usual, I will be exploring the free version.
### You don't get much in general
As DSM is a stripped down version of SpaceClaim some features like sheet metal tools are just not available to you not matter how much you pay for it (unless you buy SpaceClaim). I'm also baffled by some basic tools missing like a center-point aligned rectangle or how hard it is to modify an existing line after committing it to the drawing.
### Should you enable constraints?
When using DSM you will start to miss having constraints, stuff will snap and change size all the time and that's plenty frustrating.
Well, DSM *has* constraints, but they're disabled by default!
![The constraint option buried under Options -> Advanced](/media/dsm/options.png)
Sadly enabling this changes the app radically to a more traditional sketch based one, except you don't really get the same level of history and flow as there is some friction in having to manually create and finalize sketches, so honestly I think you'd be better off using something else (even FreeCAD) if that's how you want to use it.
Constraints also only exist within the sketch and the sketch is lost upon push/pulling a feature, so don't think it will magically turn DSM into a parametric CAD.
## The trials
### Test drive: TooTallToby 06-T-04b - Truss bearing
It seems Toby is putting out more practice models than I will ever be able to use, so this time I will use the most recent at the time of writing: [06-T-04b - Truss bearing](https://youtu.be/p98iPpfh4Yg).
{{< rawhtml >}}
<video controls>
<source src="/media/dsm/dsmttt.webm" type='video/webm; codecs=av01.0.05M.08' />
<source src="/media/dsm/dsmttt.mp4" type='video/mp4; codecs="avc1.4D401E"' />
</video>
{{< /rawhtml >}}
This has to be the fastest I've ever modeled a part, the UI for DSM really makes direct modeling shine in ways where Solid Edge struggles like in sticking sketches to the correct plane. Creating custom materials was also a breeze!
Something that definitely impressed me was the mirroring, you can transform every line into a mirror line which makes symmetric features so much easier to draw than to just blindly sketch and then apply some mirror thingamajig later on.
While incredibly handy the problems with direct modeling only show off when designing something from scratch, this is why I always try to create something to use in the house for these articles instead of stopping at exercises. (it also forces me to make my life easier because I would be too lazy to do this stuff on my own)
### Real world part: Labelmaker stand
Labelmakers are super handy but they come in the most annoying shapes, mostly full of rounder corners and no way to stand upright.
So let's make a stand to minimize its footprint:
![A curvy stand for a curvy item](/media/dsm/fancy.png)
When learning CAD on Onshape I fear I caught fillet-itis, which is terrible cause fillets [don't look good on 3D prints](https://www.youtube.com/watch?v=XTvBOGgx48I), but man DSM makes it so easy to add them that I can't resist. (chamfers too!)
Something peculiar I found out is how slots work, there is no "slot tool", instead you cut a circle and then "drag" it:
{{< rawhtml >}}
<video controls>
<source src="/media/dsm/slot.webm" type='video/webm; codecs=av01.0.05M.08' />
<source src="/media/dsm/slot.mp4" type='video/mp4; codecs="avc1.4D401E"' />
</video>
{{< /rawhtml >}}
#### Mistakes hurt
This is the crux of the real world test. When working from the ground up it's very easy to make mistakes and having to go back to fix stuff. Sadly without constraints or a usable history changing any feature where other features are built on is basically impossible and you just have to delete face a lot and re-do everything. This is because unlike parametric CAD software every operation is final and the Undo stack is all you get for reversing... and the Undo stack is lost upon closing the app.
I use a very iterative approach to desigining part where I guesstimate a lot and sometimes forget something and with other tools I can go up the history and adjust everything (unless it's FreeCAD then I'm just as screwed). This means that just like the synchronous environment in Solid Edge I would not feel comfortable using this for complex parts I need to design and more for replicating already existing designs for assemblies and repairs.
#### A joy *when* it works
It's hard to express my love/hate relationship for direct modeling. On one hand I feel it's awful for creating new designs using my iteration-heavy approach, on the other it makes you feel like having superpowers when you manage to make something from nothing to ready in no time. My mom needed a way to tie a oil pourer nozzle to a oil bottle that had a hole that didn't fit and it took me like 30min from measuring everything to having a TPU part printed and fitted. It's not a big time save from using a traditional approach (most of the time is spent waiting for the 3D print to finish) but it does adds up.
### Making drawings
You can't make drawings on the free version, though they are supported in the subscription tier, too bad!
### Export options
DSM can export to a very limited but functional variety of formats: STL, OBJ, IGES, STEP.
Except on the free version you only get OBJ and STL, so that's kinda disappointing.
However if we think a bit out of the box we can find something else: DSM projects ar saved as `.rsdocx`, this sounds very similar to OOXML formats (.docx, .pptx etc) I wonder if this also is just a ZIP file in disguise...
![The file list inside a rsdocx project](/media/dsm/7z.png)
This trick works more often than you'd think! And what do my eyes spy? `part1bodies.x_b`! Seems like we get a Parasolid export after all, though there is no open source software that can use them so you're stuck at importing it in Solid Edge or other Parasolid-compatible software where the non-commercial clause pops up again. I could also not get a working STEP export after mporting the x_b file in either Solid Edge or Onshape so maybe this isn't really that useful.
If you use STL export remember to go into the options and increase the resolution, the default doesn't give large circles enough polygons.
### What else?
Not much really, as I said DSM has no sheet metal or other workflows to explore.
## Conclusion: Not a winner, but you might not have a choice
I find it really hard to recommend DSM to anyone, the workflow is sorta unique but has several pitfalls and the free version is way too limited.
I think direct modeling is neat but I wouldn't give up parametric personally, I think Solid Edge's synchronous environment is a safer bet since you can have constraints and lock dimensions and when needed switch back and forth between direct and parametric approaches without having to commit to either.
For the time being, this is the only commercial entry that lets you use your designs for commercial use without paying anything, so it might appeal to small creators who are tired of dealing with FreeCAD's bugs (but keep an eye out for Alibre/Plasticity and other affordable tools).
{{< next-up "cad-shootout" "software" >}}
<h3>Interested in more?</h3>
<p>This series isn't over! The CAD shootout has a dedicated
<a href="/tags/cad-shootout/index.xml">RSS feed</a> you can follow to know when the next one drops!</p>
{{</ next-up >}}

1
data/home/series.toml Normal file
View File

@ -0,0 +1 @@
cad-shootout = "Hobby CAD shoot-out"

View File

@ -1,35 +1,30 @@
{{ define "partials/list-limited.html" }}
{{/* This is not pretty but I'm not good at templates */}}
{{ $params := . | transform.Unmarshal (dict "delimiter" ";") }}
{{ $fields := index $params 0 }}
{{ $pageurl := index $fields 0 }}
{{ $pagename := index $fields 1 }}
{{ $limit := 5 }}
{{ $pages := where site.RegularPages "Section" $pageurl }}
{{- with $pages }}
{{ define "partials/list-limited.html" }} {{/* This is not pretty but I'm not
good at templates */}} {{ $params := . | transform.Unmarshal (dict "delimiter"
";") }} {{ $fields := index $params 0 }} {{ $pageurl := index $fields 0 }} {{
$pagename := index $fields 1 }} {{ $limit := 5 }} {{ $pages := where
site.RegularPages "Section" $pageurl }} {{- with $pages }}
<section class="post-list">
<h2>Latest {{$pagename}}</h2>
<h2>Latest {{$pagename}}</h2>
{{- range ( $pages | first $limit ) }}
<article><time datetime="{{ .Date | time.Format "2006-01-02"}}">{{ .Date | time.Format "2006-01-02"}}</time> <a class="title" href="{{ .RelPermalink }}">{{ .Title }}</a></article>
{{ end }}
{{ if (gt ($pages | len) $limit )}}
<a href="/{{ $pageurl }}">See more…</a>
<article>
<time datetime='{{ .Date | time.Format "2006-01-02"}}'
>{{ .Date | time.Format "2006-01-02"}}</time
>
<a class="title" href="{{ .RelPermalink }}">{{ .Title }}</a>
</article>
{{ end }} {{ if (gt ($pages | len) $limit )}}
<a href="/{{ $pageurl }}">See more…</a>
{{ end }}
</section>
{{ end }}
{{ end }}
{{ define "main" }}
{{ end }} {{ end }} {{ define "main" }}
<header class="site-header">
<h1 class="title">Hello, this is a webpage</h1>
</header>
<section class="intro">
<p>
I'm your random internet dude and I figured that if I wrote something
on the Internet then someone might read it, also I needed a
website cause everyone got one of those!
I'm your random internet dude and I figured that if I wrote something on the
Internet then someone might read it, also I needed a website cause everyone
got one of those!
</p>
<h2>What did you do?!</h2>
<p>
@ -74,14 +69,20 @@
need of a more permanent home. Check the links at the top or look below for
the latest posts!
</p>
<h3>Miscellaneous link collection of ultimate destiny
</h3>
<p>Find me at any of these places:
{{ range $name, $link := $.Site.Data.home.links }}
<span class="home-link"><a href="{{ $link }}">{{ $name }}</a></span>
{{ end }}</p>
<h3>Miscellaneous link collection of ultimate destiny</h3>
<p>
Find me at any of these places: {{ range $name, $link :=
$.Site.Data.home.links }}
<span class="home-link"><a href="{{ $link }}">{{ $name }}</a></span>
{{ end }}
</p>
</section>
{{ partial "list-limited.html" "posts;posts" }}
{{ partial "list-limited.html" "pages;pages" }}
{{ end }}
<section class="post-list">
<h2>Browse by series</h2>
{{ range $link, $name := $.Site.Data.home.series }}
<article><a href="{{ $link }}">{{ $name }}</a></article>
{{ end }}
</section>
{{ partial "list-limited.html" "posts;posts" }} {{ partial "list-limited.html"
"pages;pages" }} {{ end }}

BIN
static/media/dsm/7z.avif Normal file

Binary file not shown.

BIN
static/media/dsm/7z.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
static/media/dsm/dsmttt.mp4 Normal file

Binary file not shown.

Binary file not shown.

BIN
static/media/dsm/fancy.avif Normal file

Binary file not shown.

BIN
static/media/dsm/fancy.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
static/media/dsm/slot.mp4 Normal file

Binary file not shown.

BIN
static/media/dsm/slot.webm Normal file

Binary file not shown.

View File

@ -161,3 +161,7 @@ $h3-color: #d1c5f8;
border: $update-border;
}
}
.highlight pre {
overflow-x: auto;
}