Repository navigation
Releases
v0.4.0
Breaking changes
- Legacy IFC profile: the
GlobalIdof a type-levelIfcRelAssociatesMaterialrelation is now seeded from the material element id list (type-materials:{materialIds}, asmaterials:{materialIds}already is for product-level relations, andtype-layer-set:{seed}from the host type id or layer-set group key) instead of the STEP entity number of the relating material, material list or layer set. Type-level material relationGlobalIds in the legacy profile change once and no longer shift when entities are added or removed earlier in the file; product-level material relations and the current IFC profile are unchanged. (Closes #88)
Added
-
Preview project
src/RvtIO.Scene:RvtSceneReaderturns a document into a scene of theIOScene0.1 contract, with the element meshes in metres (shared symbols as instanced geometry), the Revit UniqueId as the source id, the IFC GlobalId of Revit's IFC export as the IfcGuid, names, categories, materials and the instance and type parameters as property sets of their display text. See the scene adapter. -
Package
RvtIO.Scene: the scene adapter is now published on the RvtIO release tag, depends on exactly the same RvtIO version and references IOScene with the range[0.1.0, 0.2.0-0.0)(a release that would depend on an IOScene preview, or on a version nuget.org refuses in a dependency, fails). -
API:
ElementMeshes.Extract(namespaceRvtIO.Meshes) returns the triangle meshes of the drawable model elements of an openedRvtDocument, in feet, without reading the file again: per element its own triangles (one mesh per material, flat normals, counter-clockwise around them) and, for an element that is exactly its family symbols placed rigidly, the placements of shared symbol meshes in the frame of the family, with a coverage per element (complete, partial, box in place of a rescaled symbol, no geometry, undecoded; partial also when a placed symbol or a symbol nested in one has no geometry, or a Geometry node that Revit exports has no decoded polygon). A cut or clipped instance, an instance with faces of its own and a scaled one keep their own triangles; a mirrored placement keeps the winding of its symbol and carries the mirror in its transform. The drawable elements follow a subset of the product rules of the IFC export of the current profile (listed in theElementMeshesremarks, with those not applied, such as the "export to IFC" flag and topography, so the meshes can include elements the IFC leaves out); the face materials and the hidden Geometry nodes follow its rules. The types are listed in the public API. IFC and JSON output is unchanged. -
CLI and diagnostics:
--strictexits with code 6 (RvtExitCodes.PartialRead) instead of 0 when a read finishes partial without exceeding a reader limit (a stream member failed to decode, was rebuilt by structural recovery, or decoded without a matching checksum, orGlobal/ElemTabledecoded no row). Nothing is exported when exit code 6 is returned;limits.strictrecords the option andissues[]lists the affected streams and reasons (failed-members,recovered-members,unverified-members,no-rows) alongsidestreams[]. Default behavior without--strictis unchanged. (Closes #54) -
Default output, current IFC profile: every beam with a straight drive curve gets
Pset_BeamCommon.Slope, the angle in degrees of its drive curve to the horizontal (0 for a horizontal beam, never negative), whether or not BaseQuantities are exported and whatever its body; its quantities are unchanged. A beam without a straight drive curve gets no Slope. -
Default output, current IFC profile:
Pset_BeamCommon.Spanof a beam without a stored length is the length of its straight drive curve; a beam without one has no Span. -
Default output, current IFC profile: a round column gets the volume and surface of the measured node that carries its two exact end faces in place of the open tessellated side. A round column is a vertical cylinder: exactly two exact planar end faces, horizontal, without holes, of at least eight corners on one circle (the same for both faces), each with an exact area within 0.5% of the area of that circle (a regular polygon of 32 corners or fewer is refused), and every other face with its corners on the cylinder between the end faces. The node is taken only when it is the one node that holds nothing but end faces. It is used for
NetVolumeafter the sources that come first for a column (the Medium solids, the nominal area of a tube, the computed host volume, the measures of all nodes) and forCrossSectionArea(half the surface) of a column without extrusion data. When the two end faces also have the same exact area (a vertical prism) the column gets the extrusion dataLength,CrossSectionArea(the area of its circle),OuterSurfaceAreaandGrossVolume. Other columns are unchanged. Measured on the round columns of one sample (corner distances to a millionth of the radius, or eight units in the last place of a 32-bit coordinate where that is more). -
Default output, current IFC profile:
Pset_ColumnCommon.Slope(90 degrees for a vertical extrusion) is written for every column with a body of its own, whatever its shape, not only for the first column of its type; the columns that share a mapped body still carry it on the first one, and a column whose body is not recognised keeps the previous rule (the first column of its type). A round column (as above, with end faces of the same exact area) is judged on all its faces, its exact end faces being listed outside the tessellated shell of its side; other columns are judged as before. Compared with the reference only on the round columns of one sample (Slope equal on all 152); the columns of two other samples, which are not round, are unchanged. -
IFC export: a structural framing element whose structural type is Brace is an
IfcMember(and its type anIfcMemberType) in every file, not only in files whose geometry is not decoded; before, a brace of a Revit 2022 file was anIfcBeam. ItsPset_MemberCommoncarriesLoadBearing(the occurrence parameter, else true), as does that of its type in the current profile, and, in the current profile, aSpanthat is the exact length of the straight drive curve (the stored length, which the file rounds to under 0.1 mm, only when there is no such curve); a mullion gets neither. A brace with a straight drive curve getsPset_MemberCommon.Slope, the angle of that curve to the horizontal, as a beam does, in every file and not only where the body is decoded (current profile). In a file whose geometry is decoded theLengthandCrossSectionAreaof a brace stay those of the beam rule, the profile length and area; its other quantities areNetVolumeandNetSurfaceArea. A brace losesPset_BeamCommon, as it is no longer a beam. In a file whose geometry is not decoded (Revit 2023 and later) theLengthandCrossSectionAreaof a brace keep the member rule, where the section is half the surface area of the solid. The legacy profile also writes a brace as anIfcMember, withLoadBearingbut withoutSpanand without the type-level set. In a Revit 2023 file, where braces already were members, the type-levelPset_MemberCommonis now written for them too (current profile). Measured against the reference on one Revit 2022 sample (all 22 braces: class, type,IsExternal,LoadBearing,ReferenceandSpanequal), three synthetic Revit 2022 models and two Revit 2023 samples (LoadBearingandSpanof all 81 braces equal); theLengthandCrossSectionAreaof the Revit 2022 braces are unchanged from the beam output. The reference writes noSlopefor a brace, so this property is a deliberate difference from it. Beams are unchanged. -
IFC export, current profile: a structural framing element whose structural type is Non-structural is an
IfcBuildingElementProxy(and its type anIfcBuildingElementProxyType) instead of anIfcBeam, with its quantities andPset_BuildingElementProxyCommon. Measured on one Revit 2021 structural file only (18 of 18 such elements agree with the reference), not on a Revit 2023 or later file; the legacy profile is unchanged. -
IFC export, current profile: ducts, pipes, conduits and cable trays of files with their own class schema (Revit 2021 and 2023 and later) take their length from the straight drive curve of the element, as those of a Revit 2022 file do, so each one carries the Length property of
Pset_FlowSegmentDuctSegmentandPset_FlowSegmentPipeSegment(the curve length in millimetres) and the parameters derived from the curve (surface area, elevations, slope) that the reader had left unset in those files. A driver that is an arc, or that holds no straight curve and is not the spline of a flexible duct or pipe, gives no length, as before. -
IFC export, current profile: flexible ducts and flexible pipes carry the Length property of
Pset_FlowSegmentDuctSegmentandPset_FlowSegmentPipeSegment, the arc length in millimetres of the Hermite spline that drives them. A flexible pipe of a Revit 2022 file already had it; a flexible duct of a Revit 2022 file did not, and neither did a flexible duct or pipe of a file with its own class schema (Revit 2021 and 2023 and later), whose spline nodes were not read. Measured against the reference on five files: all 113 flexible ducts of a Revit 2022, a Revit 2023 and a Revit 2024 sample (113 of 113 in each, equal within 1e-6 relative) and the 6 flexible ducts and pipes of a Revit 2021 and of a Revit 2023 sample (6 of 6 in each) now match; nothing regressed or was lost in those samples. A spline whose nodes are incomplete, or a driver that queues more than one spline, gives no length, as before. Files of Revit 2020 and of Revit 2025 and later were not measured. -
IFC export, current profile: the ducts, pipes, conduits, cable trays and pipe insulation...
v0.3.0
Breaking changes
-
Default output, all IFC profiles and the JSON output (Closes #98):
RvtReaderOptions.ResolveCurrentCopiesis now true by default, so an element that several partition streams hold is read from its current copy only, and the output changes for every file saved in several increments.--keep-all-copies(orResolveCurrentCopies = false) restores the earlier reading of every copy;--resolve-current-copiesis still accepted and does nothing. For files with shared work see Known issues. -
API and command line:
RvtReaderOptions.RevitLocalizationDirectoryis[Obsolete]and ignored, and the--revit-localizationoption is deprecated and ignored (the CLI prints "ignored: texts are built in"): the texts are built in and the reader opens no file of an installed host application. Nothing replaces the option; remove it. -
Full JSON and API:
MaterialLayer.FunctionandLayers[].Functioncarry the names of the Revit API,None,Structure,Substrate,Insulation,Finish1,Finish2,MembraneandStructuralDeck(before:Unknown,Structure,Substrate,ThermalAir,Finish,Membrane), and types whose compound structure holds a Membrane or a StructuralDeck layer now haveLayers; a wall whose type holds such a layer is exported as an IfcWallStandardCase instead of an IfcCurtainWall. Code that compares the earlier names must change (Refs #31, Refs #16). -
API:
Element.BoundingBoxis now the axis-aligned outline stored in the element header, as the Revit API bounding box (null for elements with no stored outline, such as grids and levels). The tight box of the decoded geometry, whichElement.BoundingBoxheld before, isElement.Geometry.BoundingBox, soFilteredElementCollector.WhereBoundingBoxIsNotNullnow selects by the stored outline. -
Default output, current IFC profile: quantities and property reals are written with 17 significant digits (
2699.9999999999627), with a three-digit signed exponent, a point after an integer value and-0.for negative zero. The values are the same numbers, the text changes; the legacy profile keeps its 15-digit reals. There is no option to restore the earlier text. -
Default output, IFC openings: the Depth of the opening of a door or window is the total layer width of its host wall type where the family cuts with a profile, and the Depth of a wall opening is the extrusion length of its solid, both without the 0.2 mm that was added before; a filled opening whose depth equals the width of its straight host wall is measured in the model frame where the host-axes measure does not apply.
--ifc-opening-legacy-axeskeeps the earlier selection of the frame, but the Depth loses the 0.2 mm in both cases. -
Default output, current IFC profile: the GlobalId of an IfcRelAssociatesClassification is derived from the first character of the classification name and of the code and from the GlobalId of the first related object, so classification associations get new GlobalIds.
-
Default output, current IFC profile: the IfcStairFlightType of a spiral run has the predefined type SPIRAL, and its GlobalId changes with it.
-
Default output: some elements are no longer written as products: wall sweeps of the reveal kind, a wall record that is the type of another element and names no project phase, in a file whose geometry is not decoded a wall without a solid or face body, elements whose "Export to IFC" parameter is No (or "Export Type to IFC" of the type, while the instance is left at the default), and, in a file whose bounds are decoded, an element of an IfcElement class (other than a wall) without bounds. There is no option to restore them; the entries below give the rules.
-
Default output: a wall sweep, slab edge, fascia, gutter, roof soffit or 3D model text proxy is named after the fixed system family (
Wall Sweep,Slab Edge,Fascia,Gutter,Compound Ceiling,Model Text) instead of theOST_category name. -
Synthesizes the ROOM_LEVEL_ID parameter (-1006916) and fallback ROOM_UPPER_LEVEL (-1006922) for room elements (OST_Rooms) in schema-read models (Revit 2023 and later) from LEVEL_PARAM (-1001952) or SCHEDULE_LEVEL_PARAM (-1002062) when no element references are present, restoring parameter parity with legacy-read models for API and JSON export consumers (Closes #141).
-
Current profile: stair runs and landings without ELEM_TYPE_PARAM resolve type-level Manufacturer in Pset_ManufacturerTypeInformation from their stair component type ahead of reference element type (Closes #75).
-
Decode statistics in the export report now record the element table (Global/ElemTable), streams in the Global and Formats storages, and Global/History, and streams with members rebuilt by structural recovery mark the report status as partial; a stream that holds bytes but not one gzip member (its header is gone) counts as one failed member, so the read is partial and not complete, also for the partition streams (Closes #60).
-
Documentation: clarifies in
docs/export-report.mdthatexport.exportedin the export report counts Revit elements rather than exported product entities (a roof element writing both IfcRoof and IfcSlab counts once) (Closes #62). -
Reads the axis-aligned outline stored in the element header (schema class 1340) as
Element.BoundingBoxacross all Revit releases (2020 to 2027), matching the Revit API bounding box. The tight box of the decoded geometry stays onElement.Geometry.BoundingBox. Elements with no stored outline (such as grids and levels) have nullBoundingBox, and elements whose records disagree remain unresolved. The files that carry their own class schema (Revit 2020, 2021 and 2023 and later) give the box to a read without the R22 layout as well, read by the structure of the header; the IFC export measures bodies by the box of the decoded geometry and not by this outline, except that a wall with decoded geometry is placed by it as the reference does, so a roof that only holds curtain panels and every element of a read without the R22 layout (outline, no geometry) are exported as before. The Length quantity of a wall placed by the outline can differ from the earlier value by micrometres. On 73 synthetic models, 1009 of 1009 elements with an API box match exactly and 216 of 216 without an API box remain null (Closes #99, Closes #68, Closes #67, Closes #66). -
Export report: grid elements (OST_Grids) written by the grid pass as IfcGrid axes are now credited in exported and removed from the skip log, preserving the considered == exported + skipped invariant. Unwritten grid elements (such as types or disconnected lines) remain logged as skipped (Closes #59).
-
Current profile: a foundation whose profile gives no width (a round pile has neither an extrusion body nor a vertical prism) takes the Width quantity from the Width parameter of the instance, else of its type, so the round piles of the Revit 2025 structural sample carry the diameter their types store there (2 feet for the 24 inch families, 2.5 feet for the 30 inch one) as the reference output does. Foundations with an extrusion body or a vertical prism keep the width of their profile.
-
The export refuses a
--reportpath that names not only the input file or the export output, but also--dev-external-dumpand the compact measurement dumps (--dev-candidates,--dev-trace,--dev-facts,--dev-solids,--dev-user-params,--dev-collisions), so the run can no longer overwrite one of its own outputs with the report. -
Reads a room phase of element id 0 from the room metadata too where a project phase can have that id (files whose element layout is read from their own schema, Revit 2023 and later), and the ROOM_PHASE and ROOM_PHASE_ID parameters of a room now also come from the room's own record when no phase reference resolves: the placed rooms of the Revit 2023 Japanese architectural sample (サンプル意匠.rvt, 113 rooms whose phase is the id-0 phase) and of a Revit 2025 architectural sample (54 rooms in the New Construction phase) carry them where none were written before, as the reference exports name their phase. Rooms whose phase reference resolves keep their values. In the IFC export more elements are contained in the IfcSpace of their room where the room phase is now read (910 elements before and 1155 after in the Revit 2025 Japanese architectural sample, 1149 in the reference export); 12 elements per file go to an IfcSpace where the reference keeps the storey (see Known issues).
-
Fix, current profile: an assembled stair run takes no Length quantity again. The count of risers of a sketched run without an end riser was changed to one less than its index span for the NumberOfRiser and NumberOfTreads attributes of the flight, and the Length of a run read that attribute, so such a run (a "Non-Monolithic Run" in the sample projects, 4000 mm in rac_basic_sample_project) got a Length that the reference export does not have. The Length now counts the treads of the index span, as before, whatever the attribute says; the attributes themselves are unchanged.
-
Current profile: a wall record that is the type of another element and names no project phase is no longer written as an IfcWall (the type is written from the instances that use it), and, in a file whose geometry is not decoded, a wall that holds neither a solid nor a face body is no longer written (a wall without a body has nothing to show). Curtain walls and walls with any body are unchanged, and the legacy profile is unchanged.
-
IFC export: an element whose "Export to IFC" parameter (instance) is No, or whose "Export Type to IFC" parameter (type) is No while the instance is left at the default, is no longer written; an instance set to Yes is written whatever its type says, and the wall openings of a wall left out go with it. The same rule holds for every writer that makes an entity from an element outside the product loop: the spaces, the grids, the assembly of a beam system, t...
v0.2.0
Breaking changes
- Default output, current IFC profile (Closes #73): the Width and Height quantities of the IfcOpeningElement of a door or window in a straight wall are now those of the door or window as Revit has them, Width along the wall (the Width of the instance, else of its type) and Height vertical (its Height), with Depth the thickness of the wall, in a wall of any direction. A side the door or window holds no value for is measured from the final opening in the frame of the wall. Before, the sides of the cut loop were named by the frame they are measured in, so a door 0.8 wide and 2.1 high got Height 0.8 and Width 2.1. Openings of curved walls and curtain walls, openings that nothing fills and openings of other fillers stay as they were. To get the earlier values, use the new
--ifc-opening-legacy-axescommand line option or setIfcExporter.OpeningQuantitiesSwappedto true.--ifc-opening-host-axes(the opt-in of the previous change) is still accepted and does nothing, andIfcExporter.OpeningQuantitiesInHostAxesstill compiles; it is now true by default and the opposite ofOpeningQuantitiesSwapped. Refs #6. - Default output, current IFC profile: the IFC holds only the elements that exist in the last project phase. Elements demolished in the export phase or an earlier one, or created in a later one, are left out, with their property sets, quantity sets, types and relations. To get every element as before, use
--ifc-phase allor setIfcExporter.ExportAllPhasesto true;--ifc-phase <id>andIfcExporter.ExportPhaseIdselect one phase. Rooms follow the export phase unless a room phase is given. The legacy profile and the JSON output are not filtered by default. - Default output, IFC quantities: base quantities of beams, columns, members, piles, floors and plates are derived from the surface integrals of the source geometry, and door and window height and width come from their parameters or frame extent before the bounding box. NetVolume, NetSurfaceArea, CrossSectionArea, Length, GrossArea, NetArea and the door and window Height, Width, Area, OverallHeight and OverallWidth can differ from 0.1.0; most values move toward the reference exporter. In the legacy profile members whose length is now derived can also gain the property Span. There is no option that restores the 0.1.0 values.
- Default output, stairs: a stair flight carries NumberOfRiser, NumberOfTreads, RiserHeight and TreadLength and the property set Pset_StairFlightCommon; runs, landings, stringers and railings of a stair are aggregated into the stair (IfcRelAggregates) and are no longer contained in the storey; a landing takes the name and Reference of its type. See also the stair type entry below. There is no option that restores the 0.1.0 layout.
- API:
RvtFileReader.ReadandRvtDocument.OpenthrowRvtInputException(orRvtLimitExceptionfor a stream over the platform array length) for a file that cannot be read, instead of anEndOfStreamException,FileFormatExceptionor a similar exception from a decoder. Code that catches the old exception types must catch the new ones. - Command line: the exit codes 2, 3 and 4 are new (see below). A damaged or truncated file ended in an unhandled exception in 0.1.0 (or, when only the end of a stream the export does not use was missing, in an export without a message) and now returns 2 with a one-line message.
- Default output, current IFC profile: the GlobalId of the IfcStairFlightType of a stair run or landing changes, because its seed now contains the run style, and the type gets the predefined type STRAIGHT instead of NOTDEFINED (2 types in the Revit 2025 architecture sample, 4 in the Revit 2024 DACH sample). The IfcRelDefinesByType of those types follows.
Added
- Exit codes 2 (input cannot be read: missing, empty, not a compound file, cut or damaged), 3 (a stream exceeded a reader limit and the read was cut) and 4 (a decoder failed on a readable file), and the options
--report,--allow-partialand--raise-limits. A complete export without them is unchanged. See the export report.RvtFileReader.ReadandRvtDocument.Opencheck that every stream of the compound file can be read to its declared end;RvtReaderOptions.Diagnosticscollects the streams read and the limits that cut one. The report counts partial reads, written reinforcing bars and the assembly written for a beam system, and refuses a report path that names the input or the export output, also through a link. - The
--ifc-phase <last|all|id>command line option and theIfcExporter.ExportPhaseIdandExportAllPhasesproperties (see the breaking change above). - The opt-in
RvtReaderOptions.ResolveCurrentCopiesreader option and--resolve-current-copiescommand line option, which keep only the current copy of an element that several partition streams hold. It is off by default and the default output does not change. - The full JSON, and the IFC property sets written by
--ifc-revit-parameters, get the parameter CURTAIN_WALL_PANELS_WIDTH (a copy of GENERIC_WIDTH) on elements that hold only the generic width; the full JSON lists it in ParameterDefinitions. CURVE_ELEM_LENGTH values can differ in the last digit. Compact JSON is unchanged. - The IFC length unit is read from the project length unit in every file layout (including the Revit 2020 display unit layout and family documents), so a file whose length unit is not the millimetre now gets that unit in the IFC (a family in feet gets FOOT, SQUARE FOOT and CUBIC FOOT instead of millimetre, square metre and cubic metre); the reason is reported through diagnostics when it falls back to millimetres.
- Stair runs and landings resolve their type through the stored type association, so the IFC names the real type, writes its stair flight type and property sets, and the stair run Reference. The IFC stair shape of the current profile stays undefined when a stair has a sketched run, and a railing aggregated into a stair no longer takes the classification code of the stair. The run Length quantity keeps the inputs it had. The element class counts of the stair source are taken from the stream walk, which in files with their own class schema lets both profiles recognise the runs and landings of a stair.
Fixed
- Reads the element table of a file whose partition stream carries padding after the last page segment of a paged gzip member (the Revit 2021 MEP sample project, Closes #8). Before, the table fell back to a decoder that returned extra bytes and the export held about half of the elements (13706 of 27583), most without properties or geometry, and elements that are not in the file. Output of other files is unchanged.
- Paged gzip members are decoded with an exact deflate end, and a missing trailer, a reserved flag or a wrong header CRC is rejected. A damaged or truncated partition stream is rejected by the framing check instead of read past its end.
- Selects the element table and record layout by the release of the file's own schema, the older of it and the saved release, and reports the release in the diagnostics. Decodes the document increment table of a file saved in several increments with a bound on the work it may do; a malformed table is rejected instead of guessed.
--ifc-room-phaseand the room phase property accept the phase id 0.- Takes the length of a curtain wall mullion from the axis of its own symbol, and the footprint of a curved wall from the area of its rebuilt curve loop.
- IFC slab and plate quantities: the NetVolume of floors and of plates (IfcPlate) is taken from the source geometry too; values move toward the reference exporter (floors by 0.01 to 0.2 percent, the curtain louvres of the 2024 DACH sample by 7 percent). Floors that have no vertical prism gain a Width quantity.
- The Width quantity of foundation slabs (pile caps and base slabs), which since the base quantities change took the vertical side of the body instead of the first side of its profile (Closes #78). Other slabs take the world X extent of their vertical prism and fall back to the body only when they have none; this equals 0.1.0 for floors and pile caps, while base slabs and some roofs now equal the reference exporter.
- The NetVolume of round foundation piles whose solids are open shells without measures is written again (Closes #79). It is taken per node, only when the node is a straight prism (two opposite end caps, and at least one side face, all of them flat and parallel to the cap normal or cylinder faces along it, with their points on the cap boundaries), as the larger cap area times the distance of the caps, and added to the measured and closed solids of the foundation; a node below zero and a cutting node take no part, also not for the NetArea. 0.1.0 summed the open shells, which gave values up to ten times too large. A pile whose end caps differ by more than 2 percent still gets no NetVolume (#42).
- The extrusion of an opening that the door or window code rewrites from the final outline can change shape (profile size, extrusion depth, placement direction), independent of
--ifc-opening-legacy-axes. Seen on one opening of the 2022 rac basic sample; the profile size and extrusion depth now equal those of the reference exporter. - A door or window with a non-finite dimension is ignored for the opening, and each side of an opening is taken from the door or window independently.
- Legacy IFC profile: the GlobalIds of the type-level IfcRelAssociatesMaterial relations (and of the relations of layer sets) change in files where the output gains or loses entities before them, for example the mullion Span property in the Revit 2022 rac basic sample, because the legacy seed is the STEP number of the relating material. Ids of the current profile do not depend on entity numbers and are unchanged.
Performance
- Reduces the memory allocated and the processor time spent in the tessellation ...
v0.1.0
- Reads Revit projects (
.rvt) and families (.rfa) saved by Revit 2020 to 2026 without Revit; Revit 2027 files open
with partial support. - Writes IFC2X3 (coordination view) with optional Revit parameters as property sets, compact JSON and a full JSON dump.
RvtDocument,FilteredElementCollectorand the element model for reading;IfcExporterandCompactJsonExporter
for export; thervtiocommand line tool.- Targets .NET 8 and .NET 10; the library is silent by default and reports through
DiagnosticOutput. - Excludes resolved non-primary design options from IFC while retaining all options in the document API.
- Reads additional user parameters on materials, curve center lines and view markers.
- Corrects element identifiers, material layers and compressed data handling in newer project layouts.
Вложения / Downloads
- CLI (консольная утилита):
RvtIO-Cli-0.1.0.zip(для .NET 8 Runtime) иRvtIO-Cli-0.1.0-net10.0.zip(для .NET 10 Runtime). Содержит исполняемыйrvtio.exe/RvtIO.Cli.exeсо всеми зависимостями. - Библиотека:
RvtIO-0.1.0.zip(скомпилированные сборки для .NET 8 и .NET 10 со всеми зависимостями:OpenMcdf,SharpZipLib, XML-документация и PDB). - Пакеты NuGet:
RvtIO.0.1.0.nupkgиRvtIO.Cli.0.1.0.nupkg(также доступны на nuget.org). - Исходный код:
RvtIO-0.1.0-source.zip. - Контрольные суммы всех файлов:
SHA256SUMS.txt.