Autodesk Robot Structural Analysis
Reinforcement Concrete API
RSA API – Concrete member design
Contents
RC Design................................................................................................................................. 3
Overview .................................................................................................................................... 3
1.0. Preparing Development Environment ............................................................................. 4
1.0.1. Requirements ........................................................................................................... 4
1.0.2. Wizard Installation .................................................................................................... 4
1.0.3. Creating Solution ...................................................................................................... 4
1.1. Writing the code ............................................................................................................. 5
1.1.1. The First Test ........................................................................................................... 5
1.1.2. Developing the code ................................................................................................. 7
1.2. Understanding the calculation algorithms ....................................................................... 6
RSA API – Concrete member design
RC Design
Overview
This document describes the whole process of creating and distributing the add-in
implementing the external Reinforcement Concrete code (exRC) inside the Robot Structural
Analysis (RSA) environment.
This add-in will enable:
• to create a module for theoretical reinforcement calculation for bars.
• to create a module for theoretical reinforcement calculation for plates and shells.
• to implement a function, which will perform verification of generated reinforcement in
Beams and Column modules.
The wizard generates solution with fully usable communication between external code and
RSA and with samples of dialogues and calculations. Modifications of dialogs and
calculations are allowed. However, they have been developed to minimize required changes.
The most important points of change have been marked with "TO DO" mark in code
commentary.
The additional RC section library (rcuapi) could be used in order to facilitate the
implementation of external code. This library has been used in the example. Complete
information describing library content is available in rcuapi.chm file.
© Copyright 2020 Autodesk, Inc. All rights reserved. Page 3
NOT FOR DISTRIBUTION
RSA API – Concrete member design
1.0. Preparing Development Environment
1.0.1. Requirements
▪ Visual Studio C++ 2008 (Standard, Professional or Team System).
▪ Robot Structural Analysis 2011 or higher installed.
1.0.2. Wizard Installation
There is not setup program. To use the RC Design Wizard you have to copy
some files from RSA DVD into the Visual Studio’s directories.
▪ Locate the VC directory (default installation location is c:\Program
Files\Microsoft Visual Studio 9.0\VC)
▪ Locate the RCDesign directory on RSA DVD (e.g.
D:\SDK\Wizards\RCDesign)
▪ Copy the RCDesign\USERPROFILE\Documents to My Documents.
▪ Copy RCDesign\VCINSTALLDIR to VC directory.
Run VC++ 2008. Choose File/New/Project. If the Wizard was copied properly,
you should be able to choose the RCDesign Wizard as on the screen below:
1.0.3. Creating Solution
Creating the new solution using the RCDesign Wizard is quite simple. One thing
you have to do is to fulfill the form below:
© Copyright 2020 Autodesk, Inc. All rights reserved. Page 4
NOT FOR DISTRIBUTION
RSA API – Concrete member design
Just after the solution is created you should be able to compile it without errors or
warnings.
1.1. Writing the code
This chapter supposes that you are familiar with RSA RC and Slab Required
Reinforcement calculations.
1.1.1. The First Test
Wizard creates the fully workable component which can be launched just after
the first compilation. Solution registers the compiled dll into the RSA environment
so that it can be chosen from the Project Preferences.
Choose Debug/Start Debugging from VS menu. As the executable for debug you
should browse for the robot.exe.
© Copyright 2020 Autodesk, Inc. All rights reserved. Page 5
NOT FOR DISTRIBUTION
RSA API – Concrete member design
From the RSA choose Tools/Job Preferences and select ‘My Code’ from the
available Design Code list.
Now you should be able to perform calculations according to ‘My Code’ and see
some results that are generated by the default algorithms. See the results table
below. Moreover, at this point it should be possible to debug the generated code.
To check it, set a breakpoint at the beginning of the Engine::Calculate and try
if it is reached during the calculations.
© Copyright 2020 Autodesk, Inc. All rights reserved. Page 6
NOT FOR DISTRIBUTION
RSA API – Concrete member design
1.1.2. Developing the code
Once you have tested the default implementation of RC code you can start to
modify the algorithms to meet your code requirements. The most changes you
will probably do in the Engine class.
© Copyright 2020 Autodesk, Inc. All rights reserved. Page 7
NOT FOR DISTRIBUTION
RSA API – Concrete member design
1.2. Understanding the calculation algorithms
Below is descriptive calculations algorithm. Color presents a potential dependence on the RC code. In fact, all functions described in
the green fields should be redesigned.
Simple element. Code independent. Operations on the results or the parameters.
Can be dependent on the code. Block of more complex operation, described in other diagram.
Strongly dependent on the code. This part should be developed in every case. Located in EngineCodeDetail.cpp or MaterialsDef.cpp.
RC library (rcuapi.dll) use. Common functions, depends on the geometry and materials parameters.
NTOL, MTOL, MAXITER – user defined constants (Engine.h).
Default values: NTOL = 1[N], MTOL =1[N*m] , MAXITER =100
void Engine::calculate()
[true]
bool Engine::SetSolverParam() bool Engine::Dimensioning()
[true]
[false]
[false]
steel and concrete parameters
Set errors in section results. Set reults in section results.
© Copyright 2009 Autodesk, Inc. All rights reserved. Page 6
NOT FOR DISTRIBUTION
RSA API – Concrete member design
bool Engine::Dimensioning()
c = m_forces.count() [false]
[true]
RESULT
RESULT= =max
max(RESULT,
(RESULT,result(i))
result(i))
[false]
[i <= c] designForces = [true] bool
boolEngine::DimensioningLongReinf(ForceData
Engine::DimensioningLongReinf(ForceData
i++ ULS, ALS
m_forces[i] designForces)
designForces)
[i > c]
[false]
[true]
RESULT
RESULT= =max
max(RESULT,
(RESULT,result(i))
result(i))
[false]
[i <= c] designForces = [true] bool
boolEngine::DimensioningTranReinf(ForceData
Engine::DimensioningTranReinf(ForceData
i=0 i++ ULS, ALS
m_forces[i] designForces)
designForces)
[i > c]
RESULT
RESULT= =max
max(RESULT,
(RESULT,result(i))
result(i))
[false]
[i <= c] designForces = [true] double Engine::DimensioningForCracking(ForceData
i=0 i++ SLS
m_forces[i] designForces, double maxCracking, bool bOnlyVerification)
[i > c] [false]
[true]
RESULT
RESULT= =max
max(RESULT,
(RESULT,result(i))
result(i))
[false]
[true]
[i <= c] designForces = bool
boolEngine::DimensioningForSLSStress(ForceData
Engine::DimensioningForSLSStress(ForceData
i=0 i++ SLS
m_forces[i] designForces,
designForces,bool
boolbOnlyVerification)
bOnlyVerification)
[i > c]
RESULT
RESULT= =max
max(RESULT,
(RESULT,result(i))
result(i))
[false]
[true]
[i <= c] designForces =
i=0 i++ SLS double Engine::Rigidity(ForceData designForces)
m_forces[i]
[i > c]
RESULT = max (RESULT, result(i))
designForces = double Engine::MaxReinfNMM(ForceData force)
i=0 i++
m_forces[i] double Engine:: MinReinfNMM(designForces)
© Copyright 2009 Autodesk, Inc. All rights reserved. Page 7
NOT FOR DISTRIBUTION
RSA API – Concrete member design
bool Engine::DimensioningLongReinf(ForceData designForces)
bending only in [false] bool Engine::DimensioningNMM( double Mx, double My, double N, bool
the main [false]
direction SimplifiedMethod, IRobotLimitState limitStateType)
[true]
[true]
bending with [false] bool Engine::DimensioningNM( double M, double N, IRobotLimitState [false]
axial force limitStateType)
[true]
[true]
rectangular [false] bool Engine::DimensioningM(double M, IRobotLimitState [false]
section limitStateType)
[true]
[true]
bool Engine::DimensioningMRec(double M, BendDirection bendDirection, [false]
IRobotLimitState limitStateType)
[true]
© Copyright 2009 Autodesk, Inc. All rights reserved. Page 8
NOT FOR DISTRIBUTION
RSA API – Concrete member design
bool Engine::DimensioningNMM( double Mx, double My, double N, bool SimplifiedMethod, IRobotLimitState limitStateType)
initial reinforcement
double fRatio = Engine::CheckCapacity(double Mx, double My, double [false] [true]
fRatio > 1.0
N, bool SimplifiedMethod)
[false]
[return (fRatio > 1.0) ]
[true]
increase the reinforcement : bar by bar i++ > MAXITER
bool Engine::DimensioningNM( double M, double N, IRobotLimitState limitStateType)
initial reinforcement
double fRatio = dEngine::CheckCapacity(double Mx, double My = 0.0, [false] [true]
fRatio > 1.0
double N, bool SimplifiedMethod = false)
[false]
[return (fRatio > 1.0) ]
[true]
increase the reinforcement: theoretical area i++ > MAXITER
© Copyright 2009 Autodesk, Inc. All rights reserved. Page 9
NOT FOR DISTRIBUTION
RSA API – Concrete member design
bool Engine::DimensioningM( double M, IRobotLimitState limitStateType)
[true]
MUlt =maximum moment for reinforcement calculation for MRd
MRd/M > 1.0
tension reinforcement only and for (M-MRd)
[true]
fabs(MUlt –[false]
M) >
[false]
increase or reduce the reinforcement : theoretical area MTOL
long IRCSolver::SolveResistanceM ( double resistanceAxialForce = 0.0,
enum Axis direction )
double MUlt = IRCSolver:: InternalMomentX
double Engine::CheckCapacity(double Mx, double My, double N, bool SimplifiedMethod)
[true]
SimplifiedMethod double Engine::CapacitySimplifiedMethod( double Mx, double My, double N)
[false] long IRCSolver::SolveResistance ( double designAxialForce, double designMomentX,
double designMomentY )
[true]
fabs(N)>NTOL double Capacity = IRCSolver:: InternalAxialForce / N
[false]
[true]
fabs(Mx)>fabs(My) double Capacity = IRCSolver:: InternalMomentX / Mx
[false]
double Capacity = IRCSolver:: InternalMomentY /My
© Copyright 2009 Autodesk, Inc. All rights reserved. Page 10
NOT FOR DISTRIBUTION
RSA API – Concrete member design
bool Engine::DimensioningTranReinf(ForceData designForces)
[false] bool Engine::DimensioningVVT(double Vy, double Vz, double T, double
shear in one [false]
direction My, double Mz, double N, IRobotLimitState limitStateType)
[true]
[true]
pure torsion [false] bool Engine::DimensioningVT(double V, double T, double M, double N, [false]
or
pure shear IRobotLimitState limitStateType, BendDirection direction)
[true]
[true]
[false] bool Engine::DimensioningV(double V, double M, double N, [false]
pure torsion
IRobotLimitState limitStateType, BendDirection direction)
[true]
[true]
[false]
bool Engine::DimensioningT(double T, double N, IRobotLimitState limitStateType)
[true]
© Copyright 2009 Autodesk, Inc. All rights reserved. Page 11
NOT FOR DISTRIBUTION
RSA API – Concrete member design
double Engine::DimensioningForCracking(ForceData designForces, double maxCracking, bool bOnlyVerification)
[true]
double wd = Engine::CrackWidth(ForceData designForces) wd < maxCracking
[false]
[true]
increase the reinforcement bOnlyVerification
[false]
[return (wd < maxCracking) ]
bool Engine::DimensioningForSLSStress(ForceData designForces, bool bOnlyVerification)
[true]
bool Engine::CheckSlsStress(ForceData designForces)
[false]
[true]
increase the reinforcement bOnlyVerification
[false]
© Copyright 2009 Autodesk, Inc. All rights reserved. Page 12
NOT FOR DISTRIBUTION