Exemplo n.º 1
0
        protected override WFData GenerateWFDataUnit(FrameRule clamp)
        {
            float  x_Size = clamp.size1 / clamp.num1;
            float  y_Size = clamp.size2 / clamp.num2;
            WFData data   = CalcuteUtility.TrussTypeDiamondSpaceGrid_Unit(x_Size, y_Size, clamp.height);

            return(data);
        }
Exemplo n.º 2
0
        protected override WFData GenerateWFData(FrameRule clamp)
        {
            float  x_Size   = clamp.size1 / clamp.num1;
            float  y_Size   = clamp.size2 / clamp.num2;
            var    startPos = -new Vector3(clamp.size1, clamp.height, clamp.size2 - y_Size) * 0.5f;
            WFData wfData   = new WFData();

            var bundNodes = new List <WFNode>();

            for (int i = 0; i < clamp.num1; i++)
            {
                for (int j = 0; j < clamp.num2; j++)
                {
                    WFData data     = CalcuteUtility.TrussTypeDiamondSpaceGrid_Unit(x_Size, y_Size, clamp.height);
                    var    position = startPos + i * x_Size * Vector3.right + j * y_Size * Vector3.forward;
                    data.AppendPosition(position);
                    wfData.InsertData(data);

                    if (i == 0)//左
                    {
                        var nodes = data.wfNodes.FindAll(x => IsPointSmilarity(x.position, position));
                        bundNodes.AddRange(nodes);
                    }
                    if (j == 0)
                    {//下
                        var downPos = position + x_Size * Vector3.right * 0.5f - y_Size * Vector3.forward * 0.5f;
                        var nodes   = data.wfNodes.FindAll(x => IsPointSmilarity(x.position, downPos));
                        bundNodes.AddRange(nodes);
                    }
                    if (i == clamp.num1 - 1)//右
                    {
                        var rightPos = position + x_Size * Vector3.right;
                        var nodes    = data.wfNodes.FindAll(x => IsPointSmilarity(x.position, rightPos));
                        bundNodes.AddRange(nodes);
                    }
                    if (j == clamp.num2 - 1)//上
                    {
                        var upPos = position + x_Size * Vector3.right * 0.5f + y_Size * Vector3.forward * 0.5f;
                        var nodes = data.wfNodes.FindAll(x => IsPointSmilarity(x.position, upPos));
                        bundNodes.AddRange(nodes);
                    }
                }
            }

            var bundData = CalcuteUtility.ConnectNeerBy(bundNodes, Mathf.Sqrt(Mathf.Pow(x_Size, 2) + Mathf.Pow(y_Size, 2)), BarPosType.upBar);

            wfData.InsertData(bundData);

            return(wfData);
        }