About Hyeseon

Hyeseon's walkthrough

Pen mouse CAD app for Android


About the Project

The client requested a program which would allow a drawing proportional to the actual measurement. This goal was to digitize the sketch process while coating a car. The following is a non-exhaustive list for the software.

  • Basic drawing features
  • Straight lines, polygons, freehand drawing
  • Inserting texts
  • Inserting points, or starting shapes from points
  • Change colors
  • Snap on existing objects
  • Basic navigation using the touchscreen
  • Editing features like selection
  • Save to internal storage
  • Export to a CAD program
  • Information such as color must not be lost during the progress

There was an additional update planned to compensate the drawing using a gyro sensor, but was ultimately cancelled because the accuracy was not enough.

Implementation Details

The first release of the project was implemented as the following:

  • For CAD compatibility, the internals of the internal file somewhat corresponds to the DXF file format
  • Shapes are saved block-by-block
  • A block can have multiple shapes. However, they must be connected.
  • Separation of pointing device inputs and touch inputs
  • Pointing device inputs are separately handled
  • Basic multi-touch handling like pinch to zoom
  • Segregate touch screen events from pointing device events
  • Internal data structure consists of polygon, points and texts
  • Curves are not supported because it would lead to unnecessary complexity, and the client would be post-processing the sketch from a CAD program anyway.
  • Therefore, freehand drawing is actually implemented as a polygon with many points.
  • DXF export is implemented by hooking to a JavaScript library
  • React Native app was being used as a bridge
  • In planned additional versions, I was going to use the in-app JavaScript feature from Jetpack instead.

Figures

Fig. 1 - The user interface of the resultant software. It consists of a toolbar and the drawing UI.

Contribution and Information

  • Period of Contribution
  • First release: 11/2022 ~ 12/2022
  • Planned additional features: 7/2023 ~ 9/2023 (cancelled)
  • Total Participants: alone
  • My Roles: entire designing and development
  • Used Tech Stacks: Kotlin for Android, React Native (used in the initial release for bridging with JavaScript code)

I cannot provide the actual software and/or the entire source code due to the NDA.