/// <summary> /// Method to get the rotation matrices of a solid, based on its Centroid /// </summary> /// <param name="acSol">The solid to be rotated</param> private void GetRotationMatrices(Solid3d acSol) { var center = acSol.GetBoxCenter(); using (var brep = new Brep(acSol)) { var centroid = brep.GetMassProperties().Centroid.RoundToTolerance(); if (centroid != center) { center = brep.GetMassProperties().Centroid; } } //Find the 90 degree rotation matrices X90 = Matrix3d.Rotation(CalcUnit.ConvertToRadians(90), Vector3d.XAxis, center); Y90 = Matrix3d.Rotation(CalcUnit.ConvertToRadians(90), Vector3d.YAxis, center); Z90 = Matrix3d.Rotation(CalcUnit.ConvertToRadians(90), Vector3d.ZAxis, center); //Find the 180 degree rotation matrices X180 = Matrix3d.Rotation(CalcUnit.ConvertToRadians(180), Vector3d.XAxis, center); Y180 = Matrix3d.Rotation(CalcUnit.ConvertToRadians(180), Vector3d.YAxis, center); Z180 = Matrix3d.Rotation(CalcUnit.ConvertToRadians(180), Vector3d.ZAxis, center); //Find the 180 degree rotation matrices X270 = Matrix3d.Rotation(CalcUnit.ConvertToRadians(270), Vector3d.XAxis, center); Y270 = Matrix3d.Rotation(CalcUnit.ConvertToRadians(270), Vector3d.YAxis, center); Z270 = Matrix3d.Rotation(CalcUnit.ConvertToRadians(270), Vector3d.ZAxis, center); }
public void Cmd_DEBUGBOXES() { if (!LicensingAgent.Check()) { return; } var acCurDoc = Application.DocumentManager.MdiActiveDocument; var acCurDb = acCurDoc.Database; _ = acCurDoc.Editor; var boxCount = 500; var maxSize = 40; var minSize = 5; var minX = -500; var minY = -500; var minZ = -500; var maxX = 500; var maxY = 500; var maxZ = 500; var random = new Random(); using (var acTrans = acCurDb.TransactionManager.StartTransaction()) { for (var i = 0; i < boxCount; i++) { var acSol = new Solid3d(); var length = random.Next(minSize, maxSize); var width = random.Next(minSize, maxSize); var height = random.Next(minSize, maxSize); acSol.CreateBox(length, width, height); var insertPoint = new Point3d(random.Next(minX, maxX), random.Next(minY, maxY), random.Next(minZ, maxZ)); acCurDb.AppendEntity(acSol); acSol.Move(acSol.GetBoxCenter(), insertPoint); acSol.CleanBody(); } acTrans.Commit(); } }