Exemple #1
0
        static void SetTransform(Autodesk.Revit.DB.Instance element, XYZ newOrigin, XYZ newBasisX, XYZ newBasisY)
        {
            var current = element.GetTransform();
            var BasisZ  = newBasisX.CrossProduct(newBasisY);
            {
                if (!current.BasisZ.IsParallelTo(BasisZ))
                {
                    var    axisDirection = current.BasisZ.CrossProduct(BasisZ);
                    double angle         = current.BasisZ.AngleTo(BasisZ);

                    using (var axis = Line.CreateUnbound((current.Origin / Revit.ModelUnits), axisDirection))
                        ElementTransformUtils.RotateElement(element.Document, element.Id, axis, angle);

                    current = element.GetTransform();
                }

                if (!current.BasisX.IsAlmostEqualTo(newBasisX))
                {
                    double angle = current.BasisX.AngleOnPlaneTo(newBasisX, BasisZ);
                    using (var axis = Line.CreateUnbound((current.Origin / Revit.ModelUnits), BasisZ))
                        ElementTransformUtils.RotateElement(element.Document, element.Id, axis, angle);
                }

                {
                    var trans = (newOrigin / Revit.ModelUnits) - (current.Origin / Revit.ModelUnits);
                    if (!trans.IsZeroLength())
                    {
                        ElementTransformUtils.MoveElement(element.Document, element.Id, trans);
                    }
                }
            }
        }
Exemple #2
0
 public Instance(DB.Instance instance) : base(instance)
 {
 }