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

MapInfo, MapBasic
Ответить
kasandra
Активный участник
Сообщения: 145
Зарегистрирован: 09 апр 2014, 11:33
Репутация: 2

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

Сообщение kasandra » 14 апр 2014, 10:48

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

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2240
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1513
Откуда: Казань

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)
The purpose of computing is insight, not numbers

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

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

Сообщение Slinger » 14 апр 2014, 11:38

Ещё как вариант.

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

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

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

kasandra
Активный участник
Сообщения: 145
Зарегистрирован: 09 апр 2014, 11:33
Репутация: 2

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

Сообщение kasandra » 14 апр 2014, 11:54

Спасибо огромное!

Slinger
Гуру
Сообщения: 879
Зарегистрирован: 17 июн 2010, 23:14
Репутация: 207
Откуда: Москва

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

Сообщение Slinger » 14 апр 2014, 11:58

Я в своё время русифицировал и допиливал утилиту Stylist. Если неохота заморачиваться с запросами, можете использовать её.

Для MapInfo 7.0 и старше
Вложения
STYLIST_rmk.rar
(7.78 КБ) 313 скачиваний

Старый Йети
Активный участник
Сообщения: 170
Зарегистрирован: 06 дек 2011, 07:21
Репутация: 19
Откуда: г. Ухта, республика Коми

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

Сообщение Старый Йети » 15 апр 2014, 10:35

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

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость