Monday, April 23, 2012

Comparer Project Part 1


Introduction
I started working as CAD-GIS engineer on 2nd of March, and ever since I haven't been posting anything new.

Recent activity
As I try to build a recap on what I have done so far I thought I’d share what’s been realized so far. Although I won’t be sharing the whole project here, I’ll be posting some portions and insights on how I dealt with the given assignment.
Let’s start by explaining what I had to accomplish.

My first small project
Too save you from a long story … In short …
I had to compare the contents of 2 AutoDesk Autocad DWG drawings on a few layers. Two technical drawers started on the same drawing and had to classify some objects on those layers. Because both can classify them differently, I had to compare the differences once they end their classification.
They had to be able to see and localize the differences and fix them in an appropriate manner afterwards.
That’s the project in a nutshell J

Architecture
My goal was to build a Data Access Layer that has the potential to be used in other projects as well. I also integrated some classes I wrote 1-2 years ago to make the application much more stable and flexible. I did the best I could to build a Model-View-ViewModel environment.
Let’s start by sharing a picture of the architecture I used within the project. 


Database Assembly DAL
The Data Access Layer is only the start of what should become a wrapper around the Autocad Libraries. The wrapper allows you to decouple layers and gives you the possibility to Unit-Test your project with sample data without the necessity of having a Autodesk product at hand to test the decoupled layers.
Although this method seems tedious at first, it should result in a gain of speed when developing new applications. 

Objective DAL
Basically you're building a library that gives you access to clean and tested code which reduces bugs and errors in future development.
At the moment, I am only working inside a Map environment, but if adjusted slightly, this setup should allow you to extend the framework to support programming towards other CAD Autodesk products build on AutoDesk AutoCad and expose their API.





Looking at this picture, it is quite obvious that using other products, build on AutoDesk Autocad's basic module, will end up using a AutoDesk Autocad Drawing as well.

Object oriented programming and libraries
Because we program in an object oriented environment it's an ideal opportunity to exploit this and build a reusable library. Although this is a first step to build something flexible and reusable, the path towards a good library won't be without it's pitfalls and setbacks. 

What might be reusable and valid code for your library in one project, might become unusable in certain particular situations. I'll try to prevent that as much as possible but I still have a long way to go to become a better object oriented programmer to exclude that from happening completely. Using the correct methods and pattern to build robust and flexible libraries will be a big challenge.

If you talk about objected oriented design, libraries and flexible code, we can't exclude the use of interfaces. That's why I'll be using those throughout this project because they are very powerful and give you the possibility to program flexible environments.


What's next?
In a next post I'll be explaining what I've done with the DAL and I'll create an example in C# demonstrating what the methods inside the classes do.

No comments:

Post a Comment