Ifc2x3 Эквивалент для IfcExtrudedAreaSolidTapered
Я хочу иметь возможность реализовать усеченный конус в IFC. Я знаю, что есть довольно быстрый способ реализовать это в IFC 2x4 с классом IfcExtrudedAreaSolidTapered.
Кто-нибудь может сказать мне, как это сделать с Ifc 2x3?
Вот что у меня есть:
IfcExtrudedAreaSolid CreateExtrudedAreaSolid(IfcStore model, IfcProfileDef
profile,IfcAxis2Placement3D placement, double extrude)
{
var extrusion = model.Instances.New<IfcExtrudedAreaSolid>();
extrusion.Depth = extrude;
extrusion.ExtrudedDirection = model.Instances.New<IfcDirection>(d =>
d.SetXYZ(0, 0, 1));
extrusion.Position = placement;
extrusion.SweptArea = profile;
return extrusion;
}
И вот где я создаю профиль:
private IfcCircleHollowProfileDef MakeCircleHollowProfileDef(IfcStore model,
IfcAxis2Placement3D placement, double r, double wallThickness)
{
var circleProfile = model.Instances.New<IfcCircleHollowProfileDef>();
circleProfile.Position = ConvertToAxis2D(placement, model);
circleProfile.Radius = r;
circleProfile.WallThickness = wallThickness;
return circleProfile;
}
У кого-нибудь есть идея, как сделать это правильно?
1 ответ
Я бы пошел на конус и разрезал его (через BooleanResult) с половиной пробела. Вы хотите, чтобы логическая операция была DIFFERENCE, конус в качестве первого операнда и полупространство вторым операндом.
У меня нет кода для реализации этого в xBim (я использую IfcPlusPlus), извините. Исходя из заданного вами кода, одной информацией, которую вам нужно рассчитать, будет полная высота конуса, чтобы обрезать его до желаемой высоты.