web-ifc-three icon indicating copy to clipboard operation
web-ifc-three copied to clipboard

writeLine Issue: "Line object cannot be serialized" issue when trying to write ANY line via the ifcApi

Open quasarchimaere opened this issue 2 years ago • 1 comments

Currently it is not possible to write (even unchanged lines) back to the model, this is due to a typo in the IFCWorker.js:87227 as you can clearly see there is a check for expressID, type and ToType[sic] -> ToType does not exist within a line Object and the code below states that it was actually meant to be ToTape, once you change the clause to ToTape it works just fine.

    if (lineObject.expressID == void 0 || lineObject.type == void 0 || lineObject.ToType === void 0) {
      console.warn("Line object cannot be serialized: ", lineObject);
      return;
    }
    let rawLineData = {
      ID: lineObject.expressID,
      type: lineObject.type,
      arguments: lineObject.ToTape()
    };
    this.WriteRawLineData(modelID, rawLineData);

quasarchimaere avatar Dec 07 '22 08:12 quasarchimaere

-Hi, i use [email protected] and [email protected]. I customized function "WriteLine", and did not use ifcworker.js(multi threading). Here is my code and it worked for me. WriteLine(modelID, lineObject) { var _this = this; const ifcAPI = this.ifcManager.ifc.ifcAPI; Object.keys(lineObject).forEach((propertyName) => { let property = lineObject[propertyName]; if (property && property.expressID !== void 0) { _this.WriteLine(modelID, property); lineObject[propertyName] = { type: 5, value: property.expressID, }; } else if (Array.isArray(property) && property.length > 0) { for (let i = 0; i < property.length; i++) { if (property[i].expressID !== void 0) { _this.WriteLine(modelID, property[i]); lineObject[propertyName][i] = { type: 5, value: property[i].expressID, }; } } } });

	let rawLineData = {
		ID: lineObject.expressID,
		type: lineObject.type,
		arguments: lineObject.ToTape(),
	};
	ifcAPI.WriteRawLineData(modelID, rawLineData);
}

RyugaRyuzaki avatar May 14 '23 10:05 RyugaRyuzaki