Как перенести в автокаде в начало координат
Перейти к содержимому

Как перенести в автокаде в начало координат

  • автор:

Установка значка ПСК в начало координат

    Щелкните вкладку «Визуализация» > панель «Координаты» > Отображать знак ПСК в начале координат . найти

Прим.: Если вкладка «Визуализация» не отображается, щелкните правой кнопкой мыши на вкладках ленты, а затем выберите Показать вкладки > Визуализация .

Прим.: Если положение начала ПСК не отображается на видовом экране, то вместо него в левом нижнем углу видового экрана показывается значок ПСК.

Понятия, связанные с данным
  • Управление отображением знака пользовательской системы координат
  • Значок пользовательской системы координат (ПСК)
Задачи, связанные с данной
  • Включение и отключение значка ПСК
  • Настройка параметров знака ПСК

Переместить объекты в начало координат

Здравствуйте! Пытаюсь переместить все объекты чертежа в начало координат, иногда получается, но в большинстве случаев безуспешно. Подскажите, что здесь не так! Мне важно рассмотреть случаи, когда чертеж расположен в любом месте плосости координат, не только в положительной полуоси.

[CommandMethod("Move")] static public void MoveObjects() < //ObjectId newId = ObjectId.Null; DocumentCollection docCol = MgdAcApplication.DocumentManager; Document doc = MgdAcApplication.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; double X0 = 0, YO = 0; docCol.MdiActiveDocument = doc; using (db) < Transaction tr = db.TransactionManager.StartTransaction(); using (tr) < // Open the blocktable, get the modelspace BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead); // Iterate through it, dumping objects foreach (ObjectId objId in btr) < Entity ent = (Entity)tr.GetObject(objId, OpenMode.ForWrite); if (db.Extmin.X < 0) X0 = db.Extmin.X; if (db.Extmin.X >0) X0 = - db.Extmin.X; if (db.Extmin.Y < 0) YO = db.Extmin.Y; if (db.Extmin.Y >0) YO = - db.Extmin.Y; ent.TransformBy(Matrix3d.Displacement(new Vector3d(X0, YO, 0))); > tr.Commit(); > > >

#2 Ответ от Александр Ривилис 5 марта 2013г. 10:42:35

Re: Переместить объекты в начало координат
ent.TransformBy(Matrix3d.Displacement(new Vector3d(-0.5*(db.Extmin+db.Extmax))));

#3 Ответ от frous 5 марта 2013г. 11:18:03

Re: Переместить объекты в начало координат

К сожалению не работает..

#4 Ответ от Александр Ривилис 5 марта 2013г. 12:33:06

Re: Переместить объекты в начало координат

Ну в принципе работать и не должно. Объясни что именно в деталях ты пытаешься сделать и как ты рассчитываешь это сделать.

#5 Ответ от fixo 5 марта 2013г. 22:02:11

Re: Переместить объекты в начало координат

Мне важно рассмотреть случаи, когда чертеж расположен в любом месте плосости координат, не только в положительной полуоси.

Попробуй такой вариант,
поверял только в 2010-м

[System.Security.SuppressUnmanagedCodeSecurity] [DllImport("acad.exe", EntryPoint = "acedCmd", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] extern static private int acedCmd(IntPtr resbuf); [CommandMethod("moveToOrig, mto", CommandFlags.UsePickSet | CommandFlags.Redraw)] static public void testMoveToOrigin() < Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; Database db = doc.Database; ResultBuffer rb = new ResultBuffer(); try < rb.Add(new TypedValue(5005, "_Zoom")); rb.Add(new TypedValue(5005, "_Extents")); acedCmd(rb.UnmanagedObject); Matrix3d ucs = ed.CurrentUserCoordinateSystem; CoordinateSystem3d ccos = ucs.CoordinateSystem3d; Point3d orig = ccos.Origin.TransformBy(Matrix3d.Identity); // select all objects SelectionSet sset = ed.SelectAll().Value; if (sset == null) return; Listpts = new List(); List ents = new List(); Matrix3d mmx = new Matrix3d(); using (Transaction tr = doc.TransactionManager.StartTransaction()) < // iterate through selected objects foreach (ObjectId id in sset.GetObjectIds()) < Entity ent = (Entity)tr.GetObject(id, OpenMode.ForRead, false); Extents3d ext = ent.GeometricExtents; if (ext != null) < Point3d minpt = ext.MinPoint.TransformBy(Matrix3d.Identity); // collect entities to List for the future work ents.Add(ent); pts.Add(minpt); >> // Get most lower left point of screen Point3d xpt = pts.OrderBy(p => p.X).First();// calculate minimal X value Point3d ypt = pts.OrderBy(p => p.Y).First();// calculate minimal Y value Point3d mp = new Point3d(xpt.X, ypt.Y, orig.Z).TransformBy(Matrix3d.Identity); mmx = Matrix3d.Displacement(orig-mp ); // iterate through gathrered entities again foreach (Entity e in ents) < e.UpgradeOpen(); // apply transformation matrix e.TransformBy(mmx); >tr.Commit(); > > catch (Autodesk.AutoCAD.Runtime.Exception ex) < ed.WriteMessage("\n" + ex.Message + "\n" + ex.StackTrace); >finally < rb = new ResultBuffer(); rb.Add(new TypedValue(5005, "_Zoom")); rb.Add(new TypedValue(5005, "_Extents")); acedCmd(rb.UnmanagedObject); >>

Как задать координаты в Автокаде, координаты в Автокад

Задание координат в Автокаде является необходимым условием для обеспечения точности построений. Наши обзоры Автокада для «чайников» помогут вам разобраться детальнее.

Как задавать координаты в автокаде? Какие бывают координаты?

В AutoCAD используется две системы координат – декартовая и полярная. Координаты в Автокаде бывают относительные и абсолютные.

В декартовой системе отсчета точки задаются двумя координатами X и Y, которые следует вводить через запятую. Форма записи декартовых координат: (100, 50).

Что касается абсолютных и относительных координат в Автокаде (Аutocad), то в первом случае отсчет осуществляется от начала координат, точки (0,0). Если же они относительные, то от последней поставленной точки. На относительность указывает знак @ в командной строке.

Рассмотрим это на примере. Выберем команду отрезок и введем координаты в Автокаде, как показано на рис.:

Выберите команду отрезок и введите координаты в AutoCAD

Результат будет выглядеть следующим образом:

Отрезок построен в декартовой системе координат

Как видно, у первой точки отрезка координаты заданы абсолютные (х = 10, y = 20). Т.е. отсчет ведется от начала координат. Координаты второй точки заданы по отношению к первой. А значит, начало отсчета как бы перемещается в точку (10,20), значения откладываются уже от нее. На относительность указывает знак @.

Когда речь идет о полярных координатах, то задаются два параметра: длина отрезка L и угол А между положительным направление оси X и этим отрезком. Форма записи для командной строки L.

Построение по координатам в Автокаде и ввод координат в Автокад

Ввод координат в Автокаде осуществляется непосредственно в командной строке. Также можно использовать динамический ввод. Результат будет один и тот же.

Динамический ввод является аналогом командной строки. Подсказки возле курсора отображают динамически обновляемую информацию. Когда выбрана какая-либо команда, то можно вводить координаты или задавать параметры.

Динамический ввод координат в Автокаде

Рассмотрим пример. Допустим, необходимо построить отрезок длиной 100 мм под углом 300. Используем для этого динамический ввод (F12). Следует отметить, что в AutoCAD отсчет углов осуществляется против часовой стрелки.

Отсчет углов в полярной системе координат в Автокаде

Последовательность действий при построении будет следующая:

  1. Указать длину отрезка (в нашем случае 100).
  2. Нажать Tab.
  3. Ввести значение угла 330. Нажать Enter.

Если данное построение выполнять через командную строку, то форма записи будет выглядеть следующим образом: 100

Что касается декартовых координат и их ввода через динамический ввод, то форма записи остается прежней (х,y). Однако по умолчанию первая точка будет абсолютной, а последующие – относительными. Никакого дополнительного знака ставить не требуется.

По умолчанию первая точка будет абсолютной, а последующие – относительными в Автокаде

Если возникает необходимость вводить именно абсолютные координаты через подсказки динамического ввода, то следует указывать префикс #.

Теперь вы знаете, как выглядит система координат в Автокаде и как вводить координаты в Автокаде, чтобы добиться желаемого результата! Посещайте наши курсы и обзоры по Автокаду для начинающих. С нами Автокад — это просто!

Освойте профессию проектировщика

Научитесь быстрому черчению, освоите прикладное 3D, автоматизируете создание ведомостей и спецификаций.

ПЕРЕНЕСТИ (команда)

Перемещение объектов на заданное расстояние в указанном направлении.

найти

Для точного переноса объектов используйте координаты, шаговую привязку, объектные привязки и другие инструменты.

Отображаются следующие запросы.

Выберите объекты Выбор перемещаемых объектов. Базовая точка Задание начальной точки переноса. Вторая точка В сочетании с первой точкой позволяет определить вектор, указывающий, на какое расстояние и в каком направлении перемещаются выбранные объекты.

Если нажать клавишу ENTER, чтобы принять параметр «Использовать первую точку в качестве значения разности», первая точка интерпретируется как относительное смещение по осям X, Y и Z. Например, если указать базовую точку 2,3 и при отображении следующей подсказки нажать клавишу Enter, объект переместится на 2 единицы по оси X и на 3 единицы по оси Y относительно своей текущей позиции.

Использование определенной координаты

  • Если включен динамический ввод, введите знак решетки (#), затем значение по оси X, запятую, значение по оси Y. Пример: #4.0,6.75.
  • Если динамический ввод отключен, введите значение по оси X, запятую, значение по оси Y. Пример: 4.0,6.75.

Прим.: Когда динамический ввод включен, по умолчанию используются относительные координаты. Когда динамический ввод отключен, по умолчанию используются абсолютные координаты. Нажмите клавишу F12, чтобы включить или отключить динамический ввод.

Использование относительных координат

Относительная координата определяет расстояние и направление от предыдущей координаты.

  • Если динамический ввод включен, введите значение по оси X, запятую, значение по оси Y. Пример: 4.0,6.75.
  • Если динамический ввод отключен, введите знак @, затем значение по оси X, запятую, значение по оси Y. Пример: @4.0,6.75.

Две указанные точки задают направляющий вектор, который определяет, на какое расстояние от исходного положения и в каком направлении должны быть перемещены копируемые объекты.

Понятия, связанные с данным
  • Перемещение объектов
  • Редактирование с помощью ручек

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *