1 //////////////////////////////////////////////////
2 //
3 //   ChModuleVehicle.i
4 //
5 //   SWIG configuration file.
6 //   This is processed by SWIG to create the C::E
7 //   wrapper for Python.
8 //
9 ///////////////////////////////////////////////////
10 
11 
12 
13 // Define the module to be used in Python when typing
14 //  'import pychrono.vehicle'
15 
16 
17 %module(directors="1") vehicle
18 
19 
20 // Turn on the documentation of members, for more intuitive IDE typing
21 
22 %feature("autodoc", "1");
23 %feature("flatnested", "1");
24 
25 // Turn on the exception handling to intercept C++ exceptions
26 %include "exception.i"
27 
28 %exception {
29   try {
30     $action
catch(const std::exception & e)31   } catch (const std::exception& e) {
32     SWIG_exception(SWIG_RuntimeError, e.what());
33   }
34 }
35 
36 
37 // For optional downcasting of polimorphic objects:
38 %include "../chrono_downcast.i"
39 
40 // For supporting shared pointers:
41 %include <std_shared_ptr.i>
42 
43 
44 
45 // Include C++ headers this way...
46 
47 %{
48 #include <string>
49 #include <vector>
50 
51 #include "chrono/core/ChQuaternion.h"
52 #include "chrono/core/ChVector.h"
53 #include "chrono/solver/ChSolver.h"
54 
55 #include "chrono/physics/ChSystem.h"
56 #include "chrono/physics/ChShaft.h"
57 #include "chrono/physics/ChShaftsLoads.h"
58 #include "chrono/physics/ChBody.h"
59 #include "chrono/physics/ChBodyAuxRef.h"
60 #include "chrono/physics/ChMarker.h"
61 #include "chrono/physics/ChLink.h"
62 #include "chrono/physics/ChShaftsCouple.h"
63 #include "chrono/physics/ChLinkTSDA.h"
64 #include "chrono/physics/ChLinkRotSpringCB.h"
65 #include "chrono/physics/ChLoadsBody.h"
66 #include "chrono/physics/ChLoadsXYZnode.h"
67 #include "chrono/physics/ChPhysicsItem.h"
68 
69 #include "chrono/collision/ChCollisionModel.h"
70 #include "chrono/collision/ChCollisionModelBullet.h"
71 
72 #include "chrono/collision/ChCollisionSystem.h"
73 #include "chrono/collision/ChCollisionSystemBullet.h"
74 
75 #include "chrono_vehicle/ChApiVehicle.h"
76 #include "chrono_vehicle/ChVehicle.h"
77 #include "chrono_vehicle/ChSubsysDefs.h"
78 #include "chrono_vehicle/ChVehicleOutput.h"
79 #include "chrono_vehicle/ChVehicleModelData.h"
80 #include "chrono_vehicle/ChChassis.h"
81 #include "chrono_vehicle/ChPart.h"
82 #include "chrono_vehicle/ChWorldFrame.h"
83 
84 #include "chrono_vehicle/ChPowertrain.h"
85 
86 #include "chrono_vehicle/ChDriver.h"
87 #include "chrono_vehicle/ChTerrain.h"
88 
89 // Wheeled vehicle
90 #include "chrono_vehicle/wheeled_vehicle/ChWheeledVehicle.h"
91 #include "chrono_vehicle/wheeled_vehicle/ChWheeledTrailer.h"
92 #include "chrono_vehicle/wheeled_vehicle/vehicle/WheeledVehicle.h"
93 #include "chrono_vehicle/wheeled_vehicle/vehicle/WheeledTrailer.h"
94 
95 #include "chrono_vehicle/wheeled_vehicle/ChWheel.h"
96 #include "chrono_vehicle/wheeled_vehicle/wheel/Wheel.h"
97 
98 #include "chrono_vehicle/wheeled_vehicle/ChAxle.h"
99 
100 #include "chrono_vehicle/wheeled_vehicle/ChBrake.h"
101 #include "chrono_vehicle/wheeled_vehicle/brake/ChBrakeSimple.h"
102 #include "chrono_vehicle/wheeled_vehicle/brake/ChBrakeShafts.h"
103 #include "chrono_vehicle/wheeled_vehicle/brake/BrakeSimple.h"
104 #include "chrono_vehicle/wheeled_vehicle/brake/BrakeShafts.h"
105 
106 // Tracked vehicle
107 #include "chrono_vehicle/tracked_vehicle/ChTrackedVehicle.h"
108 #include "chrono_vehicle/tracked_vehicle/vehicle/TrackedVehicle.h"
109 
110 #include "chrono_vehicle/tracked_vehicle/ChSprocket.h"
111 #include "chrono_vehicle/tracked_vehicle/ChIdler.h"
112 #include "chrono_vehicle/tracked_vehicle/ChRoadWheel.h"
113 #include "chrono_vehicle/tracked_vehicle/ChRoadWheelAssembly.h"
114 #include "chrono_vehicle/tracked_vehicle/ChTrackShoe.h"
115 
116 #include "chrono_vehicle/tracked_vehicle/ChTrackBrake.h"
117 #include "chrono_vehicle/tracked_vehicle/brake/ChTrackBrakeSimple.h"
118 #include "chrono_vehicle/tracked_vehicle/brake/ChTrackBrakeShafts.h"
119 #include "chrono_vehicle/tracked_vehicle/brake/TrackBrakeSimple.h"
120 #include "chrono_vehicle/tracked_vehicle/brake/TrackBrakeShafts.h"
121 
122 #include "chrono_vehicle/tracked_vehicle/ChTrackContactManager.h"
123 
124 // Vehicle models
125 #include "chrono_models/ChApiModels.h"
126 #include "chrono_models/vehicle/ChVehicleModelDefs.h"
127 
128 #include "chrono_thirdparty/rapidjson/document.h"
129 #include "Eigen/src/Core/util/Memory.h"
130 
131 
132 using namespace chrono;
133 using namespace chrono::vehicle;
134 
135 using namespace chrono::vehicle::generic;
136 using namespace chrono::vehicle::hmmwv;
137 using namespace chrono::vehicle::sedan;
138 using namespace chrono::vehicle::citybus;
139 using namespace chrono::vehicle::man;
140 using namespace chrono::vehicle::uaz;
141 
142 using namespace chrono::vehicle::m113;
143 %}
144 
145 
146 // Undefine ChApi otherwise SWIG gives a syntax error
147 #define CH_VEHICLE_API
148 #define ChApi
149 #define EIGEN_MAKE_ALIGNED_OPERATOR_NEW
150 #define CH_DEPRECATED(msg)
151 #define CH_MODELS_API
152 
153 
154 
155 // workaround for trouble
156 //%ignore chrono::fea::ChContactNodeXYZ::ComputeJacobianForContactPart;
157 
158 
159 // Include other .i configuration files for SWIG.
160 // These are divided in many .i files, each per a
161 // different c++ class, when possible.
162 
163 %include "std_string.i"
164 %include "std_wstring.i"
165 %include "std_vector.i"
166 %include "typemaps.i"
167 %include "wchar.i"
168 %include "python/cwstring.i"
169 %include "cstring.i"
170 
171 // This is to enable references to double,int,etc. types in function parameters
172 %pointer_class(int,int_ptr);
173 %pointer_class(double,double_ptr);
174 %pointer_class(float,float_ptr);
175 %pointer_class(char,char_ptr);
176 
177 
178 %template(vector_int) std::vector< int >;
179 %template(TerrainForces) std::vector< chrono::vehicle::TerrainForce >;
180 %template(WheelStates) std::vector< chrono::vehicle::WheelState >;
181 %template(ChWheelList) std::vector<std::shared_ptr<chrono::vehicle::ChWheel> > ;
182 %template(ChAxleList) std::vector<std::shared_ptr<chrono::vehicle::ChAxle> > ;
183 
184 //
185 // For each class, keep updated the  A, B, C sections:
186 //
187 
188 
189 //
190 // A- ENABLE SHARED POINTERS
191 //
192 // Note that this must be done for almost all objects (not only those that are
193 // handled by shered pointers in C++, but all their chidren and parent classes. It
194 // is enough that a single class in an inheritance tree uses %shared_ptr, and all other in the
195 // tree must be promoted to %shared_ptr too).
196 
197 //from core module:
198 %shared_ptr(chrono::ChFunction)
199 %shared_ptr(chrono::ChFrame<double>)
200 %shared_ptr(chrono::ChFrameMoving<double>)
201 %shared_ptr(chrono::ChPhysicsItem)
202 %shared_ptr(chrono::ChNodeBase)
203 %shared_ptr(chrono::ChNodeXYZ)
204 %shared_ptr(chrono::ChTriangleMeshShape)
205 %shared_ptr(chrono::geometry::ChTriangleMeshConnected)
206 %shared_ptr(chrono::ChFunction_Recorder)
207 %shared_ptr(chrono::ChBezierCurve)
208 %shared_ptr(chrono::ChLinkMarkers)
209 
210 %shared_ptr(chrono::collision::ChCollisionModel)
211 %shared_ptr(chrono::collision::ChCollisionModelBullet)
212 %shared_ptr(chrono::collision::ChCollisionSystem::BroadphaseCallback)
213 %shared_ptr(chrono::collision::ChCollisionSystem::NarrowphaseCallback)
214 
215 
216 /*
217 from this module: pay attention to inheritance in the model namespace (generic, sedan etc).
218 If those classes are wrapped, their parents are marked as shared_ptr while they are not, SWIG can't hanlde them.
219 Before adding a shared_ptr, mark as shared ptr all its inheritance tree in the model namespaces
220 */
221 
222 %shared_ptr(chrono::vehicle::RigidTerrain::Patch)
223 %shared_ptr(chrono::vehicle::ChPart)
224 %shared_ptr(chrono::vehicle::ChWheel)
225 %shared_ptr(chrono::vehicle::Wheel)
226 %shared_ptr(chrono::vehicle::ChBrake)
227 %shared_ptr(chrono::vehicle::ChBrakeSimple)
228 %shared_ptr(chrono::vehicle::ChBrakeShafts)
229 %shared_ptr(chrono::vehicle::BrakeSimple)
230 %shared_ptr(chrono::vehicle::BrakeShafts)
231 %shared_ptr(chrono::vehicle::ChVehicle)
232 %shared_ptr(chrono::vehicle::ChAxle)
233 %shared_ptr(chrono::vehicle::ChWheeledVehicle)
234 %shared_ptr(chrono::vehicle::ChWheeledTrailer)
235 %shared_ptr(chrono::vehicle::WheeledVehicle)
236 %shared_ptr(chrono::vehicle::WheeledTrailer)
237 
238 %shared_ptr(chrono::vehicle::ChSprocket)
239 %shared_ptr(chrono::vehicle::ChIdler)
240 %shared_ptr(chrono::vehicle::ChRoadWheel)
241 %shared_ptr(chrono::vehicle::ChRoadWheelAssembly)
242 %shared_ptr(chrono::vehicle::ChTrackShoe)
243 %shared_ptr(chrono::vehicle::ChTrackAssembly)
244 %shared_ptr(chrono::vehicle::ChTrackBrake)
245 %shared_ptr(chrono::vehicle::ChTrackBrakeSimple)
246 %shared_ptr(chrono::vehicle::ChTrackBrakeShafts)
247 %shared_ptr(chrono::vehicle::TrackBrakeSimple)
248 %shared_ptr(chrono::vehicle::TrackBrakeShafts)
249 %shared_ptr(chrono::vehicle::ChTrackedVehicle)
250 %shared_ptr(chrono::vehicle::TrackedVehicle)
251 
252 %shared_ptr(chrono::vehicle::ChTrackContactManager)
253 %shared_ptr(chrono::vehicle::ChTrackCollisionManager)
254 %shared_ptr(chrono::vehicle::ChTrackCustomContact)
255 
256 %shared_ptr(chrono::vehicle::LinearSpringForce)
257 %shared_ptr(chrono::vehicle::LinearDamperForce)
258 %shared_ptr(chrono::vehicle::LinearSpringDamperForce)
259 %shared_ptr(chrono::vehicle::LinearSpringDamperActuatorForce)
260 %shared_ptr(chrono::vehicle::MapSpringForce)
261 %shared_ptr(chrono::vehicle::MapSpringBistopForce)
262 %shared_ptr(chrono::vehicle::LinearSpringBistopForce)
263 %shared_ptr(chrono::vehicle::DegressiveDamperForce)
264 %shared_ptr(chrono::vehicle::MapDamperForce)
265 %shared_ptr(chrono::vehicle::MapSpringDamperActuatorForce)
266 %shared_ptr(chrono::vehicle::LinearSpringTorque)
267 %shared_ptr(chrono::vehicle::LinearDamperTorque)
268 %shared_ptr(chrono::vehicle::LinearSpringDamperTorque)
269 %shared_ptr(chrono::vehicle::LinearSpringDamperActuatorTorque)
270 %shared_ptr(chrono::vehicle::MapSpringTorque)
271 %shared_ptr(chrono::vehicle::MapDamperTorque)
272 
273 
274 //
275 // B- INCLUDE HEADERS
276 //
277 //
278 // 1)
279 //    When including with %include all the .i files, make sure that
280 // the .i of a derived class is included AFTER the .i of
281 // a base class, otherwise SWIG is not able to build the type
282 // infos.
283 //
284 // 2)
285 //    Then, this said, if one member function in Foo_B.i returns
286 // an object of Foo_A.i (or uses it as a parameter) and yet you must %include
287 // A before B, ex.because of rule 1), a 'forward reference' to A must be done in
288 // B by. Seems that it is enough to write
289 //  mynamespace { class myclass; }
290 // in the .i file, before the %include of the .h, even if already forwarded in .h
291 
292 %import(module = "pychrono.core")  "chrono_python/core/ChClassFactory.i"
293 %import(module = "pychrono.core")  "chrono_python/core/ChObject.i"
294 %import(module = "pychrono.core")  "chrono_python/core/ChPhysicsItem.i"
295 %import(module = "pychrono.core")  "chrono_python/core/ChVector.i"
296 %import(module = "pychrono.core")  "chrono_python/core/ChQuaternion.i"
297 %import(module = "pychrono.core")  "chrono_python/core/ChCoordsys.i"
298 %import(module = "pychrono.core")  "chrono_python/core/ChFrame.i"
299 %import(module = "pychrono.core")  "chrono_python/core/ChFrameMoving.i"
300 %import(module = "pychrono.core")  "chrono_python/core/ChTimestepper.i"
301 %import(module = "pychrono.core")  "chrono_python/core/ChSystem.i"
302 %import(module = "pychrono.core")  "chrono_python/core/ChAssembly.i"
303 %import(module = "pychrono.core")  "chrono_python/core/ChCoordsys.i"
304 %import(module = "pychrono.core")  "chrono_python/core/ChMatrix.i"
305 %import(module = "pychrono.core")  "chrono_python/core/ChBodyFrame.i"
306 %import(module = "pychrono.core")  "chrono_python/core/ChBody.i"
307 %import(module = "pychrono.core")  "chrono_python/core/ChBodyAuxRef.i"
308 %import(module = "pychrono.core")  "chrono_python/core/ChLinkBase.i"
309 %import(module = "pychrono.core")  "chrono_python/core/ChLinkLock.i"
310 %import(module = "pychrono.core")  "chrono_python/core/ChLinkTSDA.i"
311 %import(module = "pychrono.core")  "chrono_python/core/ChLinkRSDA.i"
312 %import(module = "pychrono.core")  "chrono_python/core/ChLoad.i"
313 %import(module = "pychrono.core")  "chrono_python/core/ChShaft.i"
314 %import(module = "pychrono.core")  "chrono_python/core/ChAsset.i"
315 %import(module = "pychrono.core")  "chrono_python/core/ChAssetLevel.i"
316 %import(module = "pychrono.core")  "chrono_python/core/ChVisualization.i"
317 %import(module = "pychrono.core")  "chrono_python/core/ChContactContainer.i"
318 %import(module = "pychrono.core")  "../../chrono/motion_functions/ChFunction.h"
319 %import(module = "pychrono.core")  "chrono_python/core/ChMaterialSurface.i"
320 %import(module = "pychrono.core")  "../../chrono/fea/ChContinuumMaterial.h"
321 %import(module = "pychrono.core")  "../../chrono/physics/ChPhysicsItem.h"
322 %import(module = "pychrono.core")  "../../chrono/physics/ChNodeBase.h"
323 %import(module = "pychrono.core")  "../../chrono/physics/ChBodyFrame.h"
324 %import(module = "pychrono.core")  "../../chrono/physics/ChLinkBase.h"
325 %import(module = "pychrono.core")  "chrono_python/core/ChTexture.i"
326 %import(module = "pychrono.core")  "../../chrono/assets/ChTriangleMeshShape.h"
327 
328 // TODO:
329 //%include "rapidjson.i"
330 
331 //%include "../../chrono_vehicle/ChApiVehicle.h"
332 %ignore chrono::vehicle::TrackedCollisionFamily::Enum;
333 %ignore chrono::vehicle::TrackedCollisionFamily::OutputInformation;
334 %ignore chrono::vehicle::TrackedCollisionFlag::Enum;
335 %include "../../chrono_vehicle/ChSubsysDefs.h"
336 %include "../chrono_models/vehicle/ChVehicleModelDefs.h"
337 //TODO: conversion from std::vectors of ChVehicleOutput
338 %include "../../chrono_vehicle/ChVehicleOutput.h"
339 %include "../../chrono_vehicle/ChVehicleModelData.h"
340 %include "../../chrono_vehicle/ChPart.h"
341 %include "../../chrono_vehicle/ChWorldFrame.h"
342 %include "ChPowertrain.i"
343 %include "ChChassis.i"
344 %include "../../chrono_vehicle/ChVehicle.h"
345 %include "ChDriver.i"
346 %include "ChTerrain.i"
347 //TODO: antirollbar
348 
349 
350 // Wheeled vehicles
351 %include "ChSuspension.i"
352 %include "ChDriveline.i"
353 %include "ChSteering.i"
354 
355 %include "../../chrono_vehicle/wheeled_vehicle/ChWheel.h"
356 %include "../../chrono_vehicle/wheeled_vehicle/wheel/Wheel.h"
357 
358 %include "../../chrono_vehicle/wheeled_vehicle/ChBrake.h"
359 %include "../../chrono_vehicle/wheeled_vehicle/brake/ChBrakeSimple.h"
360 %include "../../chrono_vehicle/wheeled_vehicle/brake/ChBrakeShafts.h"
361 %include "../../chrono_vehicle/wheeled_vehicle/brake/BrakeSimple.h"
362 %include "../../chrono_vehicle/wheeled_vehicle/brake/BrakeShafts.h"
363 
364 %include "ChTire.i"
365 
366 %include "../../chrono_vehicle/wheeled_vehicle/ChAxle.h"
367 
368 %include "../../chrono_vehicle/wheeled_vehicle/ChWheeledVehicle.h"
369 %include "../../chrono_vehicle/wheeled_vehicle/ChWheeledTrailer.h"
370 %include "../../chrono_vehicle/wheeled_vehicle/vehicle/WheeledVehicle.h"
371 %include "../../chrono_vehicle/wheeled_vehicle/vehicle/WheeledTrailer.h"
372 
373 // Tracked vehicles
374 %include "ChTrackAssembly.i"
375 
376 %include "../../chrono_vehicle/tracked_vehicle/ChSprocket.h"
377 %include "../../chrono_vehicle/tracked_vehicle/ChIdler.h"
378 %include "../../chrono_vehicle/tracked_vehicle/ChRoadWheel.h"
379 %include "../../chrono_vehicle/tracked_vehicle/ChRoadWheelAssembly.h"
380 %include "../../chrono_vehicle/tracked_vehicle/ChTrackShoe.h"
381 
382 %include "../../chrono_vehicle/tracked_vehicle/ChTrackBrake.h"
383 %include "../../chrono_vehicle/tracked_vehicle/brake/ChTrackBrakeSimple.h"
384 %include "../../chrono_vehicle/tracked_vehicle/brake/ChTrackBrakeShafts.h"
385 %include "../../chrono_vehicle/tracked_vehicle/brake/TrackBrakeSimple.h"
386 %include "../../chrono_vehicle/tracked_vehicle/brake/TrackBrakeShafts.h"
387 
388 %include "../../chrono_vehicle/tracked_vehicle/ChTrackContactManager.h"
389 
390 %include "../../chrono_vehicle/tracked_vehicle/ChTrackedVehicle.h"
391 %include "../../chrono_vehicle/tracked_vehicle/vehicle/TrackedVehicle.h"
392 
393 %include "chrono_python/models/WheelModels.i"
394 %include "chrono_python/models/BrakeModels.i"
395 %include "chrono_python/models/VehicleModels.i"
396 
397 %include "vehicleUtils.i"
398 
399 
400 //
401 // C- DOWNCASTING OF SHARED POINTERS
402 //
403 
404 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChDoubleWishbone)
405 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChMacPhersonStrut)
406 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, MacPhersonStrut)
407 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChLeafspringAxle)
408 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, LeafspringAxle)
409 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChHendricksonPRIMAXX)
410 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChDoubleWishboneReduced)
411 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChMultiLink)
412 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, MultiLink)
413 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChRigidPinnedAxle)
414 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChSemiTrailingArm)
415 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, SemiTrailingArm)
416 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChRigidSuspension)
417 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChSolidAxle)
418 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChThreeLinkIRS)
419 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChToeBarLeafspringAxle)
420 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, DoubleWishbone)
421 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, DoubleWishboneReduced)
422 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, HendricksonPRIMAXX)
423 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, SolidAxle)
424 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ThreeLinkIRS)
425 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ToeBarLeafspringAxle)
426 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChSolidBellcrankThreeLinkAxle)
427 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, ChSolidThreeLinkAxle)
428 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, SolidBellcrankThreeLinkAxle)
429 //%DefSharedPtrDynamicDowncast(chrono::vehicle,ChSuspension, SolidThreeLinkAxle)
430 
431 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSteering, ChPitmanArm)
432 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSteering, ChPitmanArmShafts)
433 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSteering, ChRackPinion)
434 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChSteering, ChRotaryArm)
435 
436 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChChassis, ChRigidChassis)
437 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChChassisRear, ChRigidChassisRear)
438 
439 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChChassisConnector, ChChassisConnectorArticulated)
440 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChChassisConnector, ChChassisConnectorHitch)
441 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChChassisConnector, ChChassisConnectorTorsion)
442 
443 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChTire, ChTMeasyTire)
444 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChTire, ChRigidTire)
445 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChTire, ChReissnerTire)
446 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChTire, ChPacejkaTire)
447 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChTire, ChPac89Tire)
448 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChTire, ChLugreTire)
449 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChTire, ChFialaTire)
450 
451 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChPowertrain, SimplePowertrain)
452 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChPowertrain, SimpleMapPowertrain)
453 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChPowertrain, SimpleCVTPowertrain)
454 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChPowertrain, ShaftsPowertrain)
455 
456 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChDriveline, ChDrivelineWV)
457 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChDriveline, ChShaftsDriveline2WD)
458 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChDriveline, ChShaftsDriveline4WD)
459 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChDriveline, ChSimpleDriveline)
460 %DefSharedPtrDynamicDowncast(chrono::vehicle,ChDriveline, ChSimpleDrivelineXWD)
461 
462 //
463 // ADDITIONAL C++ FUNCTIONS / CLASSES THAT ARE USED ONLY FOR PYTHON WRAPPER
464 //
465 
466 /*
467 %inline %{
468 
469 
470 %}
471 */
472 
473 
474 //
475 // ADD PYTHON CODE
476 //
477 
478 /*
479 %pythoncode %{
480 
481 %}
482 */
483 
484 
485