Постановка задачі
Обмінний формат DXF, запропонований і розвивається фірмою Autodesk, відомий своєю складністю і великою кількістю неоднозначних в інтерпретації особливостей. У даній статті автор на основі невеликого досвіду імпорту в ObjectLand кадастрових і топографічних карт, підготовлених в AutoCAD, описує власну методику імпорту графіки (про атрибутивних даних мова не йде) і програмні утиліти, необхідні для такого імпорту.
Методика імпорту
Для роботи знадобиться «повна» версія AutoCAD, версії Lite (полегшені) не годяться, тому що вони не підтримують мову AutoLISP. Підготовка вихідного автокадовского креслення до імпорту здійснюється програмою PREPARE_OL.LSP (її можна завантажити за посиланням внизу статті). Необхідно додати цю програму в список автозавантаження AutoCAD, для цього вибрати пункт меню «Сервіс» -> «AutoLISP» -> «Програми ...». У діалоговому вікні натиснути мишею зображення чорного портфеля і далі вибрати пункт «Додати ...». З'явиться діалог відкриття файлу, треба знайти на диску скачаний і розпакований заздалегідь файл PREPARE_OL.LSP і двічі клацнути його мишею. Після цих дій AutoCAD «запам'ятає» розташування файлу PREPARE_OL.LSP і буде завантажувати його кожен раз при своєму старті. Звичайно, файл повинен тепер постійно зберігатися на своєму місці, в разі ж його перенесення треба буде повторити всю процедуру заново.
Перед роботою краще зробити резервну копію вихідного DWG або DXF файлу на всякий випадок. Нижче наведені покрокові інструкції по імпорту DXF (DWG) файлу в ObjectLand.
1) Відкрити креслення DXF або DWG в AutoCAD, перейти в простір моделі, викликати діалог настройки шарів і відключити видимість непотрібних шарів, а порожні шари (вони позначені більш тьмяною піктограмою) - видалити. Слід також стерти всі непотрібні об'єкти креслення.
2) Якщо треба зберегти деякі автокадовскіе блоки нерозчленованою (після імпорту в ObjectLand вони постануть у вигляді точкових об'єктів, а весь малюнок блоку буде втрачено), слід набрати в командному рядку команду BLOCKS_GALLERY, відповісти на її запити (буде викреслена «галерея блоків») і потім, набравши команду PICK_BLOCKS, мишею вказати блоки, які Ви хотіли б імпортувати в вигляді точкових об'єктів. Найбільш ймовірні кандидати: а) блоки, що містять сплайни з безліччю вузлів і входять до креслення багаторазово (порядку понад 100 разів), тому що при їх розчленування утворюється величезна кількість графічної інформації, і в ObjectLand буде повільно працювати промальовування; б) блоки, чий зовнішній вигляд неприпустимо спотвориться в результаті видалення штриховок після розчленування блоку (зазвичай так буває при відсутності контурів штриховок), зокрема, блоки, що складаються з одних тільки штриховок.
3) Виконати команду PREPARE_OL, набравши її в командному рядку AutoCAD. Ця команда: встановлює «мирову» систему координат; розчленовує все блоки, крім позначених командою PICK_BLOCKS на попередньому кроці; розчленовує багаторядкові тексти; видаляє штрихування; виконує команду ОЧИСТИТИ (_PURGE). Після всього цього команда PREPARE_OL запросить такі параметри, як «Зміщення по X» і «Зміщення по Y». Навіщо вони потрібні? Якщо «хмара» об'єктів карти лежить відразу в декількох квадрантах декартовой площині, тобто якщо воно розділене на частини осями координат, то необхідно зрушити всю карту на певну відстань. Це відстань виражено через «Зміщення по X», «Зсув по Y» і його доведеться запам'ятати або записати до кроку 12. Після зсуву всі об'єкти карти повинні опинитися в одному і тому ж квадраті. Зсув краще вибирати із запасом і округляти, наприклад, 5000 і 15000, щоб легше було запам'ятати. Якщо всі об'єкти карти і так вже лежать в одному квадраті, то зрушення не потрібен і слід ввести обидва рази нуль. Якщо імпортується кілька DWG (DXF)-файлів (наприклад, сусідні планшети топос'ёмкі), то зміщення треба вибирати для всіх них один і той же.
4) Якщо серед написів є дуже дрібні, треба виконати команду RAISE_TEXT. Тоді запити в командному рядку стару висоту тексту (її можна дізнатися в «Властивості» написи, ця палітра викликається по комбінації клавіш «Ctrl-1»), потім нову висоту (слід ввести бажану висоту). Потім буде запропоновано вибрати рамкою всі потрібні тексти.
5) Виконати команду ПБЛОК (_WBLOCK). У діалозі слід залишити секцію «Базова точка» без змін (там повинні бути всюди нулі), в секції «Об'єкти» вибрати варіант «Залишити» і після натискання кнопки «Вибрати об'єкти» мишею обвести рамкою всі потрібні об'єкти карти. У секції «Розміщення» слід вказати ім'я файлу і шлях до нього (це буде новий DWG-файл, в подальшому він буде згадуватися як «файл, збережений на кроці 5»). Внизу, в випадаючому списку «Одиниці виміру» краще вибрати «Метри».
6) Закрити вихідний файл креслення, без збереження його.
7) Відкрити DWG-файл, збережений на кроці 5, в програмі nanoCAD SPDS 1.0 (вона теж повинна бути встановлена на комп'ютері, її дистрибутив, розповсюджуваний безкоштовно, можна скачати за адресою http://freesoft.ru/?id=676337 ). Крім зазначеної програми, підійдуть nanoCAD 2.0, IntelliCAD, ZwCAD, BricsCAD і подібні «клони» Автокада, здатні читати формат DWG і записувати DXF, так як ObjectLand імпортує тільки DXF-файли. Але все ж автор рекомендує nanoCAD SPDS 1.0, так як в ній реалізований найбільш правильний алгоритм дискретизації сплайнів серед всіх перерахованих програм і, крім того, немає «віддзеркалювання» частини об'єктів щодо осі ординат при запису даних в DXF-формат.
Після відкриття креслення слід переглянути «зблизька» графічні дані. Якщо написи на деяких шарах повернені на деякий кут (зазвичай 90 або 180 градусів), слід скласти текстовий файл, подібний запропонованому для скачування в кінці статті, за принципом: непарні рядки - імена шарів креслення, парні - кути повороту написів на цих шарах. Потім слід зберегти цей файл соотвествующих імен шарів кутах повороту з розширенням TXT.
Якщо були зустрінуті повернені написи, слід відкрити DWG-файл, збережений на кроці 5, в AutoCAD і виконати команду ROTATE_TEXT. Коли вона запросить «файл кутів повороту», треба вказати файл відповідності імен шарів кутах повороту, збережений тільки що (див. Попередній абзац). Після завершення роботи команди ROTATE_TEXT слід зберегти DWG-файл, натиснувши на піктограму «дискетка», і закрити його, щоб тут же відкрити в nanoCAD SPDS 1.0 (як на початку цього кроку).
8) Експортувати з nanoCAD відкритий в ньому DWG-файл в формат DXF 11-й версії (якщо замість nanoCAD використовується інша програма, то версія DXF повинна бути не вище 12-й), командою меню «Файл» -> «Експортувати ...». Закрити DWG-файл без збереження.
9) Запустити програму DXF_Importer.exe (можна завантажити за посиланням в кінці статті), вибрати тільки що записаний DXF-файл (можна вибрати відразу кілька DXF-файлів за допомогою натиснутих клавіш Ctrl або Shift, або просто обвівши потрібні файли мишею) і вказати папку , в якій буде створена ГБД ObjectLand з імпортованими даними. Якщо в цій папці виявиться раніше створена ГБД, програма запропонує на вибір: а) нічого не робити і вийти, б) стерти стару ГБД і створити нову, в) здійснити доімпорт в стару ГБД.
Програма відкриває ГБД в режимі одного і вимагає наявності на комп'ютері виконується середовища NET Framework 2.0, в даний час її дистрибутив надається безкоштовно за адресою http://www.microsoft.com/ru-ru/download/details.aspx?id=1639 , Для установки Net Framework необхідні права адміністратора в системі. В операційних системах Windows Vista і Windows 7 нічого встановлювати не треба, Net Framework вже входить в їх склад. ObjectLand повинен бути встановлений разом зі своїм COM-сервером, тобто «типова» установка не годиться, потрібна «повна». Програма працює тільки з локального каталогу (НЕ мережевого), при запуску програми всі файли DLL з пропонованого нижче архіву повинні знаходитися в тому ж локальному (НЕ мережевому) каталозі, що і EXE-файл. Версія ядра і ГБД повинні бути не нижче 2.7 (на початку статті є посилання на стару версію програми). Програма вимагає установки патча (можна скачати в кінці статті). Щоб встановити патч, просто скопіюйте файли з завантаженого архіву патча в каталог C: \ Program Files \ Objectland \ BIN, перезаписавши при цьому старі файли. Звичайно, при копіюванні патча ГІС Objectland не повинна бути запущена на даному комп'ютері.
10) Якщо при імпорті в ObjectLand деякі замкнуті майданні об'єкти були відкинуті внаслідок своєї неточності, наприклад, наявності самоперетинів, то деякі з цих об'єктів можна вилікувати, повторно відкривши в AutoCAD DWG-файл, збережений на кроці 5 (або на кроці 7, якщо були повернені тексти), і виконавши команду ERROR_SCAN, набравши її в командному рядку. Команда запросить файл звіту про імпорт, він зберігається в тій же папці, що і ГБД. Слід збільшити дані в графічному вікні AutoCAD до такої міри, щоб окремі будови займали весь екран. Далі командою ERROR_PREV встановити центр екрану на найперший некоректний об'єкт, помітити і виправити його, встановивши в палітрі властивостей (викликається по «Ctrl-1») властивість «Замкнуто» в «Ні» (див. Знімок екрана нижче).
При розмиканні полилинии через палітру властивостей її останній сегмент зникне. Якщо це неприпустимо, можна Дочерті відсутній сегмент відрізком. Після виправлення самого першого некоректного об'єкта треба пройтися по іншим, видаючи команду ERROR_NEXT в командному рядку AutoCAD. При цьому черговий некоректний об'єкт буде завжди опинятися в центрі екрану. Повернутися до попереднього об'єкта при необхідності можна командою ERROR_PREV. Якщо після чергової команди ERROR_NEXT (або ERROR_PREV, якщо Ви рухалися у зворотному напрямку) зображення не зміниться, значить, пройдені всі некоректні об'єкти.
Тепер треба зберегти DWG-файл, натиснувши на піктограму «дискетка», закрити його, тут же відкрити в nanoCAD SPDS 1.0, щоб експортувати в DXF-формат 11-й версії і пройти заново крок 9, тобто знову створити ГБД ObjectLand з імпортованими даними . На цей раз відкинутих об'єктів, судячи з файлу звіту, буде менше.
11) Відкрити отриману ГБД в ObjectLand і вивести на екран тему «Загальний вигляд». Якщо деякі об'єкти отзеркаліть щодо осі ординат, їх слід виділити в вікні теми і піддати нескладної аффинной трансформації (меню «Сервіс» -> «Трансформація ...»), завантаживши на першому кроці візарду один з файлів настройки, які можна скачати за посиланням внизу сторінки.
12) Якщо на кроці 3 при виконанні команди PREPARE_OL був виконаний зрушення графіки на деяку відстань, то тепер слід здійснити трансформацію подоби (меню «Сервіс» -> «Трансформація ...») для зсуву в зворотному напрямку.
13) Якщо на попередніх етапах графіка порушувався (кроки 3 і 12) і / або дзеркалом (крок 11), то зараз слід виправити просторові параметри карти, такі як «Базова точка» і «Діапазон», доступні на вкладці «Параметри» діалогу « властивості карти », відповідно до нового положення« плями »графіки після всіх трансформацій.
Зворотній зв'язок
Обговорити програму можливо на форумі ГІС ObjectLand на сайті http://www.objectland.ru
22 серпня 2010 р
Трухачов М.Ю.
Програма на AutoLISP для підготовки DXF-файлів до імпорту
DXF-Importer_Lisp
Програма імпорту DXF-файлів
DXF-Importer
Патч для ObjectLand 2.7.5
patch_2_7_5_RPC_E_DISCONNECTED
Приклад файлу відповідності імен шарів кутах повороту текстів на цих шарах
DXF-Importer_Rotate_text
Файли настройки трансформації для віддзеркалювання щодо осі ординат
DXF-Importer_CTS
Навіщо вони потрібні?Ru/?
Aspx?