How to get SkeletalMeshComponent->BodySetup at a Runtime?

I was following Vebski and Rama’s
Accessing mesh triangles and vertex positions in build Tutorial, trying to do the same with a Skeletal Mesh, but i’m new en c++ and do not understand how can i have access to BodyInstance ( trying to Target->BodyInstance.IsValidBodyInstance() return’s falls). Please somebody explain me how it does works.

Build.cs

using UnrealBuildTool;

public class AProject : ModuleRules
{
	public AProject(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "RHI", "RenderCore", "PhysX", "APEX", "HeadMountedDisplay" });
	}
}

OvSkeletalMeshActor.h

#pragma once

#include "CoreMinimal.h"
#include "Engine.h"
#include "Animation/SkeletalMeshActor.h"
#include "OvSkeletalMeshActor.generated.h"

UCLASS()
class APROJECT_API AOvSkeletalMeshActor : public ASkeletalMeshActor
{
	GENERATED_UCLASS_BODY()

		UFUNCTION(BlueprintPure, Category = "Advanced Library")
		static bool GetSkeletalMeshPhysXProps(USkeletalMeshComponent* Target, TArray<FVector>& Vertices, TArray<int32>& Indices, bool &Result);
	
};

OvSkeletalMeshActor.cpp

#include "OvSkeletalMeshActor.h"
//~~~~~~~~~~~~~~~~~~~~~~~~
#include "PhysicsEngine/BodySetup.h"							// Body Setup
//~~~~~~~~~~~~~~~~~~~~~~~~
//	   PhysX 			
#include "PhysXIncludes.h"										// Px vars
#include "PhysicsPublic.h"  									//	FPhysScene
#include "PhysXPublic.h"										//	PtoU conversions
//~~~~~~~~~~~~~~~~~~~~~~~~

AOvSkeletalMeshActor::AOvSkeletalMeshActor(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
{

}

bool AOvSkeletalMeshActor::GetSkeletalMeshPhysXProps(USkeletalMeshComponent* Target, TArray<FVector>& Vertices, TArray<int32>& Indices)
{
	Vertices.Empty();
	Indices.Empty();

#if WITH_PHYSX
	PxTriangleMesh* TempTriMesh = Target->BodyInstance.BodySetup.Get()->TriMeshes[0];
	check(TempTriMesh);
	
	int32 TriNumber = TempTriMesh->getNbTriangles();
	const PxVec3* PVertices = TempTriMesh->getVertices();
	const void* Triangles = TempTriMesh->getTriangles();

	for (int32 TriIndex = 0; TriIndex < TriNumber; ++TriIndex)
	{
		if (TempTriMesh->getTriangleMeshFlags() & PxTriangleMeshFlag::e16_BIT_INDICES)
		{
			PxU16* P16BitIndices = (PxU16*)Triangles;
			Indices.Add(P16BitIndices[TriIndex * 3]);
			Indices.Add(P16BitIndices[(TriIndex * 3) + 1]);
			Indices.Add(P16BitIndices[(TriIndex * 3) + 2]);
		}
		else
		{
			PxU32* P32BitIndices = (PxU32*)Triangles;
			Indices.Add(P32BitIndices[TriIndex * 3]);
			Indices.Add(P32BitIndices[(TriIndex * 3) + 1]);
			Indices.Add(P32BitIndices[(TriIndex * 3) + 2]);
		}
		Vertices.Add(P2UVector(PVertices[Indices[TriIndex * 3]]));
		Vertices.Add(P2UVector(PVertices[Indices[(TriIndex * 3) + 1]]));
		Vertices.Add(P2UVector(PVertices[Indices[(TriIndex * 3) + 2]]));
	}	
#endif // WITH_PHYSX 

	return true;
}