Creating new blueprint and components through code


I have a button that creates a new blueprint with a class called FbxBuilder and I am trying to add components to that created blueprint but can’t seem to get it to work.

Here is my code:

(This runs when button is clicked):

        FString NameStr = "/Game/Blueprint";
	UPackage* myPackage = CreatePackage(NULL, *NameStr);
	UBlueprintFactory* BlueprintFactory = NewObject<UBlueprintFactory>();

	BlueprintFactory->ParentClass = AFbxBlueprints::StaticClass();

	FString CallingContext = "";

	UBlueprint* MyAsset = Cast<UBlueprint>(BlueprintFactory->FactoryCreateNew(UBlueprint::StaticClass(), myPackage, NAME_None, RF_Public | RF_Standalone, NULL, GWarn, FName(*CallingContext)));

	if (MyAsset)
		// Notify the asset registry

		// Mark the package dirty...
	AFbxBlueprints* myBP = (AFbxBlueprints*)MyAsset->GetBlueprintClass();

That last line calls my FbxBlueprints class (the class of the blueprint) and here is the code for that:

AFbxBlueprints::AFbxBlueprints(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
	BpRoot = ObjectInitializer.CreateDefaultSubobject<USceneComponent>(this, TEXT("Root"));
	RootComponent = BpRoot;


void AFbxBlueprints::FbxBpMaker()

	FName MeshName("MYMESH");
	MyMesh = NewNamedObject<UStaticMeshComponent>(this, MeshName);


The reason I am doing this is that I am hoping to be able to do a ‘for’ loop and create as many StaticMeshComponents as I need.

The code compiles fine but when I do a Debug->Start New Instance from VS 2013 and click the button, I get a breakpoint from the RegisterComponent() at this location:

void UActorComponent::RegisterComponent()
	AActor* MyOwner = GetOwner();
	if (ensure(MyOwner && MyOwner->GetWorld()))

I’ve tried a bunch of different things to get this to add a StaticMeshComponent, but nothing seems to work…any ideas?

Thanks in advance,


PS - I am running this in ver. 4.8

Bump? Anyone? Really pulling my hair out on this one…

Ok, so I got the Static Mesh Component to show up in the blueprint by using this code in my blueprint class:


void AFbxBlueprints::FbxBpMaker()

	FName MeshName("TestComponent");
	NextMesh = NewNamedObject<UStaticMeshComponent>(this, MeshName);


But now I have another issue.

The component has no Details info even though I used this in the header:

UPROPERTY(VisibleAnywhere, BlueprintReadWrite, Category = "FbxBuilder")
		UStaticMeshComponent* NextMesh;

Also, when I click Compile in the blueprint the component disappears!

Anyone have any ideas about how to fix this?

Thanks in advance!

@grizly32 thanks for the info :)!
I have one question about your first post, w​​​​hat libraries did you include to create a UBlueprintFactory?

same question, since after adding #include “Factories/BlueprintFactory.h” build failed