Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Даниил от 13-02-2015, 15:07:10

Название: Редактирование объектов с чертежа по ObjectID
Отправлено: Даниил от 13-02-2015, 15:07:10
Здравствуйте. Скажите, можно ли в autoCAD объекты чертежа редактировать по его ID. Постараюсь кратко ввести в курс дело:

1. У меня есть метод, который должен изменить координаты точки/окружности/линии(2 точки) и их высоту.
2. Со слоем проблем нет, я просто вызываю метод, блокирую чертеж, проверяю id_слоя и по нахождению нужного мне ID меняю его атрибуты
3. Не нашел хорошего примера, как можно по такому же принципу редактировать графические примитивы.

пытался работать с текущим набором через SelectAll(), брал entity. Но проблема в том, что entity, как я понимаю, это некий абстрактный объект, а не конкретный. И через нее я не могу задать новые значения координат для объекта. Пытался сделать так:

Код - C# [Выбрать]
  1. PromptSelectionResult getSel = doc.Editor.SelectAll();
  2.                        
  3.                         if (getSel.Status == PromptStatus.OK)
  4.                         {
  5.                             SelectionSet selSet = getSel.Value;
  6.  
  7.                             foreach (SelectedObject selObj in selSet)
  8.                             {
  9.                                 if (selObj.ObjectId != null)
  10.                                 {
  11.                                     DBPoint point = trans.GetObject(selObj.ObjectId, OpenMode.ForWrite) as DBPoint;
  12.                                     if (point != null)
  13.                                     {
  14.                                         point.Position.X = X1;
  15.                                     }
  16.                                 }
  17.                             }
  18.                         }

Но столкнулся с такой проблемой, что свойства DBPoint.X не имеет возможности установки (has no setter)

Подскажите пожалуйста, можно ли по такому принципу, как я хочу редактировать объекты, и если да, то как именно?
Возможно нужно делать данную процедуру иным способом?

Буду благодарен за помощь
Название: Re: Редактирование объектов с чертежа по ObjectID
Отправлено: bargool от 13-02-2015, 15:12:49
Position - это Point3d
Соответственно,
Код - C# [Выбрать]
  1. point.Position = New Point3d(X1, Y1, Z1);
Название: Re: Редактирование объектов с чертежа по ObjectID
Отправлено: Александр Ривилис от 13-02-2015, 15:20:50
Position - это Point3d
Соответственно,
Код - C#: [Выделить]

    point.Position = New Point3d(X1, Y1, Z1);
Думаю что в данном случае, т.к. ему нужно поменять только координату X:
Код - C# [Выбрать]
  1. point.Position = new Point3d(X1, point.Position.Y, point.Position.Z);
Название: Re: Редактирование объектов с чертежа по ObjectID
Отправлено: bargool от 13-02-2015, 15:30:27
Согласен.
Просто хотел обозначить, что Point3d - это неизменяемый тип. При каждом изменении необходимо создавать новый объект
Название: Re: Редактирование объектов с чертежа по ObjectID
Отправлено: Даниил от 13-02-2015, 15:32:08
Приложение будет предусматривать возможность поменять все 3 координаты для точки, координаты двух точек линии, радиус и координаты центра для окружности
Действительно, все работает. Нужно создавать новый объект.

Благодарю Вас за помощь.