Red de conocimiento informático - Conocimiento informático - Cómo rotar y reflejar mediante programación entidades de Revit

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();

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);