Ifc2x3 Эквивалент для IfcExtrudedAreaSolidTapered - PullRequest
0 голосов
/ 24 апреля 2018

Я хочу иметь возможность реализовать усеченный конус в 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 Ответ

0 голосов
/ 17 мая 2018

Я бы выбрал конус и вырезал его (через BooleanResult ) с полупространством .Вы хотите, чтобы логическая операция была DIFFERENCE, конус в качестве первого операнда и полупространство вторым операндом.

У меня нет кода для реализации этого в xBim (я использую IfcPlusPlus), извините.Исходя из заданного вами кода, одной информацией, которую вам нужно рассчитать, будет полная высота конуса, чтобы обрезать его до желаемой высоты.

...