Releases: openbimrs/ifc
Releases · openbimrs/ifc
Release list
openbim-ifc-wasm 0.4.1
Added (#330, schema-checked entity creation)
IfcModel.author(ops):AuthorOpobjects ({ op: "product", type, container, placement, typeObject, attributes, ... }) applied as one
checked transaction, returningAuthoringResult(idsper 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 fromMath.random. Feature
author(default).IfcErrorCodegainsmissing-attributeand
still-referenced. Additive: a patch release.
openbim-ifc-wasm 0.4.0
Added (#326, attributes by name)
IfcModel.attributeNames(id)(AttributeInfo[]in slot order),
attributeByName(id, name)andsetAttributeByName(id, name, value),
resolved against the release the header declares; names match
case-insensitively.IfcErrorCodegainsunknown-attributeand
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-runtimereplacesproperty-catalog. The default
module is 2,648,193 bytes afterwasm-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 loadercatalog.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,catalogLoadedandloadCatalogBytesare the
synchronous parts.- Until a release's catalog is loaded, a write to a
Pset_/Qto_set
throws the new codecatalog-not-loaded, never unchecked. A build with
property-catalogembeds the catalog (1.4 MB) andloadCatalogis a
no-op. - A write to a
Pset_/Qto_set that 0.3.0 checked without a load now
needsloadCatalogfirst: a breaking change, a minor release under 0.x
(0.4.0). - TypeScript:
IfcModel.loadCatalog(a namespace merged with the class),
CatalogLoadOptions;IfcErrorCodegainstemplate-violation,
missing-propertyandcatalog-not-loaded.
openbim-ifc 0.16.0
Changed
spatial_propertiesand the property-edit planner (apply_property_edits,
stage_property_edits) resolve through oneifc_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::PropertyIndexis reachable through the
propertiesfeature.- Behind
geometry, the re-exportedifc_geometrygains, under
geometry::lower,lower_product_net_withandNetOptions(#351): a
Reference View opening with only aReferencerepresentation can be
taken as already applied to its host's Body, listed in
NetLowering::taken_as_applied. Withifc-geometry'scompilefeature
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). Whenifc-geometry0.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
Changed (breaking)
- Behind
geometry, the re-exportedifc_geometryis 0.9 (was 0.8): IFC4X3
stations, linear placements, offset curves by distances and sectioned
solids/surfaces lower exactly (#307), and anIfcParameterValue
distance on an alignment centreline is refused instead of being read as
plan distance (#347).
Added (#330, checked authoring)
- Feature
authoring:ifc-authorwithout choosing a release (author
now meansauthoringplusschema, 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 anAuthoringFailure)
and changes nothing;stage_authoringplans without committing. AuthorOp(#[non_exhaustive]):Createan entity by type and named
attributes,Editnamed attributes,Removean entity with the
relationships that reference it, and the buildersProject,Spatial
(aggregated under its parent),Product(placed, contained and typed),
TypeObject,AssignType,Contain,Aggregate,Placement(an
IfcLocalPlacementover anIfcAxis2Placement3D) andOwnerHistory
(throughifc-author's writers). Every record is built by name through
ifc-author'sEntityBuilderagainst the declared release, then its
references are resolved (type checked withSchema::accepts_type) and
its aggregates held to their declared bounds; a suppliedGlobalId
another entity holds is refused; an object is contained, aggregated or
typed once, and a model holds oneIfcProject.- An
IfcRootcreated without aGlobalIdgets a name-based one over a
seed (fresh_seed(), from the OS on native targets) and its id; a fixed
seed reproduces a file.OwnerHistoryis never invented. authoring_handle(i)/HANDLE_BASE(2^62): an operation names the
entity an earlier one produced;AuthoringOutcome::idsreports 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
Changed (breaking)
- Behind
property-catalog, the re-exportedproperty_catalogis
ifc-template-catalog0.4 (was 0.3): one compact snapshot container
replaces the per-edition bincode files, with newsnapshotandruntime
modules (#317). The newproperty-catalog-runtimefeature checks
property writes against a catalog supplied at run time (#318).
Added (#326, attributes by name)
attribute_slots(schema, type_name)andattribute_slot(schema, type_name, name)(featureschema-api): an entity type's explicit
attribute slots in Part 21 order, inherited first, asAttributeSlot
(index, name, declared type,optional,aggregate,derived,
declared_by).INVERSEand newDERIVEattributes hold no slot and
are not listed; an inherited attribute a subtype redeclares as derived
is markedderived. 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 checkPset_/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. Withproperty-catalogtoo, the embedded catalog is used.
property-catalognow enablesifc-template-catalog/embedded
explicitly. The embedded catalog shrinks from 3.7 MB to 1.4 MB with the
catalog's compact format (#317). - Additive (
PropertyEditFailureis#[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
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, returningEntityviews (new module
openbim_ifc.entity). AnEntityreads 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(...);
barestr/int/float/boolrefused), compares and hashes by id,
and offersis_a(type)with subtypes,psetsandqtosas read-only
mappings overproperty_sets, andset_property/remove_property.
The plain conversion is lossy for*and.U.(bothNone), 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 extraopenbim-ifc[pandas], imported lazily.- Types:
Entity,PlainValue,PropertyValueandAssignableare
exported; the test run checks a typed example and the guide's snippets
withmypy --strict. - Additive: a patch release.
iter(model)andin, which raised
TypeErrorbefore, now work; no existing call changes.
Added (#330, schema-checked entity creation)
IfcModel.author(ops):AuthorOps built withAuthorOp.create,
.edit,.remove,.project,.spatial,.product,.type_object,
.assign_type,.contain,.aggregate,.placementand
.owner_history, applied as one checked transaction and returning
AuthoringResult;openbim_ifc.handle(index)(andHANDLE_BASE) names
the entity an earlier operation produced.create_entity(type_name, attributes)andremove_with_relationships(id)are one-operation
batches. New codesmissing-attributeandstill-referenced. Additive:
a patch release.
openbim-ifc-py 0.3.1
Added (#326, attributes by name)
IfcModel.attribute_names(id)(frozenAttributeInforecords in slot
order),attribute_by_name(id, name)andset_attribute_by_name(id, name, value), resolved against the release the header declares; names
match case-insensitively. Error codesunknown-attributeand
derived-attribute. Additive: a patch release.
openbim-ifc-dotnet 0.1.1
Added (#330, schema-checked entity creation)
IfcModel.Author(ops):AuthorOps built withAuthorOp.Create,
Edit,Remove,Project,Spatial,Product,TypeObject,
AssignType,Contain,Aggregate,PlacementandOwnerHistory,
applied as one checked transaction; returns per operation the id it
produced (null for a removal).IfcModel.Handle(index)/
HandleBasename the entity an earlier operation produced.
CreateEntity(type, attributes)andRemoveWithRelationships(id)are
one-operation batches.IfcStatus.MissingAttribute(30) and
StillReferenced(31). Needs the C ABI 0.1.6. Additive: a patch
release.
openbim-ifc-dotnet 0.1.0
Added (#327)
- The
OpenBim.IfcNuGet package: C# over the versioned C ABI of
openbim-ifc-capi(openbim_ifc_v0_1_*, ABI 0.1.5 or later), for
net8.0andnetstandard2.0(.NET Framework 4.6.2 and later), with the
native library forwin-x64,win-arm64,linux-x64,linux-arm64,
osx-x64andosx-arm64. Build targets copy the Windows libraries into
a .NET Framework project's output, and the assembly loads them from next
to itself. IfcModel, anIDisposableover aSafeHandle:Parse,Open
(owned or memory-mapped),ParseIfcXml,Write,WriteIfcXml,
Count,Schema,Diagnostics,Ids,IdsOfType,
IdsOfTypeIncludingSubtypes,TypeOf,Attributes,Attribute,
SetAttribute,Add,RemoveandDanglingReferences.- Attributes by name (#326):
AttributeNames(AttributeInforecords),
AttributeByNameandSetAttributeByName, with the codes
unknown-attributeandderived-attribute. - The #244 surface:
ParseOptions(Lenient), theHeaderrecord, read
and replaced;Validatewith aValidationReport; ifcXML in the native
and XSD layouts;UnreachableProducts. - The #123 domain views as C# records:
PropertySets,ResolveUnit,
SpatialTree,Classifications,Material,Systems,Costand
Georeferencing; and writing property sets as one checked transaction
(SetPropertieswithPropertyEdits,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 errorCodeevery binding shares and
the C ABI'sIfcStatus.IfcLibrary.VersionandIfcLibrary.LiveModels.
openbim-ifc-capi 0.1.3
Added (#330, schema-checked entity creation)
openbim_ifc_v0_1_model_author: a value tapeLISTof 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 isBufferTooSmallbefore anything is written.
openbim_ifc_v0_1_model_create_entity(a type and aLISTof
(TEXT name, value)pairs) and
openbim_ifc_v0_1_entity_remove_with_relationshipsare 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_1symbol
changed. Additive, a patch release.
C library: prebuilt CMake archives and SHA256SUMS are attached below.