Импорт точек из файла .job & .are - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Импорт точек из файла .job & .are

Импорт точек из файла .job & .are

Ответ
Поиск в этой теме
Непрочитано 19.08.2009, 05:45
Импорт точек из файла .job & .are
G-RAV
 
Геодезист
 
г.Новосибирск
Регистрация: 16.08.2009
Сообщений: 86

Написал код для импорта точек .job или .are в Автокад минуя Кредо_Дат, полученных по результатам геодезической съемки прибором Trimble Geodimetr 600. С условием, что съемка велась от исходных пунктов с известными координатами ( в приборе). Буду рад полезной критике, т.к. только начинаю программировать.
Код:
[Выделить все]
 
(defun import_job&are (/)
; отключаем вывод сообщений в командную строку
(setvar "cmdecho" 0)
;;Запоминание привязки, и текущего слоя и цвета
(setq AAA (getvar "osmode"))
;выбираем файл присваеваем File
(setq File (getfiled "Выберите файл с расширением job & are для загрузки в Autocad"  (getvar "dwgprefix") "job;are" 8)) 
;вывод сообщения "Идет работа"
(print "Идет работа")
;поиск файла File присваеваем f
(setq f(findfile File))
;открываем f для чтения
(setq f(open f "r"))
;считываем первую строку Stroka файла f
(setq Stroka(read-line f))
;Начало цикла While до пустой строки
(While(/= Stroka nil)
  ;Начало подцикла While до "0=Measured point" или ">"
  (While(and(/= Stroka "0=Measured point")
 (/= Stroka ">"))
    ;условие на "15=" ищем имя для слоя (на текущей строке)
    (if(=(substr Stroka 1 3) "15=")
  (setq name (substr Stroka 4)))
      ;условие на "5=" ищем имя точки (на текущей строке)
      (if(=(substr Stroka 1 2) "5=")
  (setq a1 (substr Stroka 3)))
      ;условие на "2=" ищем имя точки стояния (на текущей строке)
  (if(=(substr Stroka 1 2) "2=")
  (setq a1 (substr Stroka 3)))
      ;условие на "62=" ищем имя точки ориентирования (на текущей строке)
  (if(=(substr Stroka 1 3) "62=")
  (setq a1 (substr Stroka 4)))
  ;условие на "37=" ищем координату Х точки (на текущей строке)  
  (if (=(substr Stroka 1 3) "37=")
  (setq a3 (substr Stroka 4)))
  ;условие на "38=" ищем координату У точки (на текущей строке)  
  (if (=(substr Stroka 1 3) "38=")
 (setq a4 (substr Stroka 4)))
  ;условие на "39=" ищем высоту точки (на текущей строке)  
  (if(=(substr Stroka 1 3) "39=")
   (setq a5 (substr Stroka 4)))
    ;переход на следующую строку
    (setq Stroka(read-line f))
  );Конец подцикла While до "0=Measured point" или ">"
 
;Ряд операций по отрисовки точек
(progn
(command"_layer""_m" name "") ;Устанавливаем текущем и Рисуем в слое name
  (setq Npiketa a1);Присваеваем Npiketa значение a1
  (setq XYmat (list (atof a4)(atof a3)));Преобразуем в вещественные и объеденяем в список координаты
          (setq Otmetka (rtos(atof a5)2 2));Преобразуем в вещественное и округляем до десятых значение Otmetka
(if(= Otmetka "0.00") (setq Otmetka "Б/В"));Если значение Otmetka=0.00 то заменяем его на Б/В
(command"_osnap" "_non")
(command"_insert" "piket_s"  XYmat 1 1 0 Npiketa Otmetka "" "");вставка блока piket_s
    );Конец операций по отрисовки точек
(setq Stroka(read-line f));переход на следующую строку
(setq a1 "" a3 "" a4 "" a5 "");обнуление аргуменов
 ) ;Конец цикла While до пустой строки
(close f);Закрытие файла
(command "_zoom" "_E" );Показать видимые элементы чертежа
(setvar "osmode" AAA);;Восстановление привязки, и текущего слоя  
(alert "Загрузка закончена")
  )
(import_job&are)
И помогите, кто может, создать DCL. Где можно было бы выставлять точность отметки (Н), задавать имя слоя (имя, заданное при съемке ("15=" по умолчанию), и самое главное выбирать цвет слоя из палитры, можно еще и шкалу прогресса, но не так уж важно как остальное.

P.S. Прикрепляю Рисунок.dwg, содержащий необходимый блок
И архив со съемочным файлом

Вложения
Тип файла: zip 300-позиция.zip (6.1 Кб, 123 просмотров)
Тип файла: dwg
DWG 2004
Рисунок1.dwg (106.9 Кб, 1456 просмотров)

Просмотров: 9394
 
Непрочитано 19.08.2009, 15:32
#21
Victor


 
Регистрация: 14.06.2009
Бат-Ям
Сообщений: 295


А масштабом вы не пользуетесь?
Victor вне форума  
 
Автор темы   Непрочитано 19.08.2009, 15:34
#22
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


у меня в VBA написан код по редактированию свойств пикетов
G-RAV вне форума  
 
Непрочитано 19.08.2009, 16:20
#23
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


А зачем кнопка "Импорт"?
Не... шкалу прогресса так просто не сделать...
Do$ вне форума  
 
Автор темы   Непрочитано 19.08.2009, 16:27
#24
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Ну я себе это след. образом представляю: Запускаешь LSP --> выбираешь файл --> выскакивает окно import.dcl, в котором по умолч. уже стоит имя слоя (из файла .job), выставляешь остальные параметры (точность Н, цвет слоя) --> нажимаешь импорт - происходит загрузка точек....
Да над шкалой наверное и не стоит заморачиваться... Для меня лично очень важен цвет слоя, причем можно не кнопкой "палитра", а из раскр. списка.
G-RAV вне форума  
 
Непрочитано 19.08.2009, 16:28
#25
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


http://www.arcada.com.ua/forum/viewt...hp?p=6940#6940 ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.08.2009, 16:36
#26
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Не преходит по данной ссылке...
G-RAV вне форума  
 
Непрочитано 19.08.2009, 16:45
#27
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Только что работало... Странно, меня тоже с аркады выбрасывает
Что нашел на caduser'e: http://www.caduser.ru/forum/index.ph...#message257844
http://www.caduser.ru/forum/index.ph...#message205916
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.08.2009, 16:58
#28
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от G-RAV Посмотреть сообщение
Ну я себе это след. образом представляю: Запускаешь LSP --> выбираешь файл --> выскакивает окно import.dcl, в котором по умолч. уже стоит имя слоя (из файла .job), выставляешь остальные параметры (точность Н, цвет слоя) --> нажимаешь импорт - происходит загрузка точек....
Да над шкалой наверное и не стоит заморачиваться... Для меня лично очень важен цвет слоя, причем можно не кнопкой "палитра", а из раскр. списка.
Эм... предлагаю кнопку "Импорт" упразднить за ненадобностью. Загрузка точек происходит после того, как кнопка "Выход" нажата. Диалог закрывается и программа обрабатывает файл. При этом можно вывести прогресс бар...

Наваял DCL, вложил файл для управления... Там добавлять нужно обработку различных вариантов... Но идея, надеюсь, будет понятна

Код:
[Выделить все]
import: // наверное уже после выбора файла
dialog {label="Импорт точек .job & .are";
:edit_box {label="Имя слоя для пикетов"; key="name_layer"; edit_width=15; edit_limit=24;} // по умолчанию, то что стоит после 15= в файле.job
:edit_box {label="Точность Н (знаков после точки)"; key="tch_h"; edit_width=6; edit_limit=24;}
:row {fixed_width=true; alignment=centered;
  :button {label="Палитра"; key="palitra";} // интерисует именно цвет слоя 
  :button {label="Импорт"; key="Import";}
  ok_button;
}//row
}
Вложения
Тип файла: lsp G-RAV.LSP (344 байт, 66 просмотров)

Последний раз редактировалось Do$, 19.08.2009 в 17:04.
Do$ вне форума  
 
Автор темы   Непрочитано 19.08.2009, 17:03
#29
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Я согласен.. Только вот имя слоя не появится по умолчанию, т.к. файл не прочитан, вернее будет прочитан после нажатия "Выход"... Хотя по умолчанию можно поставить текущую дату(без года)...
G-RAV вне форума  
 
Непрочитано 19.08.2009, 17:04
#30
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


См. выше
Do$ вне форума  
 
Автор темы   Непрочитано 19.08.2009, 17:34
#31
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


G-RAV.LSP почему-то не работает - dcl появляется и тут же исчезает...
(set_tile "name_layer" a1) - а1 - это № точки,
name - имя слоя (съемки)
G-RAV вне форума  
 
Непрочитано 19.08.2009, 23:45
#32
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Мда, маленько перепутал a1 и name...
В общем, вот архив... Программа практически твоя, плюс я добавил описание диалога. Что с точностью(Н) делать я не понял - это уже твоя забота
Я предположил, что файл с данными всегда начинается строкой "15=<что-то>", если это не так - тоже надо что-то придумывать с именем слоя по умолчанию.
Ну и остаются в силе замечания от Кулик Алексей aka kpblc, 17 пост...
Вложения
Тип файла: rar g-rav.rar (1.6 Кб, 71 просмотров)
Do$ вне форума  
 
Автор темы   Непрочитано 20.08.2009, 07:42
#33
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Do$, спасибо за помощь! Все работает так, как я и хотел, (Н) я уже пристроил...

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Добавлю: нет обработчика ошибок; чтение файла выполняется вместе с рисованием (что в принципе лично я не считаю нормальным решением: желательно сначала прочитать файл, преобразовать данные с список и потом уже выполнять вставку блоков). Ну и плюс добавить обработку системных переменных attdia, attreq.
Алексей, ты не мог бы более подробно объяснить по поводу обработчика ошибок или дай, пожалуйста, ссылку... Так то все работает, но хочется довести программу до ума - качественного исполнения ...
G-RAV вне форума  
 
Непрочитано 20.08.2009, 08:08
#34
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Почти универсальный обработчик ошибок.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 20.08.2009, 08:20
#35
G-RAV

Геодезист
 
Регистрация: 16.08.2009
г.Новосибирск
Сообщений: 86
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Спасибо! Надеюсь, что пойму!
G-RAV вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Импорт точек из файла .job & .are



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт DXF файла в МОНОМАХ Bublik 22 Мономах 30 19.01.2017 11:38
Civil 3D 2007. Импорт точек из dwg Airiz Прочее. Программное обеспечение 3 16.09.2009 11:41
Про импорт txt файла Лиры.. Sid Barret Лира / Лира-САПР 1 16.06.2008 08:05
Импорт точек Сьемочного обоснования в AutoCAD Xamas_DZK AutoCAD 1 05.11.2007 03:24