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