VoronDesign / Voron-2

Voron 2 CoreXY 3D Printer design
GNU General Public License v3.0
3.7k stars 990 forks source link

Request to make parametric source files for the CAD public and open source #258

Closed matthewlloyd closed 3 years ago

matthewlloyd commented 3 years ago

It would be really great if parametric source files for the CAD were made public, where available. There are many parts that clearly look to have been modelled parametrically, but none of them are available in any form other than non-parametric F3D and STEP. These files are not easy to modify, and do not represent the source code from which the object files (i.e. STEP and STL files) were actually generated.

Providing the source code is one of the key ingredients to a successful GPLv3 project. The GPL defines source code as "preferred form of the work for making modifications to it". Presumably, these original files exist somewhere, but have not been shared. It is of course the design team's right to not share those files, but it reduces the appeal and potential success of the Voron project to do so.

For example, I needed to make door hinges that fit my panels. The stock door hinges allow 2.6mm for the panels and VHB. My panels are 3.1mm thick, and my tape is 0.5mm thick, so I needed to create hinges that allow 3.6mm of space. To create these from the F3D and STEP as supplied in this GitHub, is quite a lot of work - I would have to completely remodel the geometry from scratch, parametrically, then adjust the relevant extrude lengths. Since that would have been a long task, I ended up making a small shim piece instead. Not ideal for my printer, and not ideal for the community as a whole.

There are many potential advantages to the Voron community in making these files available:

For a great example of how effective doing this can be for hardware, see the enormous community around Prusa's products. The CAD for the Prusa Mini, for example, is available in the form of parametric Autodesk Inventor (IPT) files: https://github.com/prusa3d/Original-Prusa-MINI/tree/master/SOURCE/PRINTED%20PARTS.

Equally, Voron leans heavily on other free projects, like Klipper and Fluidd, which are truly open source, and do share all of their source code for anyone to modify and improve. Many innovations which Voron relies on, like Quad Gantry Leveling, were made possible by this truly open source philosophy.

Of course, not all the parts may have been created in the same tools, so it would be completely understandable if the provided files were a mix of IPT, SLDPRT, F3D files, etc. That would still be very useful for everybody. It would also be acceptable if they were not cleaned up, or had muddled or difficult to understand history - working with those files would still be a lot easier than working directly with STL and STEP files instead, or rebuilding the CAD from scratch.

moebis commented 3 years ago

@matthewlloyd timing of this comment couldn't be more perfect. I just ran into the exact same issue with my doors, they're too tight and almost impossible to close. I want to modify the hinges or find ones that are modified already. You're absolutely correct, GPL is about sharing the source and I assumed the Fusion files were the source. So you're saying we can't modify any of these parts by changing the original parametric attributes like extrude 3.6mm?

Spaghetti-Bolognese commented 3 years ago

The F3D files are the native format. Most Voron parts have been modelled using Direct Modeling in F3D so they are not parametric to start with. That is why you won't get any parametric data to edit. You can use all the direct modeling tools to edit the CAD as you like and add parametric features if you wish. There is an F3D native format assembly model for each Voron release and you can open that and extract the individual native part files.

matthewlloyd commented 3 years ago

You're absolutely correct, GPL is about sharing the source and I assumed the Fusion files were the source. So you're saying we can't modify any of these parts by changing the original parametric attributes like extrude 3.6mm?

@moebis That's correct. They appear to have been modeled parametrically, either in another program then imported to F360 as STEP, or in F360 with the design history removed.

Let's take the door hinge as an example. Here is the part highlighted in the F3D file currently available in this repo:

image

At first glance and to the casual reader, it would appear to have been parametrically modeled - you can even see various primitives like extrudes in the tree. However, there is no design history - Fusion 360 is in direct modeling mode:

image

This is the message Fusion 360 generally shows when you turn off design history, which seems to be what has happened to this CAD:

image

For the hinge, Fusion 360 is showing an Extrude operation, and a Chamfer. I am not sure whether these are cruft left over from import, or added later. Either way, they are both uneditable, nonfunctional, and also clearly not part of the original parametric design:

image

image

You can try exporting just the hinge to edit it separately, but you'll find it makes no difference. Once the history has been removed, it is gone.

If you look closely at the geometry of the hinge, it shows clear signs of being parametrically modeled, and appears to have been created by a sequence of sketches, extrudes, fillets, cuts, chamfers, revolves, and so on:

image

Given the only difference between parametric and direct modeling modes in Fusion 360 for a part like this (i.e. one which uses primitive operations and no freeform surfaces), is the capturing of the history - making it easy to go back, edit, change, modify, and fix issues that occurred earlier in the modeling process, with essentially no downside - it is hard to imagine anyone who is designing these parts making a conscious decision choosing to turn off design history at the time of development.

matthewlloyd commented 3 years ago

Most Voron parts have been modelled using Direct Modeling in F3D so they are not parametric to start with.

@Spaghetti-Bolognese What is your relationship to the design team? You are not a contributor to this repository. Can you provide a link or reference to the source for your claim that most of these parts were modeled using Direct Modeling, such as a statement from someone on the design team?

If your statement is indeed true, it would be nice for those Voron parts which were modeled parametrically to be made available in parametric form.

raymondh2 commented 3 years ago

Most of the design team turns off design history intentionally before even starting. As such there is no design history and no parametric files are available.

moebis commented 3 years ago

@raymondh2 lol, you're going to make @matthewlloyd head explode.... anyways I wonder why they would turn that off when as Matthew said, it's kinda useful to go back in the history if you have to make a change. Me thinks someone is trolling poor Matthew.

raymondh2 commented 3 years ago

Because it slows down Fusion and doesn't work with how we do CAD (not everything was made in fusion. Some things were made in other packages and imported as step)

moebis commented 3 years ago

Ah, ok, makes sense. so for those, were they done in something like Rhino and is that available?

raymondh2 commented 3 years ago

Most likely not as we pretty much only save in step outside of fusion.

As for the main issue this is getting closed as the source being asked for does not exist.

matthewlloyd commented 3 years ago

Sigh, how terribly disappointing. Nobody who actually designed any of the parts has commented on this issue before it was closed.

Frankly I just don't believe that the history is turned off. Looking at the history of the CAD here in the repo, it is very clear that many of the parts were designed parametrically, as they are being modified and republished from version to version in a way that clearly indicates someone has the history sitting in a file somewhere, ready to be edited and modified parametrically.

I'll just write this off as one of the downsides of building a Voron, and one of the shortcomings of the project and community. Long term, I will start a separate open source project to recreate many of the parts in a fully parametric and genuinely open source way, but it is not going to bear the Voron brand.

wile-e1 commented 3 years ago

Sigh, how terribly disappointing. Nobody who actually designed any of the parts has commented on this issue before it was closed.

Frankly I just don't believe that the history is turned off. Looking at the history of the CAD here in the repo, it is very clear that many of the parts were designed parametrically, as they are being modified and republished from version to version in a way that clearly indicates someone has the history sitting in a file somewhere, ready to be edited and modified parametrically.

I'll just write this off as one of the downsides of building a Voron, and one of the shortcomings of the project and community. Long term, I will start a separate open source project to recreate many of the parts in a fully parametric and genuinely open source way, but it is not going to bear the Voron brand.

I talked to you last night about this and explained to you that history is NOT available for all of our printers and parts because it literally just did not and never did exist. Not because we turn if withhold it from the public.

And before you ask, my relationship to the design team is that I am a member of the VORON Design/Engineering group. Our printers are designed by different people using different processes and different software. It's really disappointing that you think that there is something nefarious going on behind the scenes to oppress and discourage the public from making changes to our files. This is simply not the case, you just don't seem to believe it when people who are in-the-know tell you this.

matthewlloyd commented 3 years ago

@wile-e1 Forgive me, but there is a lot of misinformation floating around, so I have to be skeptical. I have not been able to find an official list of members of the VORON Design/Engineering group, but you are not listed as an Admin in the Discord, you are not listed there as part of "The Crew", and you are not listed as a "Contributor" (perhaps you are just offline? Not sure). There are no commits to this repository from your account. So I'm sorry to be blunt, but I have no way to know what your relationship is with the VORON team other than your claim that you are part of the group. Perhaps you were once part of the group, perhaps you are part of the group now, perhaps you would like to believe you are part of the team, perhaps you never were. How am I to know, without a statement from someone I can actually confirm is on the team?

It also easy to imagine the Voron team might have motivations to "discourage the public from making changes". For example, the Voron team may wish to prevent other groups (cough Annex Engineering) from benefiting from the Voron team's own work. The Voron team may wish to preserve income from the "DONATE" link on the Voron website, or affiliate income that may be lost of a derivative of Voron became popular. The Voron team may wish to reduce competition from potential commercial offerings that borrow heavily from the Voron design. One can think of plenty of reasons.

"I talked to you last night about this and explained to you that history is NOT available for all of our printers and parts because it literally just did not and never did exist. Not because we turn if withhold it from the public."

Furthermore, again, forgive me for being blunt, there is plenty of evidence in the Voron repository, not only that original source files exist, but that they were at least at one time deliberately withheld. For example, here is the text of the original license agreement committed to this repo (as License.md, later renamed to LICENSE.md):

"Files released by VORON DESIGN are in an "as-is" state, solely for personal, non-commercial use. There are no licenses, or warranties attached or implied to these files. Furthermore, with the release of these files, the original designer(s), are under no obligation to provide "original source files" to these designs"

(this is from https://github.com/VoronDesign/Voron-2/commit/e0896d4d1b3440d431f06e6743edd51dfdab9770#diff-bf5e2da79bc7aed47726b453e35a0cfa65dbc12516ffb3656e7ed9966f8fc086)

So there, we have a clause inserted into the license that states the designers are not obligated to provide "original source files", which implies both that original source files exist, and that they are purposely withheld.

Also, you can just look at the commit history (https://github.com/VoronDesign/Voron-2/commits/Voron2.4) and see dozens of examples of modifications to the parts, that would be extremely time consuming with no parametric history, but extremely quick given the "original source files":

A reasonable person would conclude from all this that (a) the designers have original source files, (b) the designers use these source files to make modifications, then publish versions with the history removed, and (c) the designers do not want to have to release these source files.

The speed and verocity with which the community has jumped down my throat on this one, and closed this issue, has made it look even more like the team is deliberately withholding the source files.

Again, the team has a right to do that, but Voron would more awesome if the files were public.

khumarahn commented 3 years ago

@matthewlloyd such much accusations and mistrust I looks like wile-e1 is a developer, not that it matters much. image

matthewlloyd commented 3 years ago

I looks like wile-e1 is a developer, not that it matters much.

Ah thanks, fair enough, perhaps he is just offline whenever I happen to be looking at the member list on Discord. My bad.

@matthewlloyd such much accusations and mistrust

Just trying to go by the facts and evidence, here.

stvptrsn commented 3 years ago

Just an FYI, when you direct model in Fusion those Extrudes and Chamfers are created. It's not a sign that history was turned off. It's just the way direct modeling works in that program. Try it yourself, you'll see.

Spaghetti-Bolognese commented 3 years ago

@matthewlloyd, I think fundamentaly your original frustration was in not being able to edit the door hinge as you wanted. This is actually very easy to do directly in Fusion 360. You can either modify parts using direct modelling with tools like the push and pull tool, extrudes, holes etc, or you can add parametric features onto the original file if you prefer by turning on design history. You don't need to create the geometry from scratch. Direct modelling is a legitimate way of working in Mechanical Design. It is just a different way of working compared with parametric modelling. Direct modelling lends itself well to the geometric freedoms which comes with 3d printing as it copes better with more complex geometry than parametric. Parametric can become slow and cumbersome.

I am not part of the Voron design team, but I am a Mechanic Design Engineer by trade and have contributed to the Voron community a little. Professionally I use Siemens NX mostly with parametric modelling. I have a Voron V2 printer and I have modified quite a few of the parts myself without issue using F360, including the door hinge as I had the same issue as you.

nemgrea commented 3 years ago

@matthewlloyd this is a community project, lets say i draw the profile for that hinge in solidworks and extrude it, then i get busy and i upload the step file to another dev member who adds the bolt holes in fusion360. then they upload the file to a dev who adds the chamfers in freeCAD then its exported to a dev that brings it into ProE and adds it to the main assembly...ect.

can you explain to me what program the "source file" would be for a part like this? parts are not always fully completed in a single CAD package and as such there is no real way to keep feature trees between programs. yes this happens often and having a universal file format for everyone to work from is the way we manage this, that universal format is the Standard for the Exchange of Product Data, the ISO 10303-21 standard for 3D models ,the STEP file..

matthewlloyd commented 3 years ago

@matthewlloyd timing of this comment couldn't be more perfect. I just ran into the exact same issue with my doors, they're too tight and almost impossible to close. I want to modify the hinges or find ones that are modified already. You're absolutely correct, GPL is about sharing the source and I assumed the Fusion files were the source. So you're saying we can't modify any of these parts by changing the original parametric attributes like extrude 3.6mm?

@moebis Since the Voron team is not willing to share original source files, I have created a new project, hosted on GitHub, to act as a place for users to contribute parametric reconstructions of all the parts in the Voron printers. I'm starting small - I have reconstructed the door hinge and added a Fusion 360 file here:

https://github.com/matthewlloyd/Voron-Parametric/blob/main/Voron-2/VORON2.4/Panel_Mounting/Front_Doors/door_hinge_x4.f3d

It uses a user parameter for the panel thickness, so it's extremely easy to modify it to accommodate differently sized panels.

Here's a somewhat extreme example, with 3mm extra for the panels:

image

moebis commented 3 years ago

@matthewlloyd awesomeness, thank you! You should contribute directly to the project, I wouldn't get upset at the answers you saw here. Makes sense to me. These are nice folks that share a passion for 3D printers and design and I feel like they're doing the best they can, plus they are dedicating their free time. I really don't think anything nefarious is going on here. Would it be ideal if the entire printer was designed parametrically in F360? yes... but this is how they work and look at the results. I love my Voron printer.

Spaghetti-Bolognese commented 3 years ago

@matthewlloyd, your door hinge mod sounds like it would be very beneficial to many voron users. Would you consider adding it to the Voron Users repository?

https://github.com/VoronDesign/VoronUsers

matthewlloyd commented 3 years ago

An update: one of the four primary dev team members who actually designs the parts reached out to me and confirmed that original parametric source files with history do, in fact, in many cases, exist.

Not all dev team members are using the same CAD package. Two are using Fusion 360 with capture history mostly enabled. One is using SolidWorks, which is of course a parametric CAD package which captures history. One is using Fusion 360 in direct modeling mode.

So for those of you who wrote comments like these, none of whom are one of the four primary dev team members, kindly get your facts straight:

Most of the design team turns off design history intentionally before even starting. As such there is no design history and no parametric files are available.

As for the main issue this is getting closed as the source being asked for does not exist.

I talked to you last night about this and explained to you that history is NOT available for all of our printers and parts because it literally just did not and never did exist.

For my trouble, after all this, I was branded a conspiracy theorist on the Discord and treated in a manner which was frankly unacceptable, not only by regular members of the community but by members of the dev team and Discord admins alike.

I still think it would be great if the team could share original source files for those parts for which they do exist, be they Fusion 360 files, SolidWorks, or anything else. Perhaps there are some files for which they are not available, but partial coverage would be better than none at all.

Myself and two other community members are busy reconstructing parametric histories for all the parts here. It's a slow process and after a week of effort we're 33% of the way through the V2.4 parts list. It is inevitable that we will have a full set of CAD files available for public consumption in the near future. It would save us a lot of time to have the original source CAD available where possible, even if it's not cleaned up or has been transferred between programs such that some history has been lost.

nemgrea commented 3 years ago

@matthewlloyd

I designed and drew the V0. I dont care what Eddie told you. You came In here with an accusatory attitude and you were anything but nice. you deserve all the heat you got. You can read my reply above as to why it doesn't make sense for us to release fragmented cad files instead of industry standard formats. Which I noticed you conveniently glossed over...

We don't give a shit if you remodel all the part. We could not care less. If it helps other fusion users then great. I hope people who use fusion have a easier time but you are not a martyr. you need to seriously cut it out with the finger pointing just because you are too lazy to work with step files. You want someone to help you get certain fusion files? Be fucking nice about it and ask them. If they were mine I'd tell you to kick rocks too cause your approach is trash.