Hello David,
The introduction of Direct Link in 2022 SP3 is proving very helpful to me.
Objects in UE are still importing poorly organised and named as mentioned by @MartVWX here...
There's 1 improvement which would revolutionise the way I am able to use the VW -> UE workflow. Symbols turning into Actors.
Currently in Vectorworks I create a symbol (Say a door), with 10 static meshes. I then use that door 15 times over my level. When this imports into UE, 2 things happen:
Firstly, we only import 10 unique static meshes. It's important to understand that a mesh is different to a static mesh actor, which is different to an actor.
Secondly, in the Outliner (UE's list of assets that @MartVWX showed earlier) we add an actor and a StaticMeshActor for every instance of this static mesh in our VW file. This imports into UE as 15 actors, each with 10 unique static mesh actors which are themselves a child of an actor, totalling 150 static mesh actors. This gets messy when scaled up (I'm looking at you, truss) and makes importing slower, file sizes larger and asset management horrible.
Ideally in Unreal Engine what I want to do is have 15 actors which all reference 1 actor made of the 10 meshes. That way I can change the material on my single actor and see the changes propagate across all of them. The current solution is a mixture of moving around the level and individually selecting each matching mesh and putting them in common folders as well as searching for assets when possible.
I'm looking now at how to use Visual Dataprep to potentially do this but given that this is something that is necessary in EVERY datasmith import from Vectorworks I feel like it would be reasonable for Vectorworks to create and publish this, either as an edit to how Vectorworks exports Datasmith or as a Visual Dataprep file for UE. Currently I am looking at the metadata and struggling to get it to view in Unreal Engine. I can see in the .udatasmith in a text viewer that the metadata exists and custom IFC records are being transferred over (I can see them with a quick text search) but they seem not to be getting applied to the asset.
Metadata in Unreal Engine.
Text from .Udatasmith file:
<Actor name="Extrude_Doors_53" label="Extrude_Doors_53">
<Transform tx="0.0" ty="0.0" tz="0.0" sx="1.0" sy="1.0" sz="1.0" qx="0.0" qy="0.0" qz="0.0" qw="1.0" qhex="0000000000000000000000000000803F"/>
<tag value="Empty Actor" />
<children visible="true">
<ActorMesh name="Instance10972721327748965760_5239107781247857233" label="Extrude_Doors_10972721327748965760_5239107781247857233">
<mesh name="Mesh10132752585299418352_16003714575914235506Sub0"/>
<Transform tx="240.418686" ty="1019.875671" tz="101.584007" sx="1.0" sy="1.0" sz="1.0" qx="-0.024006" qy="-0.706938" qz="0.706461" qw="0.02399" qhex="42A8C4BCE5F934BF9CDA343F4486C43C"/>
<tag value="Mesh Actor" />
</ActorMesh>
</children>
</Actor>
As an aside, I believe the above code snippet could be done better to remove excess actors. I've detailed that here:
And the Metadata. For some reason the reference between the Actor & MetaData doesn't seem to be connecting.
<MetaData name="Extrude_Doors_53" reference="Actor.Extrude_Doors_53">
<KeyValueProperty name="NNA_IfcAnnotation_prm1_type" type="String" val="16385"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm2_value" type="String" val="IfcAnnotation"/>
<KeyValueProperty name="VW_UUID" type="String" val="a9b16221-02cf-4bad-a1b8-40963793938c"/>
<KeyValueProperty name="NNA_IfcAnnotation_instanceID" type="String" val="1790"/>
<KeyValueProperty name="VW_tdType" type="String" val="24"/>
<KeyValueProperty name="VW_bounds" type="String" val="-393.700000,-20.000000,85.725000,393.700000,20.000000,1943.100000,"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm1_name" type="String" val="OwnerHistory"/>
<KeyValueProperty name="NNA_IfcAnnotation_IFC_UUID" type="String" val="{E6812CD3-C83C-11ED-B9CD-18C04DDA7E81}"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm5_value" type="String" val="0"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm0_name" type="String" val="GlobalId"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm0_type" type="String" val="16391"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm1_value" type="String" val="0"/>
<KeyValueProperty name="IFC_IfcAnnotation_Name_7" type="String" val="IfcAnnotation"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm2_name" type="String" val="Name"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm2_type" type="String" val="32775"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm3_name" type="String" val="Description"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm3_type" type="String" val="7"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm3_value" type="String" val="DoorGlass"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm4_name" type="String" val="ObjectType"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm4_type" type="String" val="16391"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm5_name" type="String" val="ObjectPlacement"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm5_type" type="String" val="16385"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm6_name" type="String" val="Representation"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm6_type" type="String" val="16385"/>
<KeyValueProperty name="NNA_IfcAnnotation_prm6_value" type="String" val="0"/>
<KeyValueProperty name="IFC_IfcAnnotation_GlobalId_7" type="String" val="3cWIpJo3mHxRdD6C1Dsdw1"/>
<KeyValueProperty name="IFC_IfcAnnotation_Description_7" type="String" val="DoorGlass"/>
</MetaData>