Workbench for FreeCAD integrating with OSEDev to provide for collaborative development, parts catalog management and versioning.
Status & Links
Minimum Viable Product
- Login mechanism
- Dialog to let user enter their osedev.org user/name password, which is only saved in memory for the duration of FreeCAD process.
- Open and maintain websocket connection. websocket-client Send upon connection:
- Assembly 2 WB version (if installed)
- OSEDev WB version
- FreeCAD version
- ^ useful for debugging and notifying user if new versions are available
- Show connection status, allow user to connect/disconnect.
- Authenticate websocket connections against osedev user table.
- Maintain event group for connected users in django-channels.
- Simple chat client/panel.
- User list with online/offline status.
- Show FreeCAD version number next user names in the user list.
- Simple django-channels chat service implementation.
- Chat messages logged to db.
- Parts Catalog
- Uses Amazon Cloud Storage to store files.
- Listing of parts
- FreeCAD list panel
- part name - OSE Part Naming Convention
- current lock status
- last modification date and user
- view part details and change log.
- respond with list of all parts upon request
- send lock/unlock notifications and part changes down the django-channels group
- FreeCAD list panel
- User can "open" (download) the part from S3.
- Open file as independent document.
- Open file using Assembly 2 WB "Add" mechanism.
- User can "lock" file for editing.
- FreeCAD: right/click on file or a button to lock/unlock. show what the server thinks is lock status.
- process lock request
- save to db with timestamp
- notify everyone else in django-channel group
- release locks automatically after 12hrs of no activity
- User can "save" (upload) the part while providing a comment for the changes made.
- In addition to normal file save, there will be an upload button. (user can both keep/save file locally and/or upload changes)
- Dialog to collect changes before uploading file to osedev.
- Upload file, show upload progress, show processing progress.
- Request to osedev.org to make sure it's okay to upload (user had lock or nobody else has made changes even if lock expired).
- If lock expired but nobody else made changes allow the upload but lock the file again until the upload finishes.
- Upload file to osedev and begin processing:
- #Part Processing
- upload file and generated artifacts to S3.
- Notify user that their changes were uploaded and lock released. (FreeCAD UI will reflect this)
- make thumbnail.
- webgl view.
- calculate print time for printable parts.
- generate STL and run diff tool. see github for inspiration: 3d file diffs
- create version record and save change comment.
- Automate/assistant in the process of updating dependent assemblies when a sub-part is changed.
- Present list of directly dependent assemblies.
- User can pick which assemblies should be update.
- WB will download all assemblies, lock an assembly, open in Assembly 2 WB, re-fresh parts, upload/unlock.
- Search parts.
- Download older versions of parts.
- One click sharing of screenshot of your FreeCAD model view in chat. simple way to draw on screenshot (just single color/brush size and bitmap if that's easier).