When talking about file format compatibility, it is important to note and understand exactly what ZWCAD+ is trying being compatible with. With the origins of DWG and DWF file formats firmly rooted with the Autodesk AutoCAD product, this is what will be used as the benchmark for what is expected from DWG and DWF files.
DWG – Entities
The first and most obvious thing for me to check is that DWG files opened in ZWCAD+ contain the same basic list of entities that are contained within AutoCAD. With my software developer hat on, I know that reading data from a file format such as DWG is fraught with obstacles. The software needs to be written in such a way that it can cope with and understand all the possible varying ways in which the DWG file can validly be structured. If it is structured in a way that the software does not understand, it might result in entities being omitted, or converted to other more generic types.
Therefore my first test is to open up a range of drawings, and simply perform a count of the various entity types that my test drawings contain.I have four drawings, each of which contains various types of entities. Below I have created a table showing the entity types and count of each.
Figure 1 - Entity Counts
While this is at its core a very basic test, we are indirectly testing quite a wide range of features, and it is a good way to establish compatibility of many of the fundamentals in one simple process. ZWCAD+ matches AutoCAD exactly, which is a pretty good start.
DWG - File Sizes
Another way to see if AutoCAD and ZWCAD+ are doing different things with the file format is to compare file sizes. Below is another table showing the file sizes of the same four files, when saved by AutoCAD vs. ZWCAD+.
Figure 2 - DWG File Sizes
ZWCAD+ gets pretty close to the file size AutoCAD creates, but it is not a 100% match. It’s reasonable to have some degree of variance though, and I’d say this is well within what I’d call acceptable. We can infer that ZWCAD+ is saving the data in a very similar way to AutoCAD.
DWF – File Sizes
As with DWG, comparison of the DWF file sizes created by both AutoCAD and ZWCAD+ can be revealing. Here is a comparison of two sets of files created using the same DWF plot configuration.
Figure 3 - DWF File Sizes
Interestingly, ZWCAD+ produces files that are in some cases smaller than AutoCAD, and in some cases larger. While not necessarily an indication that the file has compatibility issues, it is certainly worth bearing in mind. The real test will be visually inspecting them in Autodesk Design Review.
DWF – Appearance
Visual inspection of the two DWF version shows that ZWCAD+ imitates the AutoCAD DWF format with impressive likeness. Line weights and types are spot on. Hatching is the same, and annotation and dimensioning is indistinguishable from a true AutoCAD DWF.
Essentially, except for the slight difference in the margin (which incidentally was probably my fault in the first place…), I cannot visually tell the two DWF files apart.
Figure 4 – DWF ZWCAD Screenshot
Figure5 - DWF AutoCAD Screenshot
Initially I thought I would be optimistic and click on the “Online” tab on the ribbon, and click Save to Cloud. Of course, some configuration is required, and I was quickly presented with a message stating that “ZWCAD+ Syble” was not enabled.
Helpfully though, right under my mouse was an “Open and Configure” button. I clicked the button, and was immediately taken to the Online tab in the Options dialog box.
Right at the top is an obvious checkbox saying “Enable cloud storage”, which enabled all the other options for setting up a cloud storage provider. I have a Dropbox account, so I selected that, and clicked the “Authorise” button. The Dropbox website then popped up. After entering my username and password, ZWCAD had been authorised to use my account.
The configuration process was very, very simple.
Working on the Cloud
Once configured, working on the cloud is surprisingly easy. From the Online tab, I can simply click “Save to Cloud”, which then presents the “Save As” dialog that you’d normally get when saving a drawing. Automatically selected is a local folder, named “ZWCAD+ Syble”. Clicking “Save” waits for a moment as if it’s just saving the file, and then just closes, with nothing particularly indicating it had been uploaded to a cloud service. The process is very transparent, to the point where I felt the need to check it had really worked. I then logged into my Dropbox account to verify it had saved, and sure enough there it was, in a new directory created for my ZWCAD+ work.
I can see this feature being an effective backup solution, and an excellent way to share up to date versions of the same drawings with others.
.NET API Compatibility
Being one of my speciality subjects, this is the part of this review I have been looking forward to.
Porting an Existing Project
For this, I thought I would go all-out and port over one of my most popular developments, my survey fixing utility. Essentially the purpose of this tool is to convert a 2D survey drawing into a 3D survey drawing (if you want to find out more, visit http://howtoautocad.com/autocad-civil-3d-survey-fix-tool/).
Thinking about the process of porting over my AutoCAD .NET projects, I originally figured this would involve re-writing some code, so that I am using the type libraries of the ZWCAD+ application. I supposed that it would probably involve modifying a few properties and methods here and there to suit what is required by ZWCAD+.
However, I had helpfully been given a document that sets out how to migrate projects from AutoCAD .NET projects to ZWCAD+ .NET projects, and I was amazed to find that the process is claimed to be surprisingly simple.
The first step is to set the .NET build version to 4.0, and replace any references to AcMgd.dll and AcDbMgd.dll with the ZWCAD+ versions of the same files. This is of course pretty easy to do. Next, it is necessary to update the relevant namespaces. For example, my survey fixing utility was written in VB.NET, and required the following changes to the imports statements at the top of the application:
Figure 6 - Namespace Changes
There were a few other instances throughout the project that required tweaking, but again this was only modifying namespaces as shown above. Apart from these very minor changes, amazingly, nothing else is required at all. All of the properties and methods that I was using in the original AutoCAD API appear to have a valid corresponding ZWCAD+ equivalent, because there were no highlighted errors in the IDE.
Building the project also yielded no errors – at this point I have to confess I was thinking to myself “there is no way it is that simple…”
However, calling the NETLOAD command from ZWCAD+ and selecting the project actually worked first time. Running my SURVEYFIX command, which is how my program is executed, worked first time. The whole conversion process worked first time, and my software works exactly as expected in ZWCAD+.
I cannot overstate how impressed I am with the ZWCAD+ API. It mimics the AutoCAD API very accurately, allowing developers such as myself to reuse existing code, essentially without changing anything except the project references. To convert my project over to the ZWCAD+ .NET API, there were only had a handful of things to change, all of which took roughly 5 minutes to update.
The other big plus is that people who have learnt to develop for AutoCAD have no need to re-learn the API for ZWCAD+, as I might have expected. Because ZWCAD+ has imitated AutoCAD so well, all learning of the AutoCAD API automatically means you can also develop for ZWCAD+ as well. Developers for ZWCAD+ will also be able to benefit from the wealth of information already out there for developing .NET applications for AutoCAD.
I am a huge fan of the Autodesk AutoCAD application, but I have always been intrigued by alternatives that essentially do the same type of thing. I have never seriously considered changing my application to an alternative, but with the product quality of ZWCAD+, and the incredibly accurate likeness to AutoCAD, both in its impressive compatibility and development API, I will most certainly be considering ZWCAD+ when I want to upgrade next.