Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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();
            }
        }