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

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

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

Ответ
Поиск в этой теме
Непрочитано 19.08.2009, 05:45 #1
Импорт точек из файла .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 просмотров)

Просмотров: 9425
 
Непрочитано 19.08.2009, 08:33
#2
Do$

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


Почему-то у меня открывается пустой чертеж по 2-й ссылке...
Do$ вне форума  
 
Непрочитано 19.08.2009, 09:27
#3
Victor


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


Это в новых автокадах атрибуты задаются в command?. У меня 2008 говорит неизвесная команда.
Victor вне форума  
 
Непрочитано 19.08.2009, 09:36
#4
Кулик Алексей aka kpblc
Moderator

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


У автора, похоже, изменена attdia...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.08.2009, 09:54
#5
G-RAV

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


Сам чертеж пустой, но содержит блок "piket_s" (можно увидеть в редакторе блоков), который состоит из точки и 4-х атрибутов(NN-номер, H_FAKT-фактическая отметка, delta_H - превышение факта от проекта, H_PROEKT - проектная отметка. На счет 2008-го не знаю, потому как делал все в 6-м...
G-RAV вне форума  
 
Непрочитано 19.08.2009, 10:33
#6
Victor


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


Мне просто любопытно. Без строки (setvar "attreq" 0) запрашивает атрибут. Со строкой - неизвесная команда.
Victor вне форума  
 
Непрочитано 19.08.2009, 10:36
#7
Кулик Алексей aka kpblc
Moderator

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


Victor, attreq и attdia немного разные вещи.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.08.2009, 10:46
#8
G-RAV

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


вообще не понимаю о чем вы! В работе, руководствуюсь литературой Николая Полещука, там я не нашел в системных переменных attreq и attdia. У кого-нить кроме меня вообще работает??
G-RAV вне форума  
 
Непрочитано 19.08.2009, 10:57
#9
Victor


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


Заработало. Когда установил (setvar "attdia" 0). Только точка вставки блока странная. Может только у меня
Victor вне форума  
 
Автор темы   Непрочитано 19.08.2009, 11:06
#10
G-RAV

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


Цитата:
Сообщение от Victor Посмотреть сообщение
Заработало. Когда установил (setvar "attdia" 0). Только точка вставки блока странная. Может только у меня
А что именно странного?
Вкладываю рисунок.dwg - то что должно получится..
Вложения
Тип файла: dwg
DWG 2004
Рисунок1.dwg (97.8 Кб, 1070 просмотров)
G-RAV вне форума  
 
Непрочитано 19.08.2009, 11:25
#11
Victor


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


Точка вставки блока где-то в стороне от блока.
Victor вне форума  
 
Непрочитано 19.08.2009, 11:49
#12
Do$

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


ага, есть такое
Do$ вне форума  
 
Автор темы   Непрочитано 19.08.2009, 12:23
#13
G-RAV

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


Поставил себе 2008-й.. Все работает.. И точки вставляются в соответствии с координатами в файле..
G-RAV вне форума  
 
Непрочитано 19.08.2009, 13:12
#14
Do$

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


Господа, позвольте мне, в целях повышения уровня собственной образованности если не прав - пинайте
Код:
[Выделить все]
(defun import_job&are (/) 
;_можно название поменять на C:import_job&are, чтоб запускать командой 
;_неплохо было б указать локальные переменные после /
; отключаем вывод сообщений в командную строку
(setvar "cmdecho" 0)
;_если уж совсем по правильному, то исходное значение "cmdecho" тоже 
;_надо сохранять и потом восстанавливать 
;;Запоминание привязки, и текущего слоя и цвета
(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 можно его использовать
(While(/= Stroka nil)
  ;Начало подцикла While до "0=Measured point" или ">"
  (While(and(/= Stroka "0=Measured point")
 (/= Stroka ">"))
;_а далее вместо кучи if можно использовать cond
    ;условие на "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
;_от переменной Npiketa можно избавиться, сразу передавать в command a1 
  (setq XYmat (list (atof a4)(atof a3)));Преобразуем в вещественные и объеденяем в список координаты
;_список тоже можно сразу загнать в command минуя сохранение в переменной
          (setq Otmetka (rtos(atof a5)2 2));Преобразуем в вещественное и округляем до десятых значение Otmetka
(if(= Otmetka "0.00") (setq Otmetka "Б/В"));Если значение Otmetka=0.00 то заменяем его на Б/В
;_от переменной Otmetka тоже можно избавиться...
(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 могу накидать, если нарисуешь как он должен выглядеть и поподробнее расскажешь что требуется от диалога.
А цвет можно выбрать из лиспа прямо, без DCL (ф-ция acad_colordlg например.)

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

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


Наконец-то я дождался хоть какой то критики.. Спасибо, Do$! У меня еще ко всему прочему и с русским языком проблемы.. И точка вставки действительно где-то в стороне, и не могу понять почему... А код попробую поправить и выложу...
G-RAV вне форума  
 
Непрочитано 19.08.2009, 13:31
#16
Do$

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


Цитата:
Сообщение от G-RAV Посмотреть сообщение
И точка вставки действительно где-то в стороне, и не могу понять почему...
Сам блок поправь, в редакторе блоков перенеси все за центральную точку в начало координат
Do$ вне форума  
 
Непрочитано 19.08.2009, 13:51
#17
Кулик Алексей aka kpblc
Moderator

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


Добавлю: нет обработчика ошибок; чтение файла выполняется вместе с рисованием (что в принципе лично я не считаю нормальным решением: желательно сначала прочитать файл, преобразовать данные с список и потом уже выполнять вставку блоков). Ну и плюс добавить обработку системных переменных attdia, attreq.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.08.2009, 14:43
#18
G-RAV

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


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

Последний раз редактировалось G-RAV, 19.08.2009 в 14:52. Причина: Добавление
G-RAV вне форума  
 
Непрочитано 19.08.2009, 15:01
#19
Do$

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


Как-то так можно:
Код:
[Выделить все]
(setq  
  f
    (open
      (setq
	file
	 (getfiled
	   "Выберите файл с расширением job & are для загрузки в Autocad"
	   (getvar "dwgprefix")
	   "job;are"
	   8
	 ) ;_ end of getfiled
      ) ;_ end of setq
      "r"
    ) ;_ end of open
) ;_ end of setq
И вот так:
Код:
[Выделить все]
(command
  "_insert"
  "piket_s"
  (list (atof a4)(atof a3))
  1
  1
  0
  a1
  (if (= (rtos (atof a5) 2 2) "0.00")
    "Б/В"
    (rtos (atof a5) 2 2)
  ) ;_ end of if
  ""
  ""
) ;_ end of command
Насчет системных переменных:
http://www.autocads.ru/prilosh/pril_3.php
Do$ вне форума  
 
Автор темы   Непрочитано 19.08.2009, 15:25
#20
G-RAV

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


Вот как-то так я представляю себе диалоговое окно (прада, можно и как-нить компактней):
Код:
[Выделить все]
 
import: // наверное уже после выбора файла
dialog{label="Импорт точек .job & .are";
:edit_box{label="Имя слоя для пикетов";key="name_layer";value="";edit_width=6;} // по умолчанию, то что стоит после 15= в файле.job
:edit_box{label="Точность Н(знаков после точки)";key="TCH_H";value="";edit_width=6;}
:row{fixed_width=true;alignment=centered;
  :button{label="Палитра";key="palitra";} // интерисует именно цвет слоя 
  :button{label="Импорт";key="Import";}
  :ok_button{label="Выход";is_cancel=true;}
}//row
:row{
  :image{width=20;height=0.5;key="img";} // шкала прогресса
  }//row
}
G-RAV вне форума  
 
Непрочитано 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,425


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,425


Только что работало... Странно, меня тоже с аркады выбрасывает
Что нашел на 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,425


Почти универсальный обработчик ошибок.
__________________
Моя библиотека 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