BIM VILLAGE

Version 2.5.1

SampleCreateIfcCompositeCurve

Overview

This programming manual in C# offers a practical demonstration of how to create an instance of the IfcCompositeCurve class within a model.

Sample code

For example:

Name Value
Points 0.000000,0.000000,0.000000, 5000.000000,0.000000,0.000000, 5000.000000,5000.000000,0.000000, 0.000000,5000.000000,0.000000, 0.000000,0.000000,0.000000
SelfIntersect LOGICAL_FALSE
var app = new Beaver.BcadApplication();
var doc = app.ActiveDocument;
if (doc == null)
    doc = app.Documents.Add();
var stp = doc.STEPDocument;
var IfcCompositeCurve = stp.Instnaces.CreateInstance("IfcCompositeCurve"); {
	var segments = new List<STEPInstance>(); {
		for (int i = 0; i < Points.Count-1;i++) {
			var IfcCompositeCurveSegment = stp.Instnaces.CreateInstance("IfcCompositeCurveSegment"); {
				var IfcPolyline = stp.Instnaces.CreateInstance("IfcPolyline"); {
					var startPt = Points[i];
					var endPt = Points[i+1];
					var start = AddInstance("IfcCartesianPoint"); { 
						double []values={startPt.X, startPt.Y, startPt.Z};
						start.Attributes.AttributeAsAggregate("coordinates").values = values;
					}
					var end = AddInstance("IfcCartesianPoint"); { 
						double []values={endPt.X, endPt.Y, endPt.Z};
						end.Attributes.AttributeAsAggregate("coordinates").values = values;
					}
					STEPInstance []pts={start, end};
					IfcPolyline.Attributes.AttributeAsAggregate("Points").values = pts;
				}
				IfcCompositeCurveSegment.Attributes.AttributeAsBool("SameSense").Value = true;
				IfcCompositeCurveSegment.Attributes.AttributeAsInst("ParentCurve").Value = IfcPolyline;
				IfcCompositeCurveSegment.Attributes.AttributeAsEnum("TRANSITION").SetValue("continuous");
			}
			segments.Add(IfcCompositeCurveSegment);
		}
	}
	IfcCompositeCurve.Attributes.AttributeAsLogical("SelfIntersect").Value = LOGICAL_FALSE;
	IfcCompositeCurve.Attributes.AttributeAsAggregate("Segments").values = segments.ToArray();
}

© 2019 - 2022 BIM VILLAGE.