opensourceBIM / GltfSerializers

BIMserver that converts a model to binary glTF
18 stars 11 forks source link

IFC4 (streaming) to GLTF2 conversion not working. #13

Open bhargavdave27 opened 5 years ago

bhargavdave27 commented 5 years ago

When I try to convert a IFC4 (streaming file) to GLTF 2 format I am getting this error.

class org.eclipse.emf.ecore.impl.EDataTypeImpl cannot be cast to class org.eclipse.emf.ecore.EEnum (org.eclipse.emf.ecore.impl.EDataTypeImpl and org.eclipse.emf.ecore.EEnum are in unnamed module of loader 'app')

This is the log: 18:46:09 ERROR [pool-1-thread-2]: (LongAction.java:194) java.lang.ClassCastException: class org.eclipse.emf.ecore.impl.EDataTypeImpl cannot be cast to class org.eclipse.emf.ecore.EEnum (org.eclipse.emf.ecore.impl.EDataTypeImpl and org.eclipse.emf.ecore.EEnum are in unnamed module of loader 'app') at org.bimserver.schemaconverter.AbstractSchemaConverter.copy(AbstractSchemaConverter.java:90) at org.bimserver.schemaconverter.AbstractSchemaConverter.copy(AbstractSchemaConverter.java:129) at org.bimserver.schemaconverter.Ifc4ToIfcIfc2x3tc1Converter.convert(Ifc4ToIfcIfc2x3tc1Converter.java:42) at org.bimserver.serializers.SerializerFactory.create(SerializerFactory.java:104) at org.bimserver.longaction.LongDownloadOrCheckoutAction.convertModelToCheckoutResult(LongDownloadOrCheckoutAction.java:77) at org.bimserver.longaction.LongDownloadOrCheckoutAction.executeAction(LongDownloadOrCheckoutAction.java:139) at org.bimserver.longaction.LongDownloadAction.execute(LongDownloadAction.java:49) at org.bimserver.longaction.LongActionManager$1.run(LongActionManager.java:54) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:835) 18:46:09 ERROR [pool-1-thread-2]: (LongDownloadAction.java:54) java.lang.ClassCastException: class org.eclipse.emf.ecore.impl.EDataTypeImpl cannot be cast to class org.eclipse.emf.ecore.EEnum (org.eclipse.emf.ecore.impl.EDataTypeImpl and org.eclipse.emf.ecore.EEnum are in unnamed module of loader 'app') at org.bimserver.schemaconverter.AbstractSchemaConverter.copy(AbstractSchemaConverter.java:90) at org.bimserver.schemaconverter.AbstractSchemaConverter.copy(AbstractSchemaConverter.java:129) at org.bimserver.schemaconverter.Ifc4ToIfcIfc2x3tc1Converter.convert(Ifc4ToIfcIfc2x3tc1Converter.java:42) at org.bimserver.serializers.SerializerFactory.create(SerializerFactory.java:104) at org.bimserver.longaction.LongDownloadOrCheckoutAction.convertModelToCheckoutResult(LongDownloadOrCheckoutAction.java:77) at org.bimserver.longaction.LongDownloadOrCheckoutAction.executeAction(LongDownloadOrCheckoutAction.java:139) at org.bimserver.longaction.LongDownloadAction.execute(LongDownloadAction.java:49) at org.bimserver.longaction.LongActionManager$1.run(LongActionManager.java:54) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:835)

Any help will be appreciated. Thanks.

rubendel commented 5 years ago

The glTF2 serializer only supports Ifc2x3tc1. BIMserver tries to convert your IFC4 model to Ifc2x3tc1 to comply to the expected input format of the glTF2 serializer. That's where this breaks. The current schema conversion code is simply an example of how it could be done, the implementation is not complete though.

bhargavdave27 commented 5 years ago

Thanks Ruben. We'll look into glTF2 serializer.