Skip to content

Releases: openbimrs/ifc

openbim-ifc-wasm 0.4.1

Choose a tag to compare

@github-actions github-actions released this 04 Oct 11:31
652104d

Added (#330, schema-checked entity creation)

  • IfcModel.author(ops): AuthorOp objects ({ op: "product", type, container, placement, typeObject, attributes, ... }) applied as one
    checked transaction, returning AuthoringResult (ids per operation,
    created, removed); IfcModel.handle(index) names the entity an
    earlier operation produced. createEntity(typeName, attributes) and
    removeWithRelationships(id) are one-operation batches. Fresh
    GlobalIds derive from a seed drawn from Math.random. Feature
    author (default). IfcErrorCode gains missing-attribute and
    still-referenced. Additive: a patch release.

npm: https://www.npmjs.com/package/@openbim/ifc/v/0.4.1

openbim-ifc-wasm 0.4.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 01:05
a94a164

Added (#326, attributes by name)

  • IfcModel.attributeNames(id) (AttributeInfo[] in slot order),
    attributeByName(id, name) and setAttributeByName(id, name, value),
    resolved against the release the header declares; names match
    case-insensitively. IfcErrorCode gains unknown-attribute and
    derived-attribute. Additive; this release is breaking for #318
    anyway.

Changed (breaking, #318: the catalog is loaded lazily)

  • The module no longer embeds the PSD/QTO catalog: default feature
    property-catalog-runtime replaces property-catalog. The default
    module is 2,648,193 bytes after wasm-bindgen (894,392 under
    gzip -9), was 6,282,871 (1,855,125).
  • The package ships the catalog as catalog/ifc2x3-tc1.bin (325,739
    bytes), catalog/ifc4-add2-tc1.bin (1,015,315) and
    catalog/ifc4x3-add2.bin (1,086,526), with the loader catalog.mjs.
  • await IfcModel.loadCatalog(release?, { bytes?, baseUrl? }) loads one
    release's edition (all three without a release): Node reads it from the
    package, a browser or bundle fetches it relative to the module. Each is
    checked against its pinned SHA-256 and kept for the module instance.
    IfcModel.catalogFile, catalogLoaded and loadCatalogBytes are the
    synchronous parts.
  • Until a release's catalog is loaded, a write to a Pset_/Qto_ set
    throws the new code catalog-not-loaded, never unchecked. A build with
    property-catalog embeds the catalog (1.4 MB) and loadCatalog is a
    no-op.
  • A write to a Pset_/Qto_ set that 0.3.0 checked without a load now
    needs loadCatalog first: a breaking change, a minor release under 0.x
    (0.4.0).
  • TypeScript: IfcModel.loadCatalog (a namespace merged with the class),
    CatalogLoadOptions; IfcErrorCode gains template-violation,
    missing-property and catalog-not-loaded.

npm: https://www.npmjs.com/package/@openbim/ifc/v/0.4.0

openbim-ifc 0.16.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 21:49
2cf50e7

Changed

  • spatial_properties and the property-edit planner (apply_property_edits,
    stage_property_edits) resolve through one ifc_properties::PropertyIndex
    of the model instead of calling the exact resolver per element or per
    edited object, so listing every element's properties, or a batch editing
    many objects, is linear in the model (#352). Answers and refusals are
    unchanged. ifc::properties::PropertyIndex is reachable through the
    properties feature.
  • Behind geometry, the re-exported ifc_geometry gains, under
    geometry::lower, lower_product_net_with and NetOptions (#351): a
    Reference View opening with only a Reference representation can be
    taken as already applied to its host's Body, listed in
    NetLowering::taken_as_applied. With ifc-geometry's compile feature
    it also gains the evaluator-taking linear placement (#353,
    LoweringSession::with_curve_evaluator,
    product_world_transform_with_evaluator) and the cached-position check
    (#354, CachedPositionPolicy), and the derived frame follows IFC4.3
    (#355). When ifc-geometry 0.10 is released, the re-export moves to it,
    which makes the next release here a minor one.

Semver of #352 alone: no public signature changes, a patch release.

crates.io: https://crates.io/crates/openbim-ifc/0.16.0

openbim-ifc 0.15.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 11:36
652104d

Changed (breaking)

  • Behind geometry, the re-exported ifc_geometry is 0.9 (was 0.8): IFC4X3
    stations, linear placements, offset curves by distances and sectioned
    solids/surfaces lower exactly (#307), and an IfcParameterValue
    distance on an alignment centreline is refused instead of being read as
    plan distance (#347).

Added (#330, checked authoring)

  • Feature authoring: ifc-author without choosing a release (author
    now means authoring plus schema, as before), and the checked
    authoring batch. apply_authoring(model, schema, ops, seed) runs
    AuthorOps in order against the model as the operations before them
    leave it and commits them as one transaction, or refuses with
    AuthoringError (the operation's position and an AuthoringFailure)
    and changes nothing; stage_authoring plans without committing.
  • AuthorOp (#[non_exhaustive]): Create an entity by type and named
    attributes, Edit named attributes, Remove an entity with the
    relationships that reference it, and the builders Project, Spatial
    (aggregated under its parent), Product (placed, contained and typed),
    TypeObject, AssignType, Contain, Aggregate, Placement (an
    IfcLocalPlacement over an IfcAxis2Placement3D) and OwnerHistory
    (through ifc-author's writers). Every record is built by name through
    ifc-author's EntityBuilder against the declared release, then its
    references are resolved (type checked with Schema::accepts_type) and
    its aggregates held to their declared bounds; a supplied GlobalId
    another entity holds is refused; an object is contained, aggregated or
    typed once, and a model holds one IfcProject.
  • An IfcRoot created without a GlobalId gets a name-based one over a
    seed (fresh_seed(), from the OS on native targets) and its id; a fixed
    seed reproduces a file. OwnerHistory is never invented.
  • authoring_handle(i) / HANDLE_BASE (2^62): an operation names the
    entity an earlier one produced; AuthoringOutcome::ids reports the ids.
  • Additive: a patch release. The property edit's name-based GlobalId
    moved into a shared module unchanged (a test pins its output).

crates.io: https://crates.io/crates/openbim-ifc/0.15.0

openbim-ifc 0.14.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 01:10
a94a164

Changed (breaking)

  • Behind property-catalog, the re-exported property_catalog is
    ifc-template-catalog 0.4 (was 0.3): one compact snapshot container
    replaces the per-edition bincode files, with new snapshot and runtime
    modules (#317). The new property-catalog-runtime feature checks
    property writes against a catalog supplied at run time (#318).

Added (#326, attributes by name)

  • attribute_slots(schema, type_name) and attribute_slot(schema, type_name, name) (feature schema-api): an entity type's explicit
    attribute slots in Part 21 order, inherited first, as AttributeSlot
    (index, name, declared type, optional, aggregate, derived,
    declared_by). INVERSE and new DERIVE attributes hold no slot and
    are not listed; an inherited attribute a subtype redeclares as derived
    is marked derived. Names match ASCII case-insensitively, as EXPRESS
    identifiers do; answers use the schema's spelling.
  • attribute_by_name(model, schema, id, name) and
    set_attribute_by_name(model, schema, id, name, value): read and write
    by name against the schema the caller passes. The write refuses a
    derived slot and checks everything before its one write.
    NamedAttributeError (#[non_exhaustive]): MissingEntity,
    UnknownEntity, UnknownAttribute, DerivedAttribute.
  • Additive: a patch release.

Added (#318, runtime PSD/QTO catalog)

  • Feature property-catalog-runtime: property edits check Pset_/Qto_
    sets against a catalog the host installs at runtime
    (property_catalog::runtime::install) instead of the embedded one; until
    the release's edition is installed such an edit is refused with the new
    PropertyEditFailure::CatalogNotLoaded { set, edition } and nothing is
    written. With property-catalog too, the embedded catalog is used.
    property-catalog now enables ifc-template-catalog/embedded
    explicitly. The embedded catalog shrinks from 3.7 MB to 1.4 MB with the
    catalog's compact format (#317).
  • Additive (PropertyEditFailure is #[non_exhaustive]): a patch
    release on its own.

crates.io: https://crates.io/crates/openbim-ifc/0.14.0

openbim-ifc-py 0.3.2

Choose a tag to compare

@github-actions github-actions released this 04 Oct 11:33
652104d

Added (#332, Pythonic access)

  • A pure-Python layer over the existing calls, with no new native
    surface: openbim_ifc.open(path); model[id], model.by_id(id),
    model.by_type(name, include_subtypes=True), iter(model) and
    id in model, returning Entity views (new module
    openbim_ifc.entity). An Entity reads attributes by name as plain
    Python values (wall.Name, wall.get(name)), keeps the exact tagged
    value reachable (wall.raw(name)), writes through
    set_attribute_by_name (wall.Name = Text("x"), wall.set(...);
    bare str/int/float/bool refused), compares and hashes by id,
    and offers is_a(type) with subtypes, psets and qtos as read-only
    mappings over property_sets, and set_property/remove_property.
    The plain conversion is lossy for * and .U. (both None), enums
    (str) and typed wrappers (payload only); the Python guide tabulates it.
  • IfcModel.to_dataframe(type="IfcProduct", psets=True, qtos=True, ...)
    behind the new optional extra openbim-ifc[pandas], imported lazily.
  • Types: Entity, PlainValue, PropertyValue and Assignable are
    exported; the test run checks a typed example and the guide's snippets
    with mypy --strict.
  • Additive: a patch release. iter(model) and in, which raised
    TypeError before, now work; no existing call changes.

Added (#330, schema-checked entity creation)

  • IfcModel.author(ops): AuthorOps built with AuthorOp.create,
    .edit, .remove, .project, .spatial, .product, .type_object,
    .assign_type, .contain, .aggregate, .placement and
    .owner_history, applied as one checked transaction and returning
    AuthoringResult; openbim_ifc.handle(index) (and HANDLE_BASE) names
    the entity an earlier operation produced. create_entity(type_name, attributes) and remove_with_relationships(id) are one-operation
    batches. New codes missing-attribute and still-referenced. Additive:
    a patch release.

PyPI: https://pypi.org/project/openbim-ifc/0.3.2/

openbim-ifc-py 0.3.1

Choose a tag to compare

@github-actions github-actions released this 04 Oct 01:06
a94a164

Added (#326, attributes by name)

  • IfcModel.attribute_names(id) (frozen AttributeInfo records in slot
    order), attribute_by_name(id, name) and set_attribute_by_name(id, name, value), resolved against the release the header declares; names
    match case-insensitively. Error codes unknown-attribute and
    derived-attribute. Additive: a patch release.

PyPI: https://pypi.org/project/openbim-ifc/0.3.1/

openbim-ifc-dotnet 0.1.1

Choose a tag to compare

@github-actions github-actions released this 04 Oct 11:35
652104d

Added (#330, schema-checked entity creation)

  • IfcModel.Author(ops): AuthorOps built with AuthorOp.Create,
    Edit, Remove, Project, Spatial, Product, TypeObject,
    AssignType, Contain, Aggregate, Placement and OwnerHistory,
    applied as one checked transaction; returns per operation the id it
    produced (null for a removal). IfcModel.Handle(index) /
    HandleBase name the entity an earlier operation produced.
    CreateEntity(type, attributes) and RemoveWithRelationships(id) are
    one-operation batches. IfcStatus.MissingAttribute (30) and
    StillReferenced (31). Needs the C ABI 0.1.6. Additive: a patch
    release.

NuGet: https://www.nuget.org/packages/OpenBim.Ifc/0.1.1

openbim-ifc-dotnet 0.1.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 01:08
a94a164

Added (#327)

  • The OpenBim.Ifc NuGet package: C# over the versioned C ABI of
    openbim-ifc-capi (openbim_ifc_v0_1_*, ABI 0.1.5 or later), for
    net8.0 and netstandard2.0 (.NET Framework 4.6.2 and later), with the
    native library for win-x64, win-arm64, linux-x64, linux-arm64,
    osx-x64 and osx-arm64. Build targets copy the Windows libraries into
    a .NET Framework project's output, and the assembly loads them from next
    to itself.
  • IfcModel, an IDisposable over a SafeHandle: Parse, Open
    (owned or memory-mapped), ParseIfcXml, Write, WriteIfcXml,
    Count, Schema, Diagnostics, Ids, IdsOfType,
    IdsOfTypeIncludingSubtypes, TypeOf, Attributes, Attribute,
    SetAttribute, Add, Remove and DanglingReferences.
  • Attributes by name (#326): AttributeNames (AttributeInfo records),
    AttributeByName and SetAttributeByName, with the codes
    unknown-attribute and derived-attribute.
  • The #244 surface: ParseOptions (Lenient), the Header record, read
    and replaced; Validate with a ValidationReport; ifcXML in the native
    and XSD layouts; UnreachableProducts.
  • The #123 domain views as C# records: PropertySets, ResolveUnit,
    SpatialTree, Classifications, Material, Systems, Cost and
    Georeferencing; and writing property sets as one checked transaction
    (SetProperties with PropertyEdits, SetProperty, RemoveProperty),
    checked against the PSD/QTO catalog the native library embeds.
  • Value, a closed record hierarchy keeping $ and *, .U. and
    .F., integer and real, and typed wrappers distinct; EquatableList<T>
    so records compare by value.
  • IfcException, carrying the stable error Code every binding shares and
    the C ABI's IfcStatus.
  • IfcLibrary.Version and IfcLibrary.LiveModels.

NuGet: https://www.nuget.org/packages/OpenBim.Ifc/0.1.0

openbim-ifc-capi 0.1.3

Choose a tag to compare

@github-actions github-actions released this 04 Oct 11:33
652104d

Added (#330, schema-checked entity creation)

  • openbim_ifc_v0_1_model_author: a value tape LIST of operations, each
    LIST(ENUM op, TEXT field, value, ...), applied as one checked
    transaction; one id per operation comes back (0 for a removal), and a
    short id buffer is BufferTooSmall before anything is written.
    openbim_ifc_v0_1_model_create_entity (a type and a LIST of
    (TEXT name, value) pairs) and
    openbim_ifc_v0_1_entity_remove_with_relationships are one-operation
    batches. OPENBIM_IFC_HANDLE_BASE (2^62) plus an operation's position
    names the entity it produced.
  • OPENBIM_IFC_STATUS_MISSING_ATTRIBUTE (30) and _STILL_REFERENCED
    (31).
  • The ABI version is 0.1.6: every export above is new, no v0_1 symbol
    changed. Additive, a patch release.

C library: prebuilt CMake archives and SHA256SUMS are attached below.