Exemplo n.º 1
0
    public void Deserialize(NetworkManager networkManager, ElementDataBase elementData, UIBehaviour element)
    {
        ButtonData buttonData    = elementData as ButtonData;
        Button     buttonElement = element as Button;

        if (buttonElement)
        {
            ColorBlock colorBlock = buttonElement.colors;
            colorBlock.normalColor = buttonData.normalColor.Deserialize();
            buttonElement.colors   = colorBlock;

            if (networkManager)
            {
                buttonElement.onClick.RemoveAllListeners();
                buttonElement.onClick.AddListener(() =>
                {
                    InputMessage inputMessage = new InputMessage(InputMessageType.Button, buttonData.objectID);
                    networkManager.SendMessageToServer(inputMessage.Serialize());
                    if (AppSettings.Instance.Vibrate)
                    {
                        Handheld.Vibrate();
                    }
                });
            }
        }
    }
Exemplo n.º 2
0
    private void Serialize(ObjectData objectData, GameObject go, bool isRoot)
    {
        UIBehaviour[] layoutElements = go.GetComponents <UIBehaviour>();
        objectData.Name = go.name;
        objectData.ID   = go.GetInstanceID();

        foreach (UIBehaviour layoutElement in layoutElements)
        {
            ILayoutSerializer layoutSerializer = UIMirrorManager.Instance.GetLayoutSerializer(layoutElement.GetType());
            if (layoutSerializer != null)
            {
                ElementDataBase elementData = layoutSerializer.Serialize(layoutElement as UIBehaviour);
                objectData.elementsData.Add(elementData);
            }
        }

        objectData.transformData = UIMirrorManager.Instance.TransformSerializer.Serialize(go.GetComponent <RectTransform>());

        foreach (Transform child in go.transform)
        {
            ObjectData childData = new ObjectData();
            Serialize(childData, child.gameObject, false);
            objectData.childrenData.Add(childData);
        }
    }
Exemplo n.º 3
0
        /// <summary>
        /// Creates new instance of user class wich represents a structure element.
        /// </summary>
        /// <param name="elementDataBase">Instance of base class for the element.</param>
        /// <returns>New instance of user implementation of element class derived from cref="ElementDataBase".</returns>
        public ElementDataBase CreateElementData(ElementDataBase elementDataBase)
        {
            switch (elementDataBase.Material)
            {
            case StructuralAssetClass.Concrete:
                switch (elementDataBase.Category)
                {
                default:
                    break;

                case Autodesk.Revit.DB.BuiltInCategory.OST_ColumnAnalytical:
                    return(new ColumnElement(elementDataBase));

                case Autodesk.Revit.DB.BuiltInCategory.OST_BeamAnalytical:
                    return(new BeamElement(elementDataBase));

                /// <structural_toolkit_2015>
                case Autodesk.Revit.DB.BuiltInCategory.OST_FloorAnalytical:
                    return(new FloorElement(elementDataBase));

                case Autodesk.Revit.DB.BuiltInCategory.OST_FoundationSlabAnalytical:
                    return(new FloorElement(elementDataBase));

                case Autodesk.Revit.DB.BuiltInCategory.OST_WallAnalytical:
                    return(new WallElement(elementDataBase));
                    /// </structural_toolkit_2015>
                }
                break;

            case StructuralAssetClass.Metal:
                break;
            }

            return(elementDataBase);
        }
Exemplo n.º 4
0
    public void Deserialize(NetworkManager networkManager, ElementDataBase elementData, UIBehaviour element)
    {
        TextMeshProData textData    = elementData as TextMeshProData;
        TextMeshProUGUI textElement = element as TextMeshProUGUI;

        if (textElement)
        {
            textElement.text      = textData.text;
            textElement.fontSize  = textData.fontSize;
            textElement.color     = textData.colorData.Deserialize();
            textElement.alignment = textData.alignment;
        }
    }
Exemplo n.º 5
0
        /// <summary>
        /// Gives possibility to write data to Revit data base.
        /// </summary>
        /// <param name="listElementData">List of user element objects.</param>
        /// <param name="parameters">User common parameters.</param>
        /// <param name="data">Acces to cref="ServiceData".</param>
        public void SaveToRevitDB(List <ObjectDataBase> listElementData, CommonParametersBase parameters, Autodesk.Revit.DB.CodeChecking.ServiceData data)
        {
            Autodesk.Revit.DB.ResultsBuilder.Storage.ResultsPackageBuilder builder = Autodesk.Revit.DB.CodeChecking.Storage.StorageService.GetStorageService().GetStorageDocument(data.Document).CalculationParamsManager.CalculationParams.GetOutputResultPackageBuilder(Server.Server.ID);
            ForceResultsWriter resultsWriter = new ForceResultsWriter(data.Document, builder, Autodesk.Revit.DB.ResultsBuilder.UnitsSystem.Metric);

            foreach (ObjectDataBase objectDataBase in listElementData)
            {
                ElementDataBase elementDataBase = objectDataBase as ElementDataBase;

                switch (elementDataBase.Category)
                {
                default:
                    break;

                case Autodesk.Revit.DB.BuiltInCategory.OST_ColumnAnalytical:
                case Autodesk.Revit.DB.BuiltInCategory.OST_BeamAnalytical:
                {
                    //TBD - RB doesn't support relative coordinates as input
                    //Begin mod
                    //IList<double> vx = (from sec in elementDataBase.ListSectionData select (sec as LinearSection).GetCalcResultsInPt()[ResultTypeLinear.X_Rel ]).ToList();
                    bool isListForces = true;
                    foreach (LinearSection sec in elementDataBase.ListSectionData)
                    {
                        if (sec.ListInternalForces == null || sec.ListInternalForces.Count == 0)
                        {
                            isListForces = false;
                            break;
                        }
                    }
                    if (isListForces)
                    {
                        IList <double> xCoordinates = (from sec in elementDataBase.ListSectionData select(sec as LinearSection).GetCalcResultsInPoint()[ResultTypeLinear.X]).ToList();
                        //End Mod
                        resultsWriter.SetMeasurementForElement(elementDataBase.ElementId, AxisDirection.X, xCoordinates);

                        ResultTypeLinear[] resultTypesLinear = new ResultTypeLinear[] { ResultTypeLinear.Abottom, ResultTypeLinear.Atop, ResultTypeLinear.Aleft, ResultTypeLinear.Aright };
                        foreach (ResultTypeLinear forceType in resultTypesLinear)
                        {
                            ICollection <double> valuesInPoints = (from LinearSection section in elementDataBase.ListSectionData select section.GetCalcResultsInPoint()[forceType]).ToList();
                            resultsWriter.AddResultsForElement(elementDataBase.ElementId, forceType.GetResultType(), valuesInPoints);
                        }
                    }
                }
                break;
                }
            }

            resultsWriter.StoreResultsInResultsBuilder("RCCalculationsResults");
            //builder.Finish();
        }
Exemplo n.º 6
0
    public void Deserialize(NetworkManager networkManager, ElementDataBase elementData, UIBehaviour element)
    {
        TextData textData    = elementData as TextData;
        Text     textElement = element as Text;

        if (textElement)
        {
            textElement.text      = textData.text;
            textElement.fontSize  = textData.fontSize;
            textElement.font      = FontCache.GetFont(textData.fontName);
            textElement.color     = textData.colorData.Deserialize();
            textElement.alignment = textData.alignment;
        }
    }
Exemplo n.º 7
0
    public void Deserialize(NetworkManager networkManager, ElementDataBase elementData, UIBehaviour element)
    {
        ImageData imageData    = elementData as ImageData;
        Image     imageElement = element as Image;

        if (imageElement)
        {
            imageElement.color = imageData.colorData.Deserialize();
            if (imageElement.sprite == null)
            {
                imageElement.sprite = imageData.spriteData.Deserialize();
            }
            imageElement.type = imageData.type;
        }
    }
Exemplo n.º 8
0
    public void Deserialize(NetworkManager networkManager, ElementDataBase elementData, UIBehaviour element)
    {
        RawImageData imageData    = elementData as RawImageData;
        RawImage     imageElement = element as RawImage;

        if (imageElement)
        {
            imageElement.color = imageData.colorData.Deserialize();
            if (imageElement.texture == null)
            {
                imageElement.texture = imageData.textureData.Deserialize();
            }
            imageElement.uvRect = imageData.uvRect.Deserialize();
        }
    }
Exemplo n.º 9
0
        /// <summary>
        /// Filters list of elements due to e.g. a result status for calculation purposes.
        /// </summary>
        /// <param name="listElementData">List of user element objects.</param>
        /// <returns>Filtered list of user element objects.</returns>
        public List <ObjectDataBase> FilterElementForCalculation(List <ObjectDataBase> listElementData)
        {
            List <ObjectDataBase> listElementFiltered = new List <ObjectDataBase>();

            foreach (ObjectDataBase obj in listElementData)
            {
                ElementDataBase elem = obj as ElementDataBase;
                if (elem != null)
                {
                    if (!elem.Status.IsError())
                    {
                        listElementFiltered.Add(elem);
                    }
                }
            }

            return(listElementFiltered);
        }
Exemplo n.º 10
0
    public void Deserialize(NetworkManager networkManager, ElementDataBase elementData, UIBehaviour element)
    {
        SliderData sliderData    = elementData as SliderData;
        Slider     sliderElement = element as Slider;

        if (sliderElement)
        {
            if (ignoreServerUpdates)
            {
                if (sentValue == sliderData.value)
                {
                    ignoreServerUpdates = false;
                }
            }
            else
            {
                ignoreCallback      = true;
                sliderElement.value = sliderData.value;
                ignoreCallback      = false;
                ObjectCache.Bind <Graphic>(x => sliderElement.targetGraphic    = x, sliderData.targetGraphic);
                ObjectCache.Bind <RectTransform>(x => sliderElement.fillRect   = x, sliderData.fillRect);
                ObjectCache.Bind <RectTransform>(x => sliderElement.handleRect = x, sliderData.handleRect);
            }

            IgnoreTransformUpdates(sliderElement.fillRect);
            IgnoreTransformUpdates(sliderElement.handleRect);

            if (networkManager)
            {
                sliderElement.onValueChanged.AddListener((value) =>
                {
                    if (ignoreCallback)
                    {
                        return;
                    }
                    sentValue = value;
                    InputMessage inputMessage = new InputMessage(InputMessageType.Slider, sliderData.ID, value);
                    networkManager.SendMessageToServer(inputMessage.Serialize());
                    ignoreServerUpdates = true;
                });
            }
        }
    }
Exemplo n.º 11
0
        /// <summary>
        /// Creates new instance of user class wich represents a structure element.
        /// </summary>
        /// <param name="elementDataBase">Instance of base class for the element.</param>
        /// <returns>New instance of user implementation of element class derived from cref="ElementDataBase".</returns>
        public ElementDataBase CreateElementData(ElementDataBase elementDataBase)
        {
            switch (elementDataBase.Material)
            {
            case StructuralAssetClass.Concrete:
                switch (elementDataBase.Category)
                {
                default:
                    break;

                case Autodesk.Revit.DB.BuiltInCategory.OST_ColumnAnalytical:
                    return(new ColumnElement(elementDataBase));

                case Autodesk.Revit.DB.BuiltInCategory.OST_BeamAnalytical:
                    return(new BeamElement(elementDataBase));
                }
                break;

            case StructuralAssetClass.Metal:
                break;
            }

            return(elementDataBase);
        }
Exemplo n.º 12
0
 public WallElement(ElementDataBase elementDataBase) : base(elementDataBase)
 {
 }
Exemplo n.º 13
0
 /// <summary>
 /// Initializes a new instance of user's column object.
 /// </summary>
 /// <param name="elementDataBase">Instance of base element object with predefined parameters to copy.</param>
 public ColumnElement(ElementDataBase elementDataBase)
     : base(elementDataBase)
 {
 }
Exemplo n.º 14
0
        /// <summary>
        /// Runs calculation\operations for cref="BeamElement".
        /// </summary>
        /// <param name="obj">cref="BeamElement".</param>
        /// <returns>Result of calculation.</returns>
        public bool Run(ObjectDataBase obj)
        {
            ElementDataBase elementData = obj as ElementDataBase;

            if (obj != null)
            {
                BeamElement objBeam = obj as BeamElement;
                if (objBeam != null)
                {
                    CodeCheckingConcreteExample.Main.ResultBeam res = elementData.Result as CodeCheckingConcreteExample.Main.ResultBeam;
                    if (res != null)
                    {
                        double young     = objBeam.Info.Material.Characteristics.YoungModulus.X;
                        double maxCoef   = 0;
                        double stifCoef  = 0.0;
                        double avrCoef   = 0.0;
                        int    sectionNo = 0;
                        foreach (SectionDataBase sd in elementData.ListSectionData)
                        {
                            BeamSection sec = sd as BeamSection;

                            if (sec != null)
                            {
                                if (sec.MinStiffness > Double.Epsilon)
                                {
                                    CalcPointLinear calcPoint = sec.CalcPoint as CalcPointLinear;
                                    double          Iy        = sec.Info.SectionsParams.AtThePoint(calcPoint.CoordRelative).Characteristics.Iy;
                                    stifCoef = (Iy * young) / sec.MinStiffness;
                                }
                                else
                                {
                                    stifCoef = 0;
                                    break;
                                }
                                ++sectionNo;
                                maxCoef  = Math.Max(maxCoef, stifCoef);
                                avrCoef += stifCoef;
                            }
                        }
                        double finStiffnes = 0;
                        if (stifCoef > Double.Epsilon)
                        {
                            avrCoef    /= sectionNo;
                            finStiffnes = 0.5 * (maxCoef + avrCoef);
                        }
                        else
                        {
                            objBeam.AddFormatedWarning(new ResultStatusMessage("Calculation of deflections was not performed."));
                        }
                        foreach (SectionDataBase sd in elementData.ListSectionData)
                        {
                            BeamSection sec = sd as BeamSection;
                            if (sec != null)
                            {
                                sec.StiffnesCoeff = finStiffnes;
                            }
                        }
                    }
                }
            }
            return(true);
        }
Exemplo n.º 15
0
        /// <summary>
        /// Runs calculation\operations for cref="BeamElement" and cref="ColumnElement".
        /// </summary>
        /// <param name="obj">cref="BeamElement" object or cref="ColumnElement" object.</param>
        /// <returns>Result of calculation.</returns>
        public bool Run(ObjectDataBase obj)
        {
            ElementDataBase elementData = obj as ElementDataBase;

            if (obj != null)
            {
                switch (elementData.Category)
                {
                default:
                    break;

                case Autodesk.Revit.DB.BuiltInCategory.OST_ColumnAnalytical:
                case Autodesk.Revit.DB.BuiltInCategory.OST_BeamAnalytical:
                    if (elementData.Result is ResultLinearElement)
                    {
                        CodeCheckingConcreteExample.Main.ResultLinearElement res = elementData.Result as ResultLinearElement;
                        if (res != null)
                        {
                            elementData.ListSectionData.ForEach(s => res.ValuesInPointsData.AddRange((s as LinearSection).GetCalcResultsInPoint().DataRaw));
                        }

                        UnitType        xUnitType = ResultTypeLinear.X.GetUnitType();
                        DisplayUnitType xInternalDisplayUnitType = UnitsConverter.GetInternalUnit(xUnitType);

                        // add info
                        IEnumerable <IGrouping <String, Tuple <String, Double> > > infoInSec = elementData.ListSectionData.
                                                                                               SelectMany(lsd => (lsd as LinearSection).DesignInfo.Select(dw => new Tuple <String, Double>(dw, (lsd.CalcPoint as CalcPointLinear).CoordAbsolute))).
                                                                                               GroupBy(s => s.Item1);

                        // add warnings
                        IEnumerable <IGrouping <String, Tuple <String, Double> > > warningsInSec = elementData.ListSectionData.
                                                                                                   SelectMany(lsd => (lsd as LinearSection).DesignWarning.Select(dw => new Tuple <String, Double>(dw, (lsd.CalcPoint as CalcPointLinear).CoordAbsolute))).
                                                                                                   GroupBy(s => s.Item1);

                        // add errors
                        IEnumerable <IGrouping <String, Tuple <String, Double> > > errosInSec = elementData.ListSectionData.
                                                                                                SelectMany(lsd => (lsd as LinearSection).DesignError.Select(dw => new Tuple <String, Double>(dw, (lsd.CalcPoint as CalcPointLinear).CoordAbsolute))).
                                                                                                GroupBy(s => s.Item1);

                        if (errosInSec.Count() > 0)
                        {
                            getResultStatusMessage(errosInSec, xInternalDisplayUnitType).ForEach(s => elementData.AddFormatedError(s));
                            elementData.Status.Status = Status.Failed;
                        }
                        else
                        {
                            if (warningsInSec.Count() > 0)
                            {
                                getResultStatusMessage(warningsInSec, xInternalDisplayUnitType).ForEach(s => elementData.AddFormatedWarning(s));
                                if (Status.Failed != elementData.Status.Status)
                                {
                                    elementData.Status.Status = Status.Warning;
                                }
                            }
                            if (infoInSec.Count() > 0)
                            {
                                getResultStatusMessage(infoInSec, xInternalDisplayUnitType).ForEach(s => elementData.AddFormatedInfo(s));
                            }
                        }
                        if (Autodesk.Revit.DB.CodeChecking.Storage.Status.Undefined == elementData.Status.Status)
                        {
                            elementData.Status.Status = Autodesk.Revit.DB.CodeChecking.Storage.Status.Succeed;
                        }
                    }
                    break;
                }
            }

            return(true);
        }
Exemplo n.º 16
0
 public FloorElement(ElementDataBase elementDataBase) : base(elementDataBase)
 {
 }
Exemplo n.º 17
0
 /// <summary>
 /// Initializes a new instance of user's beam object.
 /// </summary>
 /// <param name="elementDataBase">Instance of base element object with predefined parameters to copy.</param>
 public BeamElement(ElementDataBase elementDataBase)
     : base(elementDataBase)
 {
 }