Can I use Datasmith runtime import for .3dm file?

Hi,

I want to make architecture software by using unreal engine.

and also want to make my clients import their source files into my service without any process like changing datasmith format.

so I need Datasmith Runtime import system. It is so cool but I found it supports only udatasmith, gltf format.

I already know 3dm files can be imported into UE without conversion.

how can I make Datasmith runtime import support 3dm(rhino) format?

No .3dm is not yet a supported format for CAD import at runtime.
We, experimentally, support most CAD format (Catia, solidworks, JT, iges) but not .3dm

Thank you for the reply.

I have another question. Can I use Datasmith Runtime Import in android?
I want to make AR application using this.

so I built CollabViewer Template project for android. but when I clicked ‘Datasmith command’ and +New button, It suddenly stopped and crashed.

Here is the log.

Blockquote
LogPlayLevel: Warning: 02-07 16:26:00.874 18574 18669 D UE : [2023.02.07-07.26.00:874][ 0]LogImageWrapper: Warning: PNG Warning: iCCP: known incorrect sRGB profile
LogPlayLevel: Warning: 02-07 16:26:00.874 18574 18669 D UE : [2023.02.07-07.26.00:874][ 0]LogImageWrapper: Warning: PNG Warning: iCCP: known incorrect sRGB profile
LogPlayLevel: Warning: 02-07 16:26:01.142 18574 18669 D UE : [2023.02.07-07.26.01:142][ 0]LogStreaming: Warning: Failed to read file ‘…/…/…/Engine/Plugins/Runtime/SunPosition/Resources/SunPosition.png’ error.
LogPlayLevel: Error: 02-07 16:26:01.183 18574 18724 D UE : [2023.02.07-07.26.01:183][ 0]LogStreaming: Error: Couldn’t find file for package /Script/DatasmithRuntime requested by async loading code. NameToLoad: /Script/DatasmithRuntime
LogPlayLevel: Error: 02-07 16:26:01.183 18574 18724 D UE : [2023.02.07-07.26.01:183][ 0]LogStreaming: Error: This will hitch streaming because it ends up searching the disk instead of finding the file in the pak file.
LogPlayLevel: Error: 02-07 16:26:01.183 18574 18724 D UE : [2023.02.07-07.26.01:183][ 0]LogStreaming: Error: Found 1 dependent packages…
LogPlayLevel: Error: 02-07 16:26:01.183 18574 18724 D UE : [2023.02.07-07.26.01:183][ 0]LogStreaming: Error: /Game/CollaborativeViewer/Blueprints/Commands/DataSmith/BP_DataSmith_Component
LogPlayLevel: Error: 02-07 16:26:01.247 18574 18724 D UE : [2023.02.07-07.26.01:247][ 0]LogProperty: Error: Struct type unknown for property ‘StructProperty /Game/CollaborativeViewer/Blueprints/Commands/DataSmith/UMG/DREndpointUI.DREndpointUI_C:UpdateSources:CallFunc_GetListOfSources_ReturnValue.CallFunc_GetListOfSources_ReturnValue’; perhaps the USTRUCT() was renamed or deleted?
LogPlayLevel: Error: 02-07 16:26:01.247 18574 18724 D UE : [2023.02.07-07.26.01:247][ 0]LogProperty: Error: Struct type unknown for property ‘StructProperty /Game/CollaborativeViewer/Blueprints/Commands/DataSmith/UMG/DREndpointUI.DREndpointUI_C:UpdateSources:CallFunc_Array_Get_Item’; perhaps the USTRUCT() was renamed or deleted?
LogPlayLevel: Warning: 02-07 16:26:01.362 18574 18669 D UE : [2023.02.07-07.26.01:362][ 0]LogOnline: Warning: OSS: FOnlineSubsystemGooglePlayModule was disabled
LogPlayLevel: Warning: 02-07 16:26:11.801 18574 18669 D UE : [2023.02.07-07.26.11:801][ 3]LogScript: Warning: UGameplayStatics::BeginDeferredActorSpawnFromClass: can not spawn an actor from a NULL class
PackagingResults: Warning: The config file ‘Collab_50/Config/config.ini’ will be staged, but is not explicitly allowed or denied. Add +WhitelistConfigFiles=Collab_50/Config/config.ini or +BlacklistConfigFiles=Collab_50/Config/config.ini to the [Staging] section of DefaultGame.ini

I expect It definitely failed, but don’t know why It said couldn’t file for package.

Have you any idea to fix this?

Are you sure about “runtime CAD” import other than udatasmith ? As I know problem was about extensions’ licenses. Is that exprimental support special to Epic’s usage or did something change at UE5.1 ?

Right now, I convert CAD files to .glb files at runtime with CAD Exchanger CLI and FGenericPlatformProcess::CreateProc(). After that I import them with gLTFRuntime

Maybe for the udatasmith file, but not for the CAD files as the CAD parsing libraries are not there for android.

Yes it is experimental (5.1 and 5.2) and you might have to jump a few hoops + I think material assignment is not working yet.

You need to use Interchange and Interchange datasmith plugins.

look at this thread

and this doc

Currently I am using UE5.1.1 launcher version and I tried to import a step file with CAD import workflow.

I know that some problems fixed at 5.2 and there will be additional improvements when 5.2 finally released.

But there are some feature problems and also Dataprep have one of them, too.

  1. I set Anchor on MakeDatasmithInterchangeImportContext but imported assets don’t come as children components. They come as actors or static mesh actors. So, I can’t create a hierarchy tree like Solidworks. This problem also occurs with Dataprep but doesn’t occurs when I use Datasmith Runtime Importer or gLTFRuntime import.

  2. CAD hierarchy tree comes messy.
    If a static mesh component is a direct child of imported step’s root, it will be child of defined Anchor on ImportContext and visible at runtime.
    But grandchildren meshes (childrens of sub-assemblies) will be child of entirely different actor and they won’t be visible until I close my play session. I tried with another step file and even if a don’t set any anchor, problem continues.
    Especially this a real problem because we need sub-assemblies in CAD.

  3. We don’t need every surface of parts as different static meshes in Unreal Engine. Each part should be a static mesh component and each assembly / group should be a scene component. Right now, even a part is an actor and gives surfaces as lots of static meshes. If this is a feature, at least we should be able to select it. Current sticthing options can’t solve that problem.

  4. Inventor files freeze at Importing even if I use Async.

  5. Some big step files (178 mb.) crash program.

  6. There is no option to import them as dynamic and I can’t set them movable because imported meshes are not children components and hierarchy messy. So I can’t access all of them.

If UE5.2 solved these problems, it is perfect. Else, I can share my step files for additional research or create another topic or a bug report.

Step file’s hierarchy

Runtime view (Imported meshes which are direct children of root are children of “BP_Interchange”)

Closed View (Imported meshes which are children of subassemblies are children of an actor which created with step file’s name)