Revit API Forum
Welcome to Autodesk’s Revit API Forums. Share your knowledge, ask questions, and explore popular Revit API topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How do I find a direction and a value of AreaLoad from its 3 ForceVectors?

10 REPLIES 10
SOLVED
Reply
Message 1 of 11
Anonymous
957 Views, 10 Replies

How do I find a direction and a value of AreaLoad from its 3 ForceVectors?

There can be 2 or even 3 directions of AreaLoad: ForceVector1, ForceVector2 and ForceVector3. But Revit always draws the AreaLoad as directed to one direction. How do I find that one direction? How do I find a value of that one-directed load, at least at RefPoint (points returned by GetRefPoint method) locations?

 
10 REPLIES 10
Message 2 of 11
jeremytammik
in reply to: Anonymous

Thank you for your patience. Have you explored all its properties and parameters with RevitLookup? I have forwarded your question to the development team. Please hang on...



Jeremy Tammik
Developer Technical Services
Autodesk Developer Network, ADN Open
The Building Coder

Message 3 of 11
Anonymous
in reply to: jeremytammik

Yes I did searched with Revit lookup too, but could not find any appropriate parameter or method.

As far I can not understand the AreaLoad behavior. Here is an example:
I create an AreaLoad with 2 reference points, OrientTo=Project.

If I specify Fz=0, it does not draw load value and direction at all. If I specify Fz=0.01, it draws a quite big area acting in the plane of the AreaLoad. Please see the picture: 


Fz=0 and Fz=0.01Fz=0 and Fz=0.01

Message 4 of 11
aignatovich
in reply to: Anonymous

Hi!

 

You are absolutely right, first of all you should check "Orient to" parameter value. If it is "Project", then Z value is XYZ.BasisZ. If it's value is "Work Plane", then, workPlaneId is refered to SketchPlane element, you can retrieve normal, x and y vectors:

area loads.PNG

 

area loads lookup.PNG

Message 5 of 11
Anonymous
in reply to: aignatovich

Thank you for your answer, but my question is not about the work plane.

I need to know how to calculate the average of ForceVector1, ForceVector2, ForceVector3 (possibly directed differently) and values of AreaLoad at its reference points. Please see the picture:

AreaLoad2.png

 

Message 6 of 11
aignatovich
in reply to: Anonymous

You can try this:

Find reference points position, using AreaLoad.GetRefPoint method, create a curveloop - first triangle.

 

Then to all 3 point add appropriated force vectors (you need to calculate it in model space, if Orient To is work plane), you will get 3 points again, make them to be a curveloop - the second triangle.

 

Then create a solid using GeometryCreationUtilities.CreateLoftGeometry method, then divide solid.Volume to the first triangle area. It will be the average of area load.

 

The second question (the value of area load at point) seems to be incorrect, at any point it is infinitesimal value. It has value (a force) at the desired square only.

Message 7 of 11
Anonymous
in reply to: aignatovich

аignatovich, sorry I don't understand the purpose of your proposal. What I want is two equations. Something like "the direction of AreaLoad is computed as  ForceVector1 + ForceVector2 + ForceVector3" and "the value of load at reference point 1 is computed as ForceVector1.GetLength() even if it ForceVector1 and ForceVector2 are not parallel". By the way I feel these equations are right but I want Autodesk to confirm them.

 

Message 8 of 11
jeremytammik
in reply to: Anonymous

Thank you, Alexander, for all your help.

 

I passed on the updates to the development team and still await a response from them confirming this.

 

Best regards,

 

Jeremy



Jeremy Tammik
Developer Technical Services
Autodesk Developer Network, ADN Open
The Building Coder

Message 9 of 11
dragos.turmac
in reply to: Anonymous

Hi @Anonymous,

 

Your assumptions are correct. Internally, all three forces are being stored as vectors and their length is the actual force. Also, the direction of the load is a vector that, simplified, is (F1+F2+F3).Normalize() - this is not exposed.

I will ask for a request to add an API property the force direction since, well, it is only logical to exist. Also: do you consider necessary to get the plane that approximates the force distribution? It might be useful to find an approximation of force in point Z inside working plane as the distance between Z and the force distribution plane - given the forces decrease/increase in a linear fashion.

 

Hope this helps!



Turmac Dragos
Pr. SW. Engineer
Message 10 of 11
Anonymous
in reply to: dragos.turmac

Dragos, thank you very much for your answer, this is exactly what I expected to hear!

It is a really good idea to add into Revit API proper info about the real direction of AreaLoad and its values at reference points. Of course, the info may have a form of "GetRealDirectionVector" and "GetForceDistributionPlane" methods. But at least we must have a comment how to get them from ForceVectors in RevitAPI.chm. Thank you once again.

 

Message 11 of 11
jeremytammik
in reply to: Anonymous

Thank you very much, Dragos and Alexander, for the answers.

 

I summarised them for posterity on The Building Coder:

 

http://thebuildingcoder.typepad.com/blog/2018/01/areaload-force-direction-cmake-sdk-access.html#4

 

Cheers,

 

Jeremy



Jeremy Tammik
Developer Technical Services
Autodesk Developer Network, ADN Open
The Building Coder

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report