public StbModel SetByAngle(double colMaxAngle) { // TODO: リストが大量にあるの直す var columns = new List <StbColumn>(); var girders = new List <StbGirder>(); var braces = new List <StbBrace>(); var secBeams_S = new List <StbSecBeam_S>(); var secBeams_Rc = new List <StbSecBeam_RC>(); var secColumn_S = new List <StbSecColumn_S>(); var secColumn_Rc = new List <StbSecColumn_RC>(); var secBrace_S = new List <StbSecBrace_S>(); var secSteel = new K2SSecSteelItems(); foreach (ModelElement elem in _kModel.elems) { if (!(elem is ModelElementStraightLine)) { continue; } Karamba.Geometry.Point3 to = _kModel.nodes[elem.node_inds[0]].pos; Karamba.Geometry.Point3 from = _kModel.nodes[elem.node_inds[1]].pos; var elemLine = new Line(new Point3d(to.X, to.Y, to.Z), new Point3d(from.X, from.Y, from.Z)); double pAngle = Vector3d.VectorAngle(elemLine.Direction, Vector3d.ZAxis); double nAngle = Vector3d.VectorAngle(elemLine.Direction, -Vector3d.ZAxis); switch (elem) { case ModelBeam modelBeam: ModelBeamToStbColumnAndGirder(secBeams_Rc, secBeams_S, secColumn_Rc, secColumn_S, secSteel, colMaxAngle, columns, girders, pAngle, nAngle, modelBeam); break; case ModelTruss modelTruss: ModelTrussToStbBrace(secBrace_S, secSteel, braces, modelTruss); break; default: throw new ArgumentException("Karamba3D model parse error."); } } StbMembers members = BindMemberProps(columns, girders, braces); StbSections sections = BindSectionProps(secBeams_S, secBeams_Rc, secColumn_S, secColumn_Rc, secBrace_S, secSteel); return(new StbModel() { StbNodes = _kModel.nodes.ToStb(), StbMembers = members, StbSections = sections }); }
public static STBDotNet.Geometry.Point3 ToStb(this Karamba.Geometry.Point3 kpt) { return(new STBDotNet.Geometry.Point3(kpt.X, kpt.Y, kpt.Z) / 1000); }