Skip to content

Commit

Permalink
v0.0.9
Browse files Browse the repository at this point in the history
  • Loading branch information
jmirtsch committed Aug 17, 2016
1 parent 16296c4 commit dbfb1be
Show file tree
Hide file tree
Showing 64 changed files with 7,991 additions and 572 deletions.
10 changes: 2 additions & 8 deletions Core/IFC/BaseClassIFC.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,11 @@ public partial class BaseClassIfc : STEPEntity, IBaseClassIfc
public DatabaseIfc Database { get { return mDatabase; } }

internal BaseClassIfc() : base() { }
protected BaseClassIfc(BaseClassIfc e) { mIndex = e.mIndex; }
protected BaseClassIfc(DatabaseIfc db, BaseClassIfc e) { db.appendObject(this); db.Factory.mDuplicateMapping.Add(e.mIndex, mIndex); }
internal BaseClassIfc(int record, string kw, string line) { mIndex = record; mIFCString = line; }
protected BaseClassIfc(DatabaseIfc m) { attachModel(m); }
protected BaseClassIfc(DatabaseIfc db) { db.appendObject(this); }

protected virtual void parseFields(List<string> arrFields, ref int ipos) { }

private void attachModel(DatabaseIfc m)
{
m[m.NextBlank] = this;
}

internal virtual void postParseRelate() { }
public virtual List<T> Extract<T>() where T : IBaseClassIfc
{
Expand Down
27 changes: 9 additions & 18 deletions Core/IFC/DatabaseIFC.cs
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ public BaseClassIfc this[int index]
value.mIndex = index;
}
}

internal void appendObject(BaseClassIfc o) { this[NextBlank] = o; }
internal IfcContext mContext = null;

internal HashSet<string> mGlobalIDs = new HashSet<string>();
Expand Down Expand Up @@ -416,12 +416,13 @@ private void postImport()
BaseClassIfc obj = this[icounter];
if (obj == null)
continue;
try
{
obj.postParseRelate();

}
catch(Exception) { }
}

// customPostImport();

}
internal BaseClassIfc InterpretLine(string line)
{
Expand Down Expand Up @@ -578,23 +579,13 @@ internal BaseClassIfc Duplicate(BaseClassIfc entity, bool downStream)
if (type != null)
{
Type[] types = new Type[] { typeof(DatabaseIfc), type, typeof(bool) };
ConstructorInfo constructor = type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
null, types, null);
ConstructorInfo constructor = type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, types, null);
if (constructor != null)
{
BaseClassIfc result = constructor.Invoke(new object[] { this, entity, downStream }) as BaseClassIfc;
mDuplicateMapping.Add(entity.mIndex, result.mIndex);
return result;
}
return constructor.Invoke(new object[] { this.mDatabase, entity, downStream }) as BaseClassIfc;
types = new Type[] { typeof(DatabaseIfc), type };
constructor = type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
null, types, null);
constructor = type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, types, null);
if (constructor != null)
{
BaseClassIfc result = constructor.Invoke(new object[] { this, entity }) as BaseClassIfc;
mDuplicateMapping.Add(entity.mIndex, result.mIndex);
return result;
}
return constructor.Invoke(new object[] { this.mDatabase, entity }) as BaseClassIfc;
}
return null;
}
Expand Down
93 changes: 56 additions & 37 deletions Core/IFC/IFC A.cs

Large diffs are not rendered by default.

41 changes: 25 additions & 16 deletions Core/IFC/IFC B.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public partial class IfcBeam : IfcBuildingElement
public IfcBeamTypeEnum PredefinedType { get { return mPredefinedType; } set { mPredefinedType = value; } }

internal IfcBeam() : base() { }
internal IfcBeam(DatabaseIfc db, IfcBeam b) : base(db, b) { mPredefinedType = b.mPredefinedType; }
public IfcBeam(IfcProduct host, IfcObjectPlacement p, IfcProductRepresentation r) : base(host, p, r) { }

internal static void parseFields(IfcBeam b, List<string> arrFields, ref int ipos, ReleaseVersion schema)
Expand All @@ -55,6 +56,7 @@ public partial class IfcBeamStandardCase : IfcBeam
public override string KeyWord { get { return (mDatabase.mRelease == ReleaseVersion.IFC2x3 || mDatabase.mModelView == ModelView.Ifc4Reference ? "IfcBeam" : base.KeyWord); } }

internal IfcBeamStandardCase() : base() { }
internal IfcBeamStandardCase(DatabaseIfc db, IfcBeamStandardCase b) : base(db, b) { }

internal new static IfcBeamStandardCase Parse(string strDef, ReleaseVersion schema) { IfcBeamStandardCase c = new IfcBeamStandardCase(); int ipos = 0; parseFields(c, ParserSTEP.SplitLineFields(strDef), ref ipos,schema); return c; }
internal static void parseFields(IfcBeamStandardCase c, List<string> arrFields, ref int ipos, ReleaseVersion schema) { IfcBeam.parseFields(c, arrFields, ref ipos,schema); }
Expand Down Expand Up @@ -94,7 +96,7 @@ public partial class IfcBlobTexture : IfcSurfaceTexture
internal string mRasterFormat;// : IfcIdentifier;
internal bool mRasterCode;// : BOOLEAN;
internal IfcBlobTexture() : base() { }
internal IfcBlobTexture(IfcBlobTexture i) : base(i) { mRasterFormat = i.mRasterFormat; mRasterCode = i.mRasterCode; }
//internal IfcBlobTexture(IfcBlobTexture i) : base(i) { mRasterFormat = i.mRasterFormat; mRasterCode = i.mRasterCode; }
internal static IfcBlobTexture Parse(string strDef, ReleaseVersion schema) { IfcBlobTexture t = new IfcBlobTexture(); int ipos = 0; parseFields(t, ParserSTEP.SplitLineFields(strDef), ref ipos,schema); return t; }
internal static void parseFields(IfcBlobTexture t, List<string> arrFields, ref int ipos, ReleaseVersion schema) { IfcSurfaceTexture.parseFields(t, arrFields, ref ipos,schema); t.mRasterFormat = arrFields[ipos++].Replace("'", ""); t.mRasterCode = ParserSTEP.ParseBool(arrFields[ipos++]); }
protected override string BuildStringSTEP() { return base.BuildStringSTEP() + ",'" + mRasterFormat + "'," + ParserSTEP.BoolToString(mRasterCode); }
Expand Down Expand Up @@ -189,7 +191,7 @@ public abstract partial class IfcBoundaryCondition : BaseClassIfc //ABSTRACT SUP
internal string mName;// : OPTIONAL IfcLabel;
public override string Name { get { return (mName == "$" ? "" : ParserIfc.Decode(mName)); } set { mName = (string.IsNullOrEmpty(value) ? "$" : ParserIfc.Encode(value.Replace("'", ""))); } }
protected IfcBoundaryCondition() : base() { }
protected IfcBoundaryCondition(IfcBoundaryCondition i) : base() { mName = i.mName; }
protected IfcBoundaryCondition(DatabaseIfc db, IfcBoundaryCondition b) : base(db,b) { mName = b.mName; }
protected IfcBoundaryCondition(DatabaseIfc m, string name) : base(m) { mName = (string.IsNullOrEmpty(name) ? "Boundary Condition" : name.Replace("'", "")); }
protected static void parseFields(IfcBoundaryCondition c, List<string> arrFields, ref int ipos) { c.mName = arrFields[ipos++].Replace("'", ""); }
protected override string BuildStringSTEP() { return base.BuildStringSTEP() + ",'" + mName + "'"; }
Expand All @@ -207,7 +209,7 @@ public partial class IfcBoundaryEdgeCondition : IfcBoundaryCondition
internal double mLinearStiffnessByLengthX, mLinearStiffnessByLengthY, mLinearStiffnessByLengthZ;// : OPTIONAL IfcModulusOfLinearSubgradeReactionMeasure;
internal double mRotationalStiffnessByLengthX, mRotationalStiffnessByLengthY, mRotationalStiffnessByLengthZ;// : OPTIONAL IfcModulusOfRotationalSubgradeReactionMeasure;
internal IfcBoundaryEdgeCondition() : base() { }
internal IfcBoundaryEdgeCondition(IfcBoundaryEdgeCondition i) : base(i) { mLinearStiffnessByLengthX = i.mLinearStiffnessByLengthX; mLinearStiffnessByLengthY = i.mLinearStiffnessByLengthY; mLinearStiffnessByLengthZ = i.mLinearStiffnessByLengthZ; mRotationalStiffnessByLengthX = i.mRotationalStiffnessByLengthX; mRotationalStiffnessByLengthY = i.mRotationalStiffnessByLengthY; mRotationalStiffnessByLengthZ = i.mRotationalStiffnessByLengthZ; }
internal IfcBoundaryEdgeCondition(DatabaseIfc db, IfcBoundaryEdgeCondition b) : base(db,b) { mLinearStiffnessByLengthX = b.mLinearStiffnessByLengthX; mLinearStiffnessByLengthY = b.mLinearStiffnessByLengthY; mLinearStiffnessByLengthZ = b.mLinearStiffnessByLengthZ; mRotationalStiffnessByLengthX = b.mRotationalStiffnessByLengthX; mRotationalStiffnessByLengthY = b.mRotationalStiffnessByLengthY; mRotationalStiffnessByLengthZ = b.mRotationalStiffnessByLengthZ; }
internal IfcBoundaryEdgeCondition(DatabaseIfc m, string name) : base(m, name) { }
internal static IfcBoundaryEdgeCondition Parse(string strDef) { IfcBoundaryEdgeCondition b = new IfcBoundaryEdgeCondition(); int ipos = 0; parseFields(b, ParserSTEP.SplitLineFields(strDef), ref ipos); return b; }
internal static void parseFields(IfcBoundaryEdgeCondition b, List<string> arrFields, ref int ipos)
Expand All @@ -226,7 +228,7 @@ public partial class IfcBoundaryFaceCondition : IfcBoundaryCondition
{
internal double mLinearStiffnessByAreaX, mLinearStiffnessByAreaY, mLinearStiffnessByAreaZ;// : OPTIONAL IfcModulusOfSubgradeReactionMeasure
internal IfcBoundaryFaceCondition() : base() { }
internal IfcBoundaryFaceCondition(IfcBoundaryFaceCondition i) : base(i) { mLinearStiffnessByAreaX = i.mLinearStiffnessByAreaX; mLinearStiffnessByAreaY = i.mLinearStiffnessByAreaY; mLinearStiffnessByAreaZ = i.mLinearStiffnessByAreaZ; }
internal IfcBoundaryFaceCondition(DatabaseIfc db, IfcBoundaryFaceCondition c) : base(db,c) { mLinearStiffnessByAreaX = c.mLinearStiffnessByAreaX; mLinearStiffnessByAreaY = c.mLinearStiffnessByAreaY; mLinearStiffnessByAreaZ = c.mLinearStiffnessByAreaZ; }
internal IfcBoundaryFaceCondition(DatabaseIfc m, string name) : base(m, name) { }
internal static IfcBoundaryFaceCondition Parse(string strDef) { IfcBoundaryFaceCondition b = new IfcBoundaryFaceCondition(); int ipos = 0; parseFields(b, ParserSTEP.SplitLineFields(strDef), ref ipos); return b; }
internal static void parseFields(IfcBoundaryFaceCondition b, List<string> arrFields, ref int ipos) { IfcBoundaryCondition.parseFields(b, arrFields, ref ipos); b.mLinearStiffnessByAreaX = ParserSTEP.ParseDouble(arrFields[ipos++]); b.mLinearStiffnessByAreaY = ParserSTEP.ParseDouble(arrFields[ipos++]); b.mLinearStiffnessByAreaZ = ParserSTEP.ParseDouble(arrFields[ipos++]); }
Expand All @@ -245,7 +247,7 @@ public partial class IfcBoundaryNodeCondition : IfcBoundaryCondition
public IfcRotationalStiffnessSelect RotationalStiffnessZ { get { return mRotationalStiffnessZ; } set { mRotationalStiffnessZ = value; } }

internal IfcBoundaryNodeCondition() : base() { }
internal IfcBoundaryNodeCondition(IfcBoundaryNodeCondition i) : base(i) { mTranslationalStiffnessX = i.mTranslationalStiffnessX; mTranslationalStiffnessY = i.mTranslationalStiffnessY; mTranslationalStiffnessZ = i.mTranslationalStiffnessZ; mRotationalStiffnessX = i.mRotationalStiffnessX; mRotationalStiffnessY = i.mRotationalStiffnessY; mRotationalStiffnessZ = i.mRotationalStiffnessZ; }
internal IfcBoundaryNodeCondition(DatabaseIfc db, IfcBoundaryNodeCondition b) : base(db,b) { mTranslationalStiffnessX = b.mTranslationalStiffnessX; mTranslationalStiffnessY = b.mTranslationalStiffnessY; mTranslationalStiffnessZ = b.mTranslationalStiffnessZ; mRotationalStiffnessX = b.mRotationalStiffnessX; mRotationalStiffnessY = b.mRotationalStiffnessY; mRotationalStiffnessZ = b.mRotationalStiffnessZ; }
public IfcBoundaryNodeCondition(DatabaseIfc m, string name, bool restrainX, bool restrainY, bool restrainZ, bool restrainXX, bool restrainYY, bool restrainZZ)
: this(m, name, new IfcTranslationalStiffnessSelect(restrainX), new IfcTranslationalStiffnessSelect(restrainY), new IfcTranslationalStiffnessSelect(restrainZ), new IfcRotationalStiffnessSelect(restrainXX), new IfcRotationalStiffnessSelect(restrainYY), new IfcRotationalStiffnessSelect(restrainZZ)) { }
public IfcBoundaryNodeCondition(DatabaseIfc m, string name, IfcTranslationalStiffnessSelect x, IfcTranslationalStiffnessSelect y, IfcTranslationalStiffnessSelect z, IfcRotationalStiffnessSelect xx, IfcRotationalStiffnessSelect yy, IfcRotationalStiffnessSelect zz) : base(m, name)
Expand Down Expand Up @@ -307,7 +309,7 @@ public partial class IfcBoundaryNodeConditionWarping : IfcBoundaryNodeCondition
{
internal IfcWarpingStiffnessSelect mWarpingStiffness;// : OPTIONAL IfcWarpingStiffnessSelect;
internal IfcBoundaryNodeConditionWarping() : base() { }
internal IfcBoundaryNodeConditionWarping(IfcBoundaryNodeConditionWarping i) : base(i) { mWarpingStiffness = i.mWarpingStiffness; }
internal IfcBoundaryNodeConditionWarping( DatabaseIfc db, IfcBoundaryNodeConditionWarping b) : base(db,b) { mWarpingStiffness = b.mWarpingStiffness; }
internal IfcBoundaryNodeConditionWarping(DatabaseIfc m, string name, IfcTranslationalStiffnessSelect x, IfcTranslationalStiffnessSelect y, IfcTranslationalStiffnessSelect z, IfcRotationalStiffnessSelect xx, IfcRotationalStiffnessSelect yy, IfcRotationalStiffnessSelect zz, IfcWarpingStiffnessSelect w)
: base(m, name, x, y, z, xx, yy, zz) { mWarpingStiffness = w; }
internal new static IfcBoundaryNodeConditionWarping Parse(string strDef,ReleaseVersion schema) { IfcBoundaryNodeConditionWarping b = new IfcBoundaryNodeConditionWarping(); int ipos = 0; parseFields(b, ParserSTEP.SplitLineFields(strDef), ref ipos,schema); return b; }
Expand Down Expand Up @@ -395,8 +397,8 @@ protected IfcBSplineCurve(DatabaseIfc db, IfcBSplineCurve c) : base(db, c)
mSelfIntersect = c.mSelfIntersect;
}
private IfcBSplineCurve(DatabaseIfc db, int degree, IfcBSplineCurveForm form) : base(db) { mDegree = degree; mCurveForm = form; }
protected IfcBSplineCurve(DatabaseIfc db, int degree, List<IfcCartesianPoint> controlPoints, IfcBSplineCurveForm form)
: this(db, degree, form) { mControlPointsList = controlPoints.ConvertAll(x => x.mIndex); }
protected IfcBSplineCurve(int degree, List<IfcCartesianPoint> controlPoints, IfcBSplineCurveForm form)
: this(controlPoints[0].mDatabase, degree, form) { mControlPointsList = controlPoints.ConvertAll(x => x.mIndex); }

protected static void parseFields(IfcBSplineCurve c, List<string> arrFields, ref int ipos)
{
Expand Down Expand Up @@ -434,6 +436,12 @@ internal IfcBSplineCurveWithKnots(DatabaseIfc db, IfcBSplineCurveWithKnots c) :
mKnots.AddRange(c.Knots);
mKnotSpec = c.mKnotSpec;
}
public IfcBSplineCurveWithKnots(int degree, List<IfcCartesianPoint> controlPoints, IfcBSplineCurveForm form, List<int> multiplicities, List<double> knots, IfcKnotType knotSpec) :
base(degree, controlPoints, form)
{
mMultiplicities.AddRange(multiplicities);
mKnots.AddRange(knots);
}
internal static void parseFields(IfcBSplineCurveWithKnots c, List<string> arrFields, ref int ipos)
{
IfcBSplineCurve.parseFields(c, arrFields, ref ipos);
Expand Down Expand Up @@ -496,8 +504,8 @@ private IfcBSplineSurface(DatabaseIfc db, int uDegree, int vDegree, IfcBSplineSu
mVDegree = vDegree;
mSurfaceForm = form;
}
protected IfcBSplineSurface(DatabaseIfc db, int uDegree, int vDegree, List<List<IfcCartesianPoint>> controlPoints, IfcBSplineSurfaceForm form) :
this(db, uDegree, vDegree, form)
protected IfcBSplineSurface(int uDegree, int vDegree, List<List<IfcCartesianPoint>> controlPoints, IfcBSplineSurfaceForm form) :
this(controlPoints[0][0].mDatabase, uDegree, vDegree, form)
{
foreach (List<IfcCartesianPoint> cps in controlPoints)
mControlPointsList.Add(cps.ConvertAll(x => x.mIndex));
Expand Down Expand Up @@ -562,8 +570,8 @@ internal IfcBSplineSurfaceWithKnots(DatabaseIfc db, IfcBSplineSurfaceWithKnots s
mVKnots = new List<double>(s.mVKnots.ToArray());
mKnotSpec = s.mKnotSpec;
}
internal IfcBSplineSurfaceWithKnots(DatabaseIfc m, int uDegree, int vDegree, IfcBSplineSurfaceForm form, List<List<IfcCartesianPoint>> controlPoints, IfcLogicalEnum uClosed, IfcLogicalEnum vClosed, IfcLogicalEnum selfIntersect, List<int> uMultiplicities, List<int> vMultiplicities, List<double> uKnots, List<double> vKnots, IfcKnotType type)
: base(m, uDegree, vDegree, controlPoints, form)
public IfcBSplineSurfaceWithKnots(int uDegree, int vDegree, List<List<IfcCartesianPoint>> controlPoints, IfcBSplineSurfaceForm form, IfcLogicalEnum uClosed, IfcLogicalEnum vClosed, IfcLogicalEnum selfIntersect, List<int> uMultiplicities, List<int> vMultiplicities, List<double> uKnots, List<double> vKnots, IfcKnotType type)
: base(uDegree, vDegree, controlPoints, form)
{
mUMultiplicities.AddRange(uMultiplicities);
mVMultiplicities.AddRange(vMultiplicities);
Expand Down Expand Up @@ -621,17 +629,18 @@ public partial class IfcBuilding : IfcSpatialStructureElement
public IfcPostalAddress BuildingAddress {get {return mDatabase[mBuildingAddress] as IfcPostalAddress;} set { mBuildingAddress = (value == null ? 0 : value.mIndex); }}

internal IfcBuilding() : base() { }
public IfcBuilding(DatabaseIfc db, string name) : base(new IfcLocalPlacement(db.Factory.PlaneXYPlacement) ) { Name = name; setDefaultAddress(); }
public IfcBuilding(IfcBuilding host, string name) : base(host, name) { setDefaultAddress(); }
public IfcBuilding(IfcSite host, string name) : base(host, name) { setDefaultAddress(); }
public IfcBuilding(IfcProduct host, IfcObjectPlacement p, IfcProductRepresentation r) : base(host, p, r) { setDefaultAddress(); }
internal IfcBuilding(DatabaseIfc db, IfcBuilding b, bool downStream) : base(db, b, downStream)
{
mElevationOfRefHeight = b.mElevationOfRefHeight;
mElevationOfTerrain = b.mElevationOfTerrain;
if (b.mBuildingAddress > 0)
BuildingAddress = db.Factory.Duplicate(b.BuildingAddress) as IfcPostalAddress;
}
public IfcBuilding(DatabaseIfc db, string name) : base(new IfcLocalPlacement(db.Factory.PlaneXYPlacement) ) { Name = name; setDefaultAddress(); }
public IfcBuilding(IfcBuilding host, string name) : base(host, name) { setDefaultAddress(); }
public IfcBuilding(IfcSite host, string name) : base(host, name) { setDefaultAddress(); }
public IfcBuilding(IfcProduct host, IfcObjectPlacement p, IfcProductRepresentation r) : base(host, p, r) { setDefaultAddress(); }


private void setDefaultAddress() //Implementers Agreement requires address
{
Expand Down
Loading

0 comments on commit dbfb1be

Please sign in to comment.