SolveSpace Logo SOLVESPACE -- parametric 2d/3d CAD

(you are viewing a thread; or go back to list of threads)

Organising assembly (by uran)
Hi everyone, noob here.

Thanks for this wonderful software, been playing with it and it's quite fun! However, I've hit some problems trying to organize my assembly.

Let's say I'm modeling piano white keys (7 solids), that go into frame (a solid). Every key has unique depth cutouts on its sides, so it's solid is unique, but other than that all the keys share lots of common properties, like width, height, length, side profile, etc.

(1) So my initial guess was to model all the keys in a single file (let's call it keys.slvs). That was quite intuitive with the "translate" tool, and all the common parameters can easily be changed in one place. However I could not find a way to "import a single body out of the linked file" in the assembly, and all the keys get imported as one single part which is obviously not what I desire. Is there any solution to this?

(2) Trying to work it around I've made a separate file for every key. A single such file links to the keys.slvs, and cuts out a single key out of the array. This kinda worked, until in the main assembly file I've linked to the second key, which is a result of "translate" tool, and is not the original one. Such key did have selectable surface but not vertexes, unlike the one that used to be original in the "translate" tool. Anything I did wrong here, or is it a bug?

(3) Lastly, I tried to create a separate dimensions.slvs file, with all the dimensions sketched as line segments. The idea is to create a separate file for every key, and link dimensions.slvs to it at the beginning. So I took my keys.slvs, undid some steps so that it models only a single key, and then tried to link dimensions.slvs before my existing first sketch, but that didn't work. It seems I can only link dimensions.slvs after my first sketch, which makes it impossible to constrain my sketch to the dimensions. I still believe this approach might work, just would require me to redo everything from scratch? :). Anything I did wrong here or is it a bug?

Sorry to make you read all of this, hopefully it makes some sense.
Mon Nov 7 2022, 15:46:33
(no subject) (by Daniel Engineering Solutions)

Would you be able to create a .zip file and upload it? It will definitely help with troubleshooting.

Outside of that, what you experienced in your first question is completely normal and there is no solution (that I know of at least) to get around it.

What you were experiencing in your second question is also normal. Once linked to another file, parts lose their selectable vertices. Occasionally you can turn on the vertices at the lowest level piece part and they will flow up through your assemblies. This would be an example where it'd be helpful to have the files you're referencing.

For your third question I'm not quite sure what you're trying to do. If I'm understanding correctly, I think you may have a workable solution in this method, but I'm not completely sure just based on the description.

As a general response to the experience you've had, I think you're on the right path with SolveSpace. In my time using the software I've noticed that it's far more capable than it appears at first sight. Just to get to the desired end result, it may require some non-typical thinking for the CAD world. If you upload your files, I'd be more than happy to give it a go and see if we can get it to work for you, otherwise keep on chugging, I think you're on the right path!
Mon Nov 7 2022, 17:15:09
(no subject) (by uran)
Daniel, thanks for your support. The attached contains demos for my 2nd and 3rd problems.

- key.slvs contains all the keys
- key-c.slvs refers to key.slvs and cuts out a single key
- key-e.slvs cuts out another key in the same way
- assembly.slvs imports key-c and key-e.
As you can see, key-c has selectable vertices, so I can constrain it further in the assembly. But key-e doesn't have any selectable vertices, which makes it impossible to work with it in the assembly (or am I wrong here?).

- common.slvs contains all the dimensions to be used elsewhere
- example.slvs contains a sample part, it doesn't link to common yet, but now I want to constrain some of it to the dimensions in common.slvs. I could not find a way to do this.
The problem does not occur if I start from scratch and link to common.slvs as a first step.
Tue Nov 8 2022, 04:15:08, download attachment
(no subject) (by Andrew)
An approach I use for problems similar to yours is to create a file using construction lines etc to define master dimensions, and link this as the first group in any part it is meant to control, and use it to constrain the part. Note you can extrude a drawing that is all construction lines, resulting in a 3d construction object. In your case, I would create an all construction file to define key dimensions, including parts to be cut away. You then create a separate file for every key, linking this file. This way you have a file that can be edited to change key dimensions, noting that you have to open and save dependent files to propagate the changes.

Also worth noting, you can import link a part to use as a means of setting dimension, and hide its solid model, and turn off its display as a means of making matching parts.
Wed Nov 9 2022, 08:13:28
(no subject) (by Daniel Engineering Solutions)

I started taking a look at this but have been a little busy with work and other things. I definitely see the issue at hand with your second question. I'm going to do a deep dive on this ASAP, but at this exact moment I don't know why the linking is acting the way it is.

As for the third item, I think I may be misunderstanding. Are you looking to make "common" and "example" parametrically linked? As in, you set the parameters of "common" to XX and that change is automatically rolled into "example"? If that's the case there's been some movement on that using variables like A, B, and C that can be found at:

As far as I know that feature was never actually integrated but I believe it's on the list to be added. If I've misunderstood what you're trying to achieve let me know and I'll dig into it some more!
Wed Nov 9 2022, 09:57:11
Post a reply to this comment:
Your Name:
Your Email:
(no HTML tags; use plain text, and hit Enter for a line break)
Attached file (if you want, 5 MB max):
© 2008-2022 SolveSpace contributors. Most recent update June 2 2022.