![]() |
Team 254 Open-Source Release: Cheesy Parts
1 Attachment(s)
Cheesy Parts is an open-source web-based system for tracking parts through the design and manufacture cycle. During some of the past seasons, we have had problems losing track of the progress of various parts, or whether we had the raw materials for them. To fix this, we wrote this web-based system during the offseason. It assigns part numbers with which CAD files can be saved to version control and stores information about parts' current manufacturing status.
Features include:
The code is available at https://github.com/Team254/cheesy-parts. There is also a working demo available at http://parts-demo.team254.com (username "demo@team254.com", password "chezypofs"). Feedback and suggestions for improvement are welcome. Attachment 15088 |
Re: Team 254 Open-Source Release: Cheesy Parts
Thanks a ton for publishing this, guys. I know many of us asked about this a few months ago, and I'm eager to check it out.
Thank you! |
Re: Team 254 Open-Source Release: Cheesy Parts
This looks very neat and a great resource for teams!
Just a word of warning: Our team tried to implement something like this with a physical "PARTS" (Parts and Resources Tracking System) board a few seasons ago. The theory was that the CAD team designs the part then deposits the drawing in a bin. A small tag on the corner of the drawing was generated from the part name based on a naming scheme (ie, shooter was CRR_SHO_001 or something like that). Implementing a naming scheme was a great idea because before that, we had a great deal of parts named "twistything.ipt". Anyways, the tag got cut out and pinned to a board with various tasks listed on it. All parts started in rough cutting and moved down towards finishing, with the person who did the work moving the tag to the next task. A corresponding tag was taped to the part. In theory, the board worked great. There would always be work to do and people could see easily what needed to be done and the progress and congestion of our machining system. Unfortunately, it required an immense amount of babysitting and fell apart within the first week of heavy machining. People didn't move tags around and people relied on the system instead of the leaders to tell them what to do. When the system didn't work, things got stuck. 1. This can be solved by strong leadership and making sure everyone knows the ins, outs, and benefits of using a system like this. Industry uses stuff like this (we actually pulled our flowchart from one of our sponsors, which we saw when giving a demo there) but in industry, there are actually professional engineers and managers. It's difficult to get this kind of expertise and knowledge on an FRC team (though it certainly is possible in the culture of many teams - 254 is one of them and I respect them immensely for it). 2. It can also be solved by eliminating excess complication in the process: for us, that was removing the board from the system. We replaced it with a shelf that drawings were placed on, and machinists could just pick up at their leisure to do. As the part got closer to completion it moved down the shelf. Top level was rough cutting, the next facing, the next drilling and so forth. There was no meta tracking system and it worked out better for us. I guess the lessons we learned from our experiment was to eliminate steps that were unnecessary for our team and secondly, if we are implementing a new system, make sure the leaders remain just as strong and don't rely on it as a crutch. Again, this looks like a really cool tool and I might prod my team to try another part management system, but I think it will be good to go into it with some prior knowledge. |
Re: Team 254 Open-Source Release: Cheesy Parts
Thank you immensely for posting this. I there any chance that there could be some integration with SolidWorks as you've done in years past?
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
We want to see if there's a way to automatically pull completed drawings from the PDM vault once they're checked in, so that you have one less step to go from the part management system to making parts, but we haven't done that yet. |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
I agree with what others have said, these types of systems are great if everyone uses them correctly and buys into them. Usually, the easiest way to do this is to make everything is as easy as possible to do correctly. |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
Basically, solidworks files are OLE files, so you need a library to deal with OLE files. With my PDM I'm setting up for next year, it directly interfaces with the Solidworks PDM. I've hardcoded it in my case (because...well...I just did). The only issue I'm having is that I have to rewrite my database every page load. This is because the Solidworks PDM stores data in a flat text file. When a part is updated, removed, or added, it's reflected in the flat file. I need a better way of "diff"ing the database and my flat file. If you have any ideas, that would be great. I could possibly copy the flat file and run some process in the background and look to see if something's been updated then update the database, but oh well. Also, the PDM I'm working on will also pull out PDFs of drawings that are saved automagically. Code:
import OleFileIO_PL |
Re: Team 254 Open-Source Release: Cheesy Parts
Cory,
Once again I am floored by the professionalism of the poofs. Thank you for posting this, what a great way to keep things organized. |
Re: Team 254 Open-Source Release: Cheesy Parts
Very cool.
|
Re: Team 254 Open-Source Release: Cheesy Parts
Maybe it's just the mobile version (only thing I have to test at the moment), but every time I click I have to login again. Is this the intent, logging on at every mouse click?
|
Re: Team 254 Open-Source Release: Cheesy Parts
Feedback and suggestions for improvement are welcome.
[/ATTACH][/quote] You guys are awesome. This would make a great cloud based app. Using a varbin type you could save binary file attachments(pdf, edrw, etc) and use the web browser as the viewer. Also being able to collapse an assembly to the parent part number is a desired feature. Also being able to attach a date with a widget when you edit the part status would be cool. Start and completion dates are always something that needs to be watched. |
Re: Team 254 Open-Source Release: Cheesy Parts
We're interested in running CP, but on a Windows Server (the same one we use for PDM). Do you have any tips? How do you run CP for yourselves?
|
Re: Team 254 Open-Source Release: Cheesy Parts
Yeah, PDM integration is something I'd like to add if possible. One issue we have is Cheesy Parts getting out of sync with the CAD because some people are too lazy to create entries in it before saving their parts to PDM (cough EJ cough), so being able to query PDM and automagically create Cheesy Parts entries in that case would be nice. It's not going to be a walk in the cake, though, since the only way I've heard of to integrate with PDM is through some .NET DLL.
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Just curious - has anyone tried setting this up locally yet?
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
is the PDM software part of the package?
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Has anyone tried this out yet? http://www.openplm.org/trac This might be a more interesting example: http://www.openplm.org/example3D/mendelmax2.html
I love how clean and intuitive Cheesy Parts is. Great work! |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
I got it working late last night!
![]() The main workaround that it required on windows was adding Spork to the gemfile. I tried a lot of fixes (for gems not loading, rake related errors, etc.), and I'm not 100% sure which ones ended up contributing to it actually working. Hopefully, I'll install it on our windows PDM server in the next few weeks, as well as better document the process for beginners. Thanks again to Pat Fairbank! His support and help was extremely valuable to me. |
Re: Team 254 Open-Source Release: Cheesy Parts
Here's the process I used to get it working on my Windows 7 laptop.
First, download and install the programs listed on the CP README. I installed Ruby 1.9.3 using Ruby windows installer (or something like that). You're going to need an Oracle account to install MySQL, just do it even though creating new accounts is a hassle. I used default installation settings for both, and installed Ruby in C:\\Ruby193. After installing Ruby, open up a Ruby command line. You're going to be doing a fair amount of work in this window. I believe now you have to type in "gem install bundler" to install bundler. Then download the .zip of CP. I unzipped it and put it under C:\\Users\Damp. Then, open the folder "config" in the CP main folder, and double click on the eviornment.rb file to edit it. I just edited it in Wordpad, you'll have to tell Windows which program to edit in. Then, chose a port between 8000 and 10000 and enter it in the quotation marks for port (I used 8010). I put the DB_HOST as "localhost", and put in root and 1234 for the user and password I had set up earlier when installing MySQL. I don't think URL, Gmail and Gmail pass are neccesary, I just put down my Gmail anyway. I deleted anything in the WORDPRESS_AUTH_URL, to leave only two quotation marks, like this "". Save the file and continue. I had to add a gem later to the gemfile, but I think you can do it now. This is to supplement a gem that only works on Linux and OSX with one that works on Windows. Open the gemfile in CP main (not the .LOCK one), and add this line: gem 'spork', '~> 0.9.0' Then, save the file and continue. Next, you're going to have to change the directory you're working in, to the CP main folder. Do this using the cd command. I entered cd C:\\Users\Damp\cheesy-parts-main in the Ruby command line and hit enter. Then, per the README, I entered bundle install and hit enter. This should download the various gems that CP depends on. Next, type in bundle exec rake db:migrate, which at first brought up some rake errors. I believe I eventually solved them by forcing bundler to install diferent versions of the rake gem by editing the gemfile. Make sure that you don't have multiple instances of rake in the gemfile, this will mess things up. The version of the gemfile that finally worked didn't have any other rake gems besides the rake which was there in the first place, but the fix working might have depended on the rakes that I forcibly installed earlier. Go figure. Then, run ruby parts_server_control.rb run. If everything went as planned, you should see some message about pressing CTL-C to stop the server if everything went as it should have. At this point, go to your trusty web browser, and enter http://localhost:[port]. I entered http://localhost:8010. Hit enter, and the CP login page should pop up. At this point, you can login with the user and pass on the CP README, and create other users. At this point, when I try to create a new part, I get MySQL errors. This might be me, or it might be the CP software. Pat says he's working on it. This thing required about 8 hours of debugging for me, someone who has zero experience with ruby and MySQL. If I got an error, I'd google the important part of the message, and see what others had done. Sometimes, these fixes would work and sometimes they wouldn't. Again, I couldn't have done this without Pat's gracious help. |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
In SolidWorks different files are associated with each other. For example, an Assembly will have many parts associated with it. Git has no way of recognizing these types of relationships. So if I'm using Git and I wanted to check out an assembly and all the parts associated with it, then I'd have to manually check out each part. If I wanted to do this in PDM then all I'd have to do is check out the assembly and check a box that checks out all associated files. |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Just got it running. Thanks Pat - this looks awesome.
Quick support question: When I try restarting/stopping/starting (after the first time) it using the parts_server_control script, I get an error https://gist.github.com/ZachOrr/6081673 Suggestions? |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
A quick bare-bones for setting up a MySQL server on Ubuntu https://gist.github.com/ZachOrr/6081773 (try the last command on that) |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Looks handy!
One sugestion I have is add the ability to upload a photo for each part. This would be great if students did not know a part by name and were able to see a cad drawing or a picture from a previous season related to the part when they clicked on a part! Simple to implement but will drasticly improve the look and feel of the "part description" page! |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
I wonder how I got it running in the first place. Anyways. Thank Pat! |
Re: Team 254 Open-Source Release: Cheesy Parts
Is rubygems.org down a lot? For some reason, it looks like I can't connect to it, and I can't ping it, although the rubygems.org site works just fine.
|
Re: Team 254 Open-Source Release: Cheesy Parts
254
Thanks for posting this. Its obvious that a lot of effort went into the development of this system. I've just finally gotten around to playing around with the working demo and am very impressed. While tinkering I came up with a few questions:
My team tends to run pretty lean, and often the same mentors aren't there on consecutive nights. When that happens things slow down as we try to figure out what needs to happen next. A system like this could really help us keep things more focused from night to night. I'm curious to learn more about how you used it and how well it worked. |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
We didn't have purchasing integration for 2013, but we're working on it for 2014. We kept track of parts needing to be ordered in a Google spreadsheet, and someone would periodically check Cheesy Parts and make sure everything that was in "needs to be ordered" status was added to the spreadsheet. Obviously, this was a bit painful. The designers each make the naming/grouping decisions for the parts that they are working on. The addition of the parts to the system is done sometime between when a file is created and when it is first saved to PDM. You can't really save something without knowing what to call it, and so since Cheesy Parts assigns the part numbers this pretty much enforces itself. Everyone on the team has access to the system, so the responsibility for keeping it updated is shared. Generally, whoever worked on the part last is responsible for updating its status accordingly. This wasn't totally successful, but the worst offenders were some of the mentors... I can't speak for the rest of the team, but in the project manager / shop supervisor role that I mostly find myself in during build season, it was a huge help when confronted with a bunch of students to find tasks for, and in keeping the stress levels down. |
Re: Team 254 Open-Source Release: Cheesy Parts
For someone who has no idea what they're doing with websites, someone mind posting instructions on how to install this? As if I were five please.
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
Just FYI, I've had trouble reinstalling it after Pat updated the software, and haven't gotten it working since. |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
This is a super great idea, and thanks to the Poofs for releasing this open-source. |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
|
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
We're going to deploy this on Heroku and try to set it up. Our lead CAD mentor might be in touch with you guys for running PDM. We had a lot of issues with it last year and have abandoned it for now (Using Google Drive instead). Also, for what it is worth, https://www.digitalocean.com is cheaper than Amazon for micro instance sized stuff and provides roughly the same amount of control. We run our primary site off of digital ocean. It's really because I'm a Linux Container nerd though and not so much about the price. Also, it just so happens our other main mentor is a Ruby wizard so she is taking on setting this up on Heroku. Again, thank you for posting this. |
Re: Team 254 Open-Source Release: Cheesy Parts
I'm having a hard time installing this. I've done it in the past on ubuntu, and everything worked the first time perfectly, but now I'm installing it on new machine, which doesn't have all the dependencies I usually work with.
When I run "bundle exec rake db:migrate", it fails, with the error "cannot load such file -- db". I've tried with ruby 1.9.1 and 1.9.3, and the same error happens. What am I missing? |
Re: Team 254 Open-Source Release: Cheesy Parts
Quote:
I solved it by removing line 16 in the Rakefile (require "db"), and replacing Code:
Sequel::Migrator.run(DB, "db/migrations")Code:
Sequel::Migrator.run(Sequel.mysql2({ :host => "**host**", :user => "**mysql user**", :password => "**mysql password**", :database => "**mysql database**" }), "db/migrations")There was also an issue with require in the add starting user file. I needed to add a ./ before the path name. Finally, the version of sequel (the ruby gem) that installed automatically was totally the wrong version and needed to be updated. |
| All times are GMT -5. The time now is 15:08. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi