Aspose.3D & Aspode.CAD interoperability

Hi,

We already have a licence for Aspose.3D, and we’re considering purchasing a licence for Aspose.CAD depending on if requirements can be met.

One requirement is to convert between IFC and glTF. Aspose.CAD can input IFC, but only Aspose.3D can output glTF. Is is possible to use the two libraries together to achieve this?

I’m aware we can export to fbx/obj from Aspose.CAD and import via Aspose.3D, but I’d rather not have an intermediate format as data can be lost.

Unless importing IFC is on the roadmap for Aspose.3D? Which would be ideal.

Thanks for your time,
Tom

@TPovey2

We do have plan to add support for IFC, this task was delayed because Aspose.3D lacks some required features before, but most of these required features had been implemented in previous versions.

We’ll restart this task on demand, and will ping you when it’s ready.

Great to hear, thanks @lex.chou

@TPovey2
Thank you for your patience.

A post was split to a new topic: GLTF/GLB can be exported using Aspose.CAD?

Hi @lex.chou, is there any news on this?

Thanks,
Tom

Hi @TPovey2
We currently support IFC import and will continue to improve IFC support based on user demand. Are you also in need of IFC export support? We are exploring ways to integrate IFC’s semantic support with minimal API changes.

Thanks.

Thanks for pointing this out @lex.chou, this is great to hear - I just read it was released in the 24.9 notes, we’ve been on 24.6 for a while.

I was keeping my eye on the supported file formats and didn’t notice any updates:

Do you have any documentation with regards to IFC capabilities? i.e. reading the coordinate reference system, map properties (Easting/northing), property sets for each element etc.

Being able to export to IFC would be ideal, as we’d like to carry out some coordinate transformations, in the meantime we will be exporting to GLB.

For IFC to GLB exports - are you aware if it’s possible for property sets to persists between IFC elements and GLB elements through the use of the EXT_structural_metadata and EXT_mesh_features gltf extensions?

Thanks for your time,
Tom

Hi again @lex.chou,

I’ve just upgraded to 25.1.0, and I’m having trouble loading in IFC files.

Using:
var asposeFileFormat = Aspose.ThreeD.FileFormat.Detect(filePath);
returns null

And:
Scene.FromFile("path/to/my/file.ifc", cancellationToken);
Throws an ImportException, stating:
`‘Can’t handle this file format’

Is this not yet available in production?

Tried with Aspose.3D for .NET, versions 24.12.0 & 25.1.0.

Perhaps it’s the IFC version? What versions do you support? I can’t see an IFCLoadOptions class like there are for other formats.

Thanks,
Tom

Hi @TPovey2

Do you have any documentation with regards to IFC capabilities? i.e. reading the coordinate reference system, map properties (Easting/northing), property sets for each element etc.

Unlike Aspose.CAD, which provides low-level structures for different formats, Aspose.3D utilizes a unified object model. New formats typically do not introduce new object types, so features like the one you mentioned would behave similarly to existing formats if implemented.

For IFC to GLB exports - are you aware if it’s possible for property sets to persists between IFC elements and GLB elements through the use of the EXT_structural_metadata and EXT_mesh_features gltf extensions?
The glTF extensions like EXT_structural_metadata and EXT_mesh_features are not supported, I have created a ticket for these.

The IFC format consists of thousands of entities defined in the EXPRESS language. While Aspose.3D supports various IFC schemas such as IFC2X3, IFC2X_FINAL, IFC20_LONGFORM, IFC2X2_FINAL, IFC4, IFC4X2, IFC4X3_RC1, IFC4X3_RC2, IFC4X3_RC3, and IFC4X3_RC4, there may still be unknown entities due to a lack of sample files for analysis.

Would it be possible for you to share the problematic file with us so we can analyze the issue further?

Thanks.

Hi @lex.chou,

I’ve tried a number of different IFC file types, totalling to around 20 IFC files:

  • IFC2X2_FINAL
  • IFC2X3
  • IFC4
  • IFC4X3_RC2

All fail to load using:

Scene.FromFile("path/to/my/file.ifc", cancellationToken); 
(Aspose ImportException - Can’t handle this file format)

And: Aspose.ThreeD.FileFormat.Detect(filePath); always returns ‘null

Note I’ve tested other file formats such as FBX and GLB which are detected / load just fine, so it’s not a problem with my codebase.

I’ve attached a portion of different test files in this zip folder:
Input_Files.zip (6.2 MB)

I either created the IFC files myself; exporting from Revit, or sourced them from the below link:
https://wiki.osarch.org/index.php?title=AEC_Open_Data_directory

Could you provide any test files for me which you know work? Could this potentially be a nuget release issue? Note my project uses:

  • .NET 7
  • Aspose.ThreeD version 25.1.0 (also tested on v24.12.0)
  • Tested on Windows 11 version 10.0.22631.

I have also queried a portion of the files using the IFCopenshell python lib to ensure they’re valid.

Thanks for creating a ticket for the GLTF extensions, these will be really useful.

EDIT:
I’ve just checked the FileFormat.IFC properties, it looks like both CanExport and CanImport are false. To my understanding CanImport should be true:
image.png (25.1 KB)

FileFormat.IFC: {
  "CanExport": false,
  "CanImport": false,
  "ContentType": "ASCII",
  "Extension": ".ifc",
  "Extensions": [".ifc"],
  "FileFormatType": "Industry Foundation Classes data model",
  "Version": "1.0"
}

Note: Version 24.9.0 CanImport = true. All versions after this, CanImport = false.
However, the same errors persist on version 24.9.0

Thanks,
Tom

@TPovey2

Thank you kindly for reporting this issue. I’m currently looking into the matter, and your input files have been incredibly helpful in diagnosing the problem. A fix will be included in the upcoming release later this month.

Great, thanks for looking into this @lex.chou

In the meantime, would it be possible for a bit of info of where you store the property sets for IFC? From what you’ve already said, I’m assuming the header information, including coordinate ref info/overall IFC file info, is stored within the scenes/root node AssetInfo / Properties props, and specifiy IFC entities, (such as a Wall instance), will have the property set for the entity stored within Aspose.Entity.Properties?

If this is incorrect, a short snippet would be great. For example, this is a property set of a single Wall instance (only a portion of the property sets are shown):

{
    "Other": {
        "Category": "Walls",
        "Family Name": "Basic Wall",
        "id": 317,
        "Family": "Basic Wall",
        "Family and Type": "Basic Wall: CL_W1",
        "Type": "CL_W1",
        "Type Id": "600634"
    },
    "Construction": {
        "Function": "Exterior",
        "Width": 280,
        "Wrapping at Ends": "None",
        "Wrapping at Inserts": "Both",
        "id": 325
    },
    "Graphics": {
        "Coarse Scale Fill Color": 12632256,
        "Coarse Scale Fill Pattern": "<Solid fill>",
        "id": 326
    },
    "Identity Data": {
        "Keynote": "F10",
        "Type Name": "CL_W1",
        "id": 320,
        "Comments": "Walls",
        "Has Association": true,
        "Mark": "W-3.9"
    },
    "Materials and Finishes": {
        "Structural Material": "CL Concrete_ panels",
        "id": 328
    },
    "Analytical Properties": {
        "Absorptance": 0.1,
        "Heat Transfer Coefficient (U)": 0.7499999999999999,
        "Roughness": 1,
        "Thermal Mass": 136.416,
        "Thermal Resistance (R)": 1.3333333333333335,
        "id": 329
    }
}

Thanks again,
Tom

@TPovey2

Currently, properties and semantic information are not fully stored or supported. I have documented this in our ticket system as a valuable enhancement. Your suggestion is greatly appreciated, and we will consider it for future improvements.

I have reprioritized the IFC-related tasks, giving them higher priority over some of the previously planned tasks

Thank you for your feedback!