Hi. I have a C++ unmanaged arx which is for vanilla AutoCAD, but now we got to add some extra functionality if the host application happens to be Civil 3D. So I've installed Civil 3D 2013, and made an unmanaged C++ arx which uses COM to talk to Civil 3D, which my vanilla arx can load and invoke as & when. I don't do anything too difficult, just some querying of surface entities, and this works well so far.
We need to support Civil 3D 2010 - 2013 (and 2014 very soon I guess). My vanilla arx's can cover AutoCAD 2010,2011,2012 with one arx and 2013,2014 with another. I just use the ObjectARX SDK for the earliest version in the 'family', ie 2010 and 2013.
Is this the case for Civil 3D, if I am using COM? I suspect not; for Civil 3D 2012 I know I have to #import AecXUiBase70.tlb (amongst others), and for 2011 I think it's AecXUiBase67.tlb. But maybe can someone clarify that please? I have access to all the Civil 3D versions I need via my ADN license, but I don't want to download and install them unless I really have to.
Thanks for any tips.
Solved! Go to Solution.
Solved by augusto.goncalves. Go to Solution.
Hi,
Unfortunately this is required for Civil3D as the .TLBs change between versions, which means rebuild your app for each version.
The alternative is use late-binding, which means don't use the .TLBs. This is quite easy in .NET languages, but a little more complicated on C++, so my suggestion is rebuild the .ARXs
Some developers just copy the .TLBs between machines, which is not supported and may not work. Also do consider test your application on each version you plan to support. Note that the Civil 3D COM API is being replaced with a .NET API, so some features where removed on newer versions (so testing is strongly recommended).