static private ParseLine ( string line, ReleaseVersion schema ) : |
||
line | string | |
schema | ReleaseVersion | |
return |
internal BaseClassIfc InterpretLine(string line) { if (line.StartsWith("ISO")) { return(null); } string ts = line.Trim().Replace(" ", ""); if (ts.StartsWith("FILE_SCHEMA(('IFC2X4", true, System.Globalization.CultureInfo.CurrentCulture) || ts.StartsWith("FILE_SCHEMA(('IFC4", true, System.Globalization.CultureInfo.CurrentCulture)) { mRelease = ReleaseVersion.IFC4; return(null); } BaseClassIfc result = ParserIfc.ParseLine(line, mRelease); if (result == null) { int ifcID = 0; string kw = "", str = ""; ParserIfc.GetKeyWord(line, out ifcID, out kw, out str); if (string.IsNullOrEmpty(kw)) { return(null); } result = new BaseClassIfc(ifcID, kw, str); } if (result == null) { return(null); } IfcApplication application = result as IfcApplication; if (application != null) { IfcApplication ea = mFactory.mApplication; if (ea != null && ea.mVersion == application.mVersion) { if (string.Compare(ea.ApplicationFullName, application.ApplicationFullName, true) == 0) { if (string.Compare(ea.mApplicationIdentifier, application.mApplicationIdentifier) == 0) { mIfcObjects[ea.mIndex] = null; mFactory.mApplication = application; mFactory.OwnerHistory(IfcChangeActionEnum.ADDED).mLastModifyingApplication = application.mIndex; if (mFactory.mOwnerHistoryModify != null) { mFactory.mOwnerHistoryModify.mLastModifyingApplication = application.mIndex; } } } } } IfcContext context = result as IfcContext; if (context != null) { mContext = context; } IfcGeometricRepresentationContext geometricRepresentationContext = result as IfcGeometricRepresentationContext; if (geometricRepresentationContext != null) { if (string.Compare(geometricRepresentationContext.mContextType, "Plan", true) != 0) { mFactory.mGeomRepContxt = geometricRepresentationContext; } if (geometricRepresentationContext.mPrecision > 1e-6) { Tolerance = geometricRepresentationContext.mPrecision; } } IfcSIUnit unit = result as IfcSIUnit; if (unit != null) { if (unit.Name == IfcSIUnitName.METRE && unit.Prefix == IfcSIPrefix.NONE) { mFactory.mSILength = unit; } else if (unit.Name == IfcSIUnitName.SQUARE_METRE && unit.Prefix == IfcSIPrefix.NONE) { mFactory.mSIArea = unit; } else if (unit.Name == IfcSIUnitName.CUBIC_METRE && unit.Prefix == IfcSIPrefix.NONE) { mFactory.mSIVolume = unit; } } this[result.mIndex] = result; //IfcWorkPlan workPlan = result as IfcWorkPlan; //if(workPlan != null) //{ // mWorkPlans.Add(workPlan); // return workPlan; //} return(result); }
internal BaseClassIfc interpretLine(string line) { BaseClassIfc result = ParserIfc.ParseLine(line, mRelease); if (result == null) { if (line.StartsWith("ISO")) { return(null); } if (setFileLine(line)) { return(null); } int ifcID = 0; string kw = "", str = ""; ParserSTEP.GetKeyWord(line, out ifcID, out kw, out str); if (string.IsNullOrEmpty(kw) || !kw.ToLower().StartsWith("ifc")) { return(null); } result = new BaseClassIfc(ifcID, kw, str); } if (result == null) { return(null); } IfcApplication application = result as IfcApplication; if (application != null) { IfcApplication ea = mFactory.mApplication; if (ea != null && ea.mVersion == application.mVersion) { if (string.Compare(ea.ApplicationFullName, application.ApplicationFullName, true) == 0) { if (string.Compare(ea.mApplicationIdentifier, application.mApplicationIdentifier) == 0) { this[ea.mIndex] = null; mFactory.mApplication = application; // mFactory.OwnerHistory(IfcChangeActionEnum.ADDED).mLastModifyingApplication = application.mIndex; // if (mFactory.mOwnerHistories.ContainsKey(IfcChangeActionEnum.MODIFIED)) // mFactory.mOwnerHistories[IfcChangeActionEnum.MODIFIED].mLastModifyingApplication = application.mIndex; } } } } IfcGeometricRepresentationContext geometricRepresentationContext = result as IfcGeometricRepresentationContext; if (geometricRepresentationContext != null) { Tolerance = geometricRepresentationContext.mPrecision; } IfcSIUnit unit = result as IfcSIUnit; if (unit != null) { if (unit.Name == IfcSIUnitName.METRE && unit.Prefix == IfcSIPrefix.NONE) { mFactory.mSILength = unit; } else if (unit.Name == IfcSIUnitName.SQUARE_METRE && unit.Prefix == IfcSIPrefix.NONE) { mFactory.mSIArea = unit; } else if (unit.Name == IfcSIUnitName.CUBIC_METRE && unit.Prefix == IfcSIPrefix.NONE) { mFactory.mSIVolume = unit; } } return(result); }