Beispiel #1
0
        public override Value Evaluate(FSharpList <Value> args)
        {
            var faceRef = ((Value.Container)args[0]).Item as Reference;
            var uv      = (UV)((Value.Container)args[1]).Item;

            Transform t = Transform.Identity;

            Autodesk.Revit.DB.Face f = (faceRef == null) ?
                                       ((Autodesk.Revit.DB.Face)((Value.Container)args[0]).Item) :
                                       (dynRevitSettings.Doc.Document.GetElement(faceRef.ElementId).GetGeometryObjectFromReference(faceRef) as Autodesk.Revit.DB.Face);

            if (f != null)
            {
                t        = f.ComputeDerivatives(uv);
                t.BasisX = t.BasisX.Normalize();
                t.BasisZ = t.BasisZ.Normalize();
                t.BasisY = t.BasisX.CrossProduct(t.BasisZ);
            }

            return(Value.NewContainer(t));
        }