Starting in December, we will archive content from the community that is 10 years and older. This FAQ provides more information.
Further to my previous posts regarding Shared Coordinates and compatible systems:
http://forums.autodesk.com/t5/revit-api/shared-coordinates-remove/m-p/5961546/highlight/true#M13390
I have drawn some conclusions:
In Real World, a Coordinate System comprises Origin (XYZ) and Rotation
In Revit World, I believe that a Coordinate System comprises Origin (XYZ), Rotation, and a GUID defining its "compatibility". This is passed from document to document via the Acquire/Publish Coordinates process. I'd suggest that a source file name is not part of that compatibility group.
In my testing I set up a series of files, based on the same templates (Autodesk default). Rather than Acquire, I used Specify Coordinates At Point. These files could also not be liked by Shared Coordinates because of the "do not share the same coordinate system" error. This was regardless of both files having the same coordinates specified at the same point; so the physical location is irrelevant. My assumption from this is that "Specify Coordinates" generates a new GUID each time.
Given the number of blog posts and forum questions regarding the Revit Coordinate System, users clearly find it to be an unnecessarily complicated structure. From my experience, we have had many hours lost to resolving coordinate issues that would be trivial to manage via the api.
My questions are:
- Are my assumptions correct?
- Is there any way to resolve the incompatible coordinates error?
PS I began a new post as the previous marked solution was not really such, and I hope 2017 may have someting new.
Dear Dale,
The development team closed the wish list item CF-3730 [API wish: determine 'doc and imported instance do not share coordinate system' -- 11294063, 11746144] as fixed with the following explanation:
As I have already tried to explain, using shared coordinates in Revit is not just a question of setting similar XYZ locations - in order for Revit's shared coordinates to function a logical relationship needs to be set up between the files. Allowing the API to set the XYZ coordinate systems directly would fail to set up this relationship and therefore break how shared coordinates are supposed to work, because the changes would directly conflict with Revit's shared coordinate management code. What is being requested is a system that is much more manual than what Revit has today. While there are plenty of reasons to improve shared coordinates, requiring more manual (or API) maintenance is not likely to be a change that we will make. Either way, changing this behaviour is not an API request, but a request for new functionality of shared coordinates. If that kind of change is desired, I recommend adding it to Revit Ideas and gathering support from the Revit community.
The way to do what is being currently being requested in Revit is to NOT use shared coordinates to import links. The project base point can still be used as a reference, but you cannot use "By Shared Coordinates" when bringing in the link. Managing coordinates this way actually does exactly what Dale is requesting. It's a workflow that's supported in Revit, just not by the shared coordinate functionality.
> An add-in could batch process all of the models, collect the coordinate data from the datum family, and apply that data to each shared coordinate system.
An add-in is unnecessary to do this work because this is automatically done by shared coordinates assuming that they have been properly acquired. If I may also point out that "each shared" implies that there is actually no "shared" coordinate system.
> It makes no sense to say the only way to guarantee sameness is to acquire coordinates. What is acquired? GUID? Source file name? Origin? Why can't this be applied via the API?
As far as shared coordinates go, this is the only way. A GUID-based relationship is set up between the files. Setting up the same relationship has been possible via the API via Document.AcquireCoordinates() for a few releases.
With 2018's SiteLocation.IsCompatibleWith() it is also possible to identify if two coordinate systems are the same.
At this point, there is nothing more to do at the API level since there is full exposure of the existing Revit functionality. It is also possible to do what Dale is requesting using Revit coordinates by avoiding using "By Shared Coordinates" when linking in links. Therefore, I am closing this request as implemented in 2018 since that's when the last piece was added.
I hope this clarifies and helps you implement a workflow following best practice and completely resolving (by avoiding) the issues you describe.
Thank you very much for all your input on this!
Cheers,
Jeremy
Can't find what you're looking for? Ask the community or share your knowledge.