Hi all,
We've developed a plug-in for Revit which exports the rooms and geometry data from a model to a database. Some of Jeremy Tammik's blog posts offered great help in achieving this. Everything is working just fine. However, we’ve got a question regarding the generated SVG paths. Please check the following image of a room and its corresponding path:
M 61.828 80.873 # m 61.828 80.873 # 1 L 61.828 82.735 L 70.866 82.735 L 70.866 82.677 L 82.062 82.677 L 82.062 80.873 L 82.062 60.902 L 82.062 58.686 L 61.828 58.686 L 61.828 60.296 A 7.218 15.483 0 0 1 67.738 70.036 A 7.218 7.314 0 0 1 67.911 70.578 A 7.215 7.215 0 0 1 65.278 78.395 A 7.218 7.314 0 0 1 61.828 79.762 L 61.828 80.873 Z
What do the coordinates actually represent? We don’t really know how to interpret them.
We would like to know how we can convert this path to millimeters based coordinates. As an addition, it would be great if we could convert the points relative to the site survey point.
Any help would be greatly appreciated!
Solved! Go to Solution.
Solved by jeremytammik. Go to Solution.
Dear Bryan,
Thank you for raising this question here in the public forum after our preceding private email conversation, and congratulations on finally succeeding to post it!
I am glad that my previous work on this was useful to you.
What these coordinates mean is of course entirely dependent on how you generated them.
If they come straight from the Revit database, they are presumably still using the built-in Revit database length unit, which is imperial feet:
http://thebuildingcoder.typepad.com/blog/2011/03/internal-imperial-units.html
In my more recent work, I have always proceeded as follows before exporting any coordinate data from Revit:
That makes the output file more readable for Europeans and all other non-imperial users, it saves lots of processing effort and space by working in integer values instead of doubles, and the output files are smaller, lacking the decimal separator and post-comma digits.
Is that the answer to your question, or do you mean something different?
If your question is more complex, you may have to post some code snippets demonstrating how this output is retrieved from the database, processed and generated.
Oh, reading the last two sentences clarifies things a lot more.
Here is a more recent effort showing how to convert to millimetres:
https://github.com/jeremytammik/ElementOutline
https://github.com/jeremytammik/ElementOutline/blob/master/ElementOutline/Util.cs#L127-L133
public static int ConvertFeetToMillimetres( double d ) { return (int) Math.Round( _feet_to_mm * d, MidpointRounding.AwayFromZero ); }
https://github.com/jeremytammik/ElementOutline/blob/master/ElementOutline/Point2dInt.cs#L36-L45
/// <summary> /// Convert a 3D Revit XYZ to a 2D millimetre /// integer point by discarding the Z coordinate /// and scaling from feet to mm. /// </summary> public Point2dInt( XYZ p ) { X = Util.ConvertFeetToMillimetres( p.X ); Y = Util.ConvertFeetToMillimetres( p.Y ); }
I hope this helps.
I am looking forward to hearing more about how you end up solving this and what you are doing with it. Thank you!
Best regards,
Jeremy
Can't find what you're looking for? Ask the community or share your knowledge.