Creating a Plugin to convert new SolidWorks file to old Solidworks Versions

What do you think of the possiblity of writing a plugin that records the commands in the feature tree into a text file? Then this text file could be loaded in an older version of SolidWorks such that the model in the newer version of SoldWorks is recreated in an older version of SolidWorks. I know that some commands aren't compatible like the lock mate. However work arounds can be made like for the lock mate constraining a part to the origin and planes of the part its locked to.

SO you may only use the same features cuts, bosses, fillets and so on, but other uses features that have had things added to them thru out the SW evolution.

lets take your boss extrude for example, depends how far you want to go back, you were'n't able to a offset extrude, meaning your sketch is on a plain that is in the wrong position and you want it to start higher than the plane or you select the vector portion in the propoties to push the extrude where you want it to go, those option might not be in the older version you want to save back to.

You build a part with a feature not in the older version, you put extrudes, cuts, sweeps, fillets and so on on to the model, you try to save it back, remember ther is history involed in this whole proccess, the new feature can't be made....there is no feature for it and every feature after that is gone, thear is no parent to create it, no face, no edges...NADA!

Ok so the mustang engin, not quite. So here is mine 62 bug, 6 volt system........now try to put a 12 volt battery in it....BOOM!

In my opinion... If you can record macro which will register all steps of full document rebuild "ForceRebuild" (Crtl+Q), then you are able to record whole structure of feature manager tree.Then just play macro in older version, and ... here we go. I dont know how to use API and if such recording is possible but I think that such procedure should be considered if we would like to read files.

Non API method is to save parts in neutral format (parasolid, igs, step etc) and import in older SW version then use FeatureWorks functionality for features recognition and parametrization.

The recording, capturing the steps, of a rebuild seems like a plausible idea. To use this in an older version to recreate would be cool. Can it be done? Even if it came thru with errors I am Always fixing those anyway.

If this is possibe you would have to run the marco in the new version of SW and save the infomation in to a file then open the old solidwork and run an differnt macro that will read the file and create the part with error catch so it dose not error out on features that don't exist in the old version

I would use the ModelDoc2.FirstFeature Traverse all Feature and save it in a xml file. Look up FirstFeature in the API help and there are examples how to Traverse an part

I don't have time to try this but it dose sound like it might work if you can capture the feature info and re-write it

Dammit, I have had this EXACT idea for abhout 6 months now, but I've been sitting on it because I don't know how to program. Also, I will admit that I am a bit selfish and would like to have had the glory

Anyway, since the cat is out of the bag here are my thoughts - in all cases examples are moving backwards from 2010 to 2009 and are working on parts only:

Three main parts to this:

1. Check - Specify the version you wish to go backward (eg 2009) and then this macro will run through the part and check for 2010-specific features (parametric equation-driven curves, multi-body sheet metal) and throw up warnings if any are present - maybe allow parametric equation driven curves to be converted to fit splines. Things such as extend surface, which have changed between 2009 and 2010 in certain circumstances may throw up a warning but proceed anway.

This can probably be implemented last, since users can just hope for the best on most stuff.

2. Export - saves Feature Tree info to a readable format - TXT or XML, etc. (ever opened an SLDPRT in Notepad? - not like this!!) Users should be able to open the file and modify values directly (consequences of which notwithstanding).

Basic features like extrudes should be easy to do. Have the options laid out similarly to the actual feature

Feature:Extrude

From:SketchPlane

To:Blind

Direction:1

Distance:10

Merge Result:1

Direction2:0

...etc, etc.

Sketches may be more difficult - is it possible to capture and assign entity names? This is important if you have gone back and edited sketch entities such as adding a new line and then deleting an old one.

How are splines handled?

What about Features that rely on picks on screen - Delete face, Surface Trim, etc.? Can macros capture this information and export/import it correctly?

3. Import - fairly straight forward - reads the XML file, recreates the part. One consideration here is to somehow make sure that the XML format remains futureproof - make sure that when 2011 comes along and adds a new option for extrudes, the new output won't confuse the 2009 Importer, otherwise you will have to update it.

So that's my 5c - look forward to seeing how this goes! Who knows, if I start on API stuff one day I may even be able to contribute meaningfully

Maybe I am missing something, but surely you want to get rid of the design tree (and lock the part or assembly down) especially if you are sending it out to a customer or another designer.....less chance of fiddling or corruption?

If you really do need to get a body or surface, a single part or full assembly, into an older version of SW, just lock it down using parasolid format, and reopen it in the older SW.

You will need to set the "save as" options to go to an earlier parasolid version - eg version v18.0 = sw2008 v19.0 =sw2009?

This should prevent any errors, or loss of minor any details, and save time as you wont have to track down and repair any rebuild errors, and you will have a robust part that will not suffer from future version rebuild errors.

Solidworks does NOT want to support older versions because it's a marketing scam to force their customers to purchase the subscription. It's that simple. There is NO valid logical reasoning for the lack of this feature. I've heard all their excuses and technical mumbo-jumbo. I'm also a programmer and their reasoning just doesn't pan out. But stop and consider this: Why would a vendor program its software to export/import using other vendor formats but not their own format? I mean, review Simon's solution he just advanced:

Simon Richardson wrote:

If you really do need to get a body or surface, a single part or full assembly, into an older version of SW, just lock it down using parasolid format, and reopen it in the older SW.

You will need to set the "save as" options to go to an earlier parasolid version - eg version v18.0 = sw2008 v19.0 =sw2009?

This should prevent any errors, or loss of minor any details, and save time as you wont have to track down and repair any rebuild errors, and you will have a robust part that will not suffer from future version rebuild errors.

Really!?! This is the best way for a vendor to Save-As to a previous SW version? This is just pathetic.

I'm not picking on you Simon, I know you are trying to help. Thanks!

Simon Richardson wrote:

Seriously? why do people insist on going backwards?

The reality is many of us nedd this feature because we have to interface with other vendors and customers running different versions of SW. Not everyone upgrades to the latestest and bugiest SW version. Those of us who have been around a very long while know to NEVER upgrade production to the latest SW version until it reaches at least SP4 (semi-stable release). Anything before SP4 is just a release candidate.

I just have to scratch this scab though- I still dont see why one would need to have a "live" SW file to communicate with others....what am I missing? Even when I am working with someone else running the same version of SW as myself, I generally still only send out parasolids (or PDFs for drawings).

I guess if you are using configured parts it would help minimise the number of files, but otherwise? Just give them a dumb file that they can chop, and add to, as much as they want, without upsetting the apple cart!

If this is a potential reality, of writing a chunk of code to make a parametric model in earlier versions, it seems it should work WITHOUT having to rebuild the existing model, as that would require the current version that the model is to be exported from. It would be WAY neater if something like SWDocManager.dll would access the feature names and property manager input values to a sufficient level that the model could be extracted. This would (or might) allow for all features that are recognized at the current version of the SWDocManager to be written to the XML file, and the current version of SW on the the machine should then recognize all feature types in the XML file. Problem is, I don't think the features are accessible from the current SWDocManager. Just things like external references and custom properties is what I am familiar with. Add this to the wish list!!

A lot of contractors do work with multiple customers, all on different versions of SolidWorks. It's very easy to accidentally open up an old file in a new version and then save. Granted, you should have backups but this whole going backwards thing is a case of: it doesn't happen very often, but when it does, you REALLY need to be able to go backwards.

I think this is an excellent idea. The stark reality is there are very few features ever used which are unique to the newer version of solidworks. Mostly we are using exactly the same features, just in the newer version of solidworks.

As for parasolids. I personally much prefer IGES. Colours are preserved and I've never had an IGES open up with a model standing on it's head (front and top planes swap). It's ironic that an external format works better for me than solidworks internal formats. It also means other users regardless of software package can be sent files without having to resave in another format. Inventor, Pro-E, solidedge, no problems.

For backwards compatibility I archive all of my models before changing to a newer version. So if I get stuck with a bug riddled service pack or release I can go backwards and still have everything available.

Solidworks does NOT want to support older versions because it's a marketing scam to force their customers to purchase the subscription. It's that simple. There is NO valid logical reasoning for the lack of this feature

I know conspiracy theories are fun, but this one is as valid as the rest. There is at least one reason. Every new release of SW has new internal parameters that are not in the previous version. In some cases (like lofts), the entire algorithm to develop a feature may chage, even if the user interface looks largely the same. If you're going to write to previous versions, that is the single biggest issue.

AutoCrayon can go back to previous versions because it is basically the same repackaged flan it has always been for the last twenty years.

A couple years ago a Baren-Boym was promising a program to go back to previous versions. It never really materialized.

I think it is certainly a viable program/solution. However, the simple fact that the time it would take to create such a program would not be worth the reward (else I would of made it a long time ago).

The more you work with the SW API in depth the more you learn its little quirks and bugs, and the first thing that comes to mind when contemplating a solution like this is that it would be far too problematic and the maintenance of such a program would be quite simply crazy.

It's totally possible. The question is, would you really want to go there? We all know that fresh SP's have new features that don't exist in previous versions, so the models will not be stable even if work-arounds are made to help with that. Design intent can and will probably be lost within "more complicated" or feature driven models. And don't forget about the external reference nightmares within assemblies. It's like you are trying to create the 1,000 mpg carburetor. If you some how you did develop a retro file conversion program, you my friend would simply dissapear, and know one will know what happend to you. Just kidding. Dude, you have SW finest working against you. They would stand to loose millions in sales. People not being forced to updgrade every stink'n year to read their customer's "newer" files. There is definately a market for it.

Multibody parts were introduced in 2003. Does anyone know how to open multibody parts in 2001 if the code isnt' there for it.....

That's just one of doznes.

Guys, come on. There will be LIMITATIONS!

Why does everyone think software is magic!? Why doesn't my 2010 mustang gt engine compatible with my 1964 mustang? It's amazing how many mechanical engineers think you can just make everything work with older technology. The point is, why would you rework such an older model when software tchnology is moving forward so fast? Why doesn't my blu-ray work in my DVD? Are we that naive?

If you want backwards compatibility sitck with dumb 2d geometry where things never change.

Yes there will be limitations. But in models where no such limitations exist, why is there no backwards compatibility?

Probably 99% of the models I use are extrudes, cuts and revolves. Most (in fact almost all) were created in prior versions, yet once opened in a later version they won't work even in the version they came from.

A 2010 mustang engine can work in a 1964 car, similar transplants are common place, so your analogy is a little lacking. This is not about physical limitations, this is users attempting to fix a problem solidworks has created.

Software technology moving forward so fast? I don't see it. I see new features of dubious value and poor reliability.

SO you may only use the same features cuts, bosses, fillets and so on, but other uses features that have had things added to them thru out the SW evolution.

lets take your boss extrude for example, depends how far you want to go back, you were'n't able to a offset extrude, meaning your sketch is on a plain that is in the wrong position and you want it to start higher than the plane or you select the vector portion in the propoties to push the extrude where you want it to go, those option might not be in the older version you want to save back to.

You build a part with a feature not in the older version, you put extrudes, cuts, sweeps, fillets and so on on to the model, you try to save it back, remember ther is history involed in this whole proccess, the new feature can't be made....there is no feature for it and every feature after that is gone, thear is no parent to create it, no face, no edges...NADA!

Ok so the mustang engin, not quite. So here is mine 62 bug, 6 volt system........now try to put a 12 volt battery in it....BOOM!