Страница 1 из 1

Работа с объектами слоев

Добавлено: 14 апр 2014, 10:48
kasandra
Есть слой на котором есть линейные, точечные и полигональные объекты, а так же текстовые объекты (выступающие как полноценные объекты, не подписи). Получен tab из автокадовского файла. Задача состоит в том, что бы все эти объекты разнести по слоям, а текстовые удалить. Можно ли как-то за один раз удалить текстовые объекты, не по одному... Сейчас единственный вариант, который рассматриваю это удалять их из mid-файла, это быстрее чем прямо со слоя..но это долго, неудобно, может запрос какой-то...?

Re: Работа с объектами слоев

Добавлено: 14 апр 2014, 11:07
Игорь Белов
Перестройте таблицу, добавив целочисленное поле. Заполните его типом объекта:

Код: Выделить всё

ObjectInfo(obj, 1)
Таблица соответствия:
  1. — дуга
  2. — эллипс
  3. — линия
  4. — полилиния
  5. — точка
  6. — фрейм
  7. — полигон
  8. — прямоугольник
  9. — скруглённый прямоугольник
  10. — текст
  11. — мультиточка
  12. — коллекция
Раз уж собираетесь разносить по слоям, зачем удалять тексты? Они всё равно умрут в исходной таблице. Хотите выбрать все линейные объекты, составляете запрос с условием:

Код: Выделить всё

новое_поле In (1, 3, 4)
Все площадные объекты:

Код: Выделить всё

новое_поле In (2, 7, 8, 9)

Re: Работа с объектами слоев

Добавлено: 14 апр 2014, 11:38
Slinger
Ещё как вариант.

Код: Выделить всё

Str$(obj)="region"
Вернёт все полигональные объекты. Возможные варианты объектов: region, point, line, polyline, text, arc, ellipse, rect, roundrect. Но это не все, полный список в справочнике MapInfo должен быть.

Хотя вариант, предложенный ErnieBoyd, быстрее обрабатывает объекты и возвращает результат. Ибо MapInfo (и не только ему :) )проще проверять целочисленные значения (от 1 до какого-то числа), чем искать вхождение строки.

Re: Работа с объектами слоев

Добавлено: 14 апр 2014, 11:54
kasandra
Спасибо огромное!

Re: Работа с объектами слоев

Добавлено: 14 апр 2014, 11:58
Slinger
Я в своё время русифицировал и допиливал утилиту Stylist. Если неохота заморачиваться с запросами, можете использовать её.

Для MapInfo 7.0 и старше

Re: Работа с объектами слоев

Добавлено: 15 апр 2014, 10:35
Старый Йети
Ну а если уж совсем не заморачиваться ( :) ), то, начиная с версии MI 10.0, идет пакет утилит MapCAD ("В MapCAD входят чертежные и оформительские инструменты MapInfo Professional. Они полезны при выполнении геодезических и землемерных работ, включая элементы автоматического проектирования (CAD)"). Устанавливается при инсталляции MI в C:\Program Files\MapInfo\Professional\MapCAD\MapCAD.MBX . Там эта функция расширена и работает без заморочек с запросами, objectInfo() и т.д.. Успехов!