Java CAD (Computer Aided Design) Program

Using Java and Graphics2D, implement a 2D CAD drawing program.

This is an individual assignment.

This assignment is due Week-6, Friday 5 PM, via GitLab, with the PLAN.md part due two weeks earlier on Week-4, Friday 5 PM.

Overview

Your program should be able to be used by someone to create a design or a floor plan. You would be welcome to focus your program on a particular application area (backyard designs, buildings, small parts, room layouts, fonts, etc.), or you could keep it generic. The elements that make up the design will be composed of different basic items (lines, polygons, rectangles, arcs, text, etc.), which will have size, position, and other attributes.

Key Requirements

  • Elements in the drawing should be able to be grouped and moved in their groupings, which are then rendered for viewing. (hint, Week-3’s lecture might be helpful for this.)
  • The drawing should have a particular scale such that an item’s size/location will be stored with units that map to the actual size of what you are designing. For example, say it is backyards, then one may use meters for the internal representation and then scale it down so you can see the entire backyard on your screen.
  • Your project will also be marked on code quality. (see the marking criteria for further details).
  • Your project should implement a number of ‘features’. See the features section and marking criteria for more information.
  • You must submit a 5-minute video showing the usage of your application (details below)
  • You must include a PLAN.md of approximately 400 words (one page), which details what your application will do. What some of the challenges might be, and how you plan to solve them? This plan must be submitted two weeks before the assignment is due. You will not be held to this plan.

Additional Requirements

  • You must not use any external libraries (apart from the two JUnit JARs provided under the lib folder). Your application should run as a self-contained Java application.
  • You must include a (short) README.md explaining how to run and use your application.
  • You must include a statement of originality in your README.md file.

Template / Submission

We are using the school GitLab for developing and submitting this assignment.

To help you get started, we have created a simple CAD program as a base that lets you draw lines and move lines. You can modify this template or even delete it and start from scratch. If you decide not to use the template you must still fork the project.

To get started you must:

Please do not change the name of this project, as our script will download your work based on your uni ID and the name of this project.

[Update 27/08/22] If you have an assignment from another class with the name you may change the name to comp4610-assign1. Future assignments and labs will use this revised naming convention.

Features

This assignment is open-ended, and you are free to add any features you think to be appropriate. As a guide, we have given some examples and what score they would likely receive (if done well).

A submission receiving a pass mark would be able to

  • draw circles,
  • draw triangles, and
  • label parts of the design (a label is a text that describes an item within the design and has a line between the text and the item).

A submission receiving a credit mark would also be able to…

  • pan and zoom (via Graphics2D transforms, and not using the built-in sliders),
  • draw curves/arcs, and
  • add measurements.

For a mark of distinction or high distinction, you would need to add additional features that, from a computer graphics perspective, are both difficult and creative.

We suggest implementing all of the features listed under the pass and credit sections before implementing more advanced features. Also, feel free to use the built-in Graphics2D methods. However, custom implementations of these methods, which allow for features not available under Graphics2D, will go a long way towards demonstrating a solution that is both difficult and creative.

Video

You are also required to create a short 5-minute video (max) of your implementation working. If your video is longer than 5-minutes, only the first 5-minutes will be assessed. In the video, demo the key features and highlight your design and development approach.

There are several important constraints on the video:

  • The video format must be mp4 and play on our “lab machines” (check using the ffplay on a Linux VDI accessed via global protect or using a Linux Ubuntu distro using ffplay),
  • The video must be at most 100MiB (please check this BEFORE you upload)

You might find Zoom to be useful for generating these videos, as it can be used to record both your screen, and your voice.

Originally the plan was to just use the school’s GitLab server for submitting the assignment, however, as it turns out there is now a 10MB limit on file size. So for the code and documentation, please still submit it via the GitLab server, however the video will need to be submitted via wattle (a submission link will be available shortly).

[Update 27/08/22] We’re now using GitLab for the video submission. Please include a file named video.mp4 in your repo when you submit, and keep it less than 100MB.

Note: because git tracks changes, your repo will quickly grow if you make changes to the video or add or remove videos multiple times. For this reason, if you need to edit your video, work on it outside your git project and only include the finished file in the repo.

Plan

You will need to submit a PLAN.md file before the end of Week 4. This should be around 400-words long and detail concretely what your application will do, what features you will include, what some of the challenges might be and how you plan to resolve them.

You are not held to this plan; if your project ends up different, that is not a problem. Name your plan PLAN.md, and submit it via GitLab by performing a commit and push. If you do not push, we will not be able to see or mark it.

Marking Guide

This assignment will be marked out of 40. And is made up of 4 components.

  0-9 10-13 14-17 18-20
Extent and usability of artefact delivered. Only a small number of features are implemented or working. The basic set of features are implemented and working well. Several advanced features have been implemented and work well. Features implemented go well beyond the requirements, are complete and work very well.
  0-4 5-6 7-8 9-10
Quality of artefact delivered Little attention has been given to code quality. Code is nicely formatted and appropriately commented. README.md provides instructions for running the application. Implementation is robust, and the design is good. Moderate level of testing included. README.md provides instructions for running and using the application. Design outstanding in terms of simplicity, efficiency, coupling, and cohesion. High level of testing included. README.md provides instructions for running and using the application.
  0-2 3 4 5
Video Summary A minimum effort was made. The video summarises what was done but it is unclear or missing important information. The video is clear, concise, and complete. The video is clear, concise, complete, and at a high level of production quality.
Plan Little to no effort has been made. Plan file submitted but lacks detail. Plan describes well the expected functionality of the program. Plan describes well the program’s expected functionality, anticipates some issues, and provides strategies for resolving them.
bars search times arrow-up