コード例 #1
0
        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
            });
        }
コード例 #2
0
 public static STBDotNet.Geometry.Point3 ToStb(this Karamba.Geometry.Point3 kpt)
 {
     return(new STBDotNet.Geometry.Point3(kpt.X, kpt.Y, kpt.Z) / 1000);
 }