Cómo rotar y reflejar mediante programación entidades de Revit
Si se ha creado la entidad de columna, ¿cómo seleccionar la entidad, reflejarla y rotarla?
CBimEntity_Pole poleEnt = (CBimEntity_Pole)bimEnt;
XYZ temInterPt = nuevo XYZ(Unit.mmToFeet(poleEnt.InterPt.X), Unit.mmToFeet(poleEnt.InterPt.Y), Unit.mmToFeet(poleEnt.InterPt.Z));
Columna FamilyInstance = m_ReviteDoc. Create.NewFamilyInstance(temInterPt, familySymbol, simLevelInfo.FloorLevel, StructuralType.Column);
if (null == columna)
continuar;
columna.Mirrored = poleEnt.Mirror; //Si reflejar
column.rotate(); //Si rotar
Cómo rotar y reflejar.
Respuesta:
Revit 2013, 14 y 15 varias operaciones sobre objetos están encapsuladas en la clase ElementTransformUtils.
Puede usar CanMirrorElement para determinar si los objetos pueden ser Si es así, utilice el método MirrorElement () o MirrorElement s ().
Utilice el método RotateElement() o RotateElement s() para rotar el objeto.
Para obtener información sobre los parámetros de funciones específicas, consulte el documento de ayuda RevitAPI.chm.
Ejemplo de código espejo: (extraído del documento de ayuda)
público void MirrorWall(Autodesk.Revit.DB.Document document, Wall wall)
{
Referencia de referencia = HostObjectUtils.GetSideFaces(wall, ShellLayerType.Exterior).First(); p >
Cara cara = wall.GetGeometryObjectFromReference(reference) as Face; // obtiene una de las caras laterales principales de la pared
UV bboxMin = face.GetBoundingBox().Min;
Plano plano = new Plane(face.ComputeNormal(bboxMin), face.Evaluate(bboxMin).Add(new XYZ(10, 10, 0)));
// crea un plano basado en esta cara lateral con un desplazamiento de 10 en las direcciones X e Y
ElementTransformUtils.MirrorElement(document, wall.Id, plane);
}
Rotación Ejemplo de código (extraído del documento de ayuda)
public void RotateColumn(documento Autodesk.Revit.DB.Document, elemento Autodesk.Revit.DB.Element)
{
XYZ punto1 = new XYZ(10, 20, 0);
una línea enlazada.
Eje de línea = Line.CreateBound(punto1, punto2);
ElementTransformUtils.RotateElement(documento, elemento.Id, eje, Math.PI/3.0);