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

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

построение линии через имеющийся список точек

Ответ
Поиск в этой теме
Непрочитано 18.04.2009, 13:35 #1
построение линии через имеющийся список точек
Composter
 
Отопление и вентиляция
 
Москва
Регистрация: 31.10.2008
Сообщений: 445

у меня есть список с точками ss2
((948.905 173.748 0.0) (948.905 182.268 0.0) (949.0 187.96 0.0) (970.424
174.941 0.0))
как построить линию через все точки, причем количество точек может быть гораздо больше чем 4?
пробовал (foreach p ss2 (command "._line" p)) не получается.
Просмотров: 7583
 
Непрочитано 18.04.2009, 14:51
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Если командными методами то:
(apply 'command (append '("_pline") lst '("")))
где lst список точек.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.04.2009, 16:27
#3
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Для построения линии достаточно 2 точек.
Sleekka вне форума  
 
Непрочитано 18.04.2009, 18:23
#4
dagget


 
Регистрация: 26.03.2009
Сообщений: 20


Скажите, а возможно импортировать в автокад таблицу с координатами из экселя и отстроить по ней точки автоматически?
dagget вне форума  
 
Непрочитано 18.04.2009, 18:27
#5
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


Да - используя lisp, см. поиск.
Sleekka вне форума  
 
Непрочитано 18.04.2009, 19:47
#6
dagget


 
Регистрация: 26.03.2009
Сообщений: 20


Поясните. Что такое lisp и где искать конкретно.
dagget вне форума  
 
Непрочитано 18.04.2009, 19:51
#7
Sleekka

-
 
Регистрация: 24.07.2005
Москва
Сообщений: 1,335


autolisp - встроенный в автокад язык прикладного программирования, являющийся по-совместительству расширенными возможностями автокада, для advanced users, с помощью которого можно сделать то, что нельзя сделать штатными средствами автокада, другими словами можно практически все...
Искать на этом сайте и в google.ru
Sleekka вне форума  
 
Непрочитано 08.02.2012, 15:43
#8
Dulitman


 
Регистрация: 03.05.2011
Сообщений: 35


Цитата:
Сообщение от dagget Посмотреть сообщение
Скажите, а возможно импортировать в автокад таблицу с координатами из экселя и отстроить по ней точки автоматически?
Цитата:
Сообщение от Sleekka Посмотреть сообщение
Да - используя lisp, см. поиск.
Где искать или по какой фразе искать, т.к. просто так ничего не найти
Dulitman вне форума  
 
Непрочитано 08.02.2012, 15:59
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Цитата:
Сообщение от Dulitman Посмотреть сообщение
по какой фразе искать
Например по этой

Цитата:
Сообщение от Dulitman Посмотреть сообщение
Где искать
например здесь
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.02.2012, 16:45
#10
Dulitman


 
Регистрация: 03.05.2011
Сообщений: 35


Цитата:
Сообщение от VVA Посмотреть сообщение
Например по этой


например здесь
Большое спасибо буду разбираться! Просто из Росреестра взял выписку, теперь надо на план наложить, там только XY, а Z везде 0 равен.
Dulitman вне форума  
 
Непрочитано 09.02.2012, 01:34
#11
kakt00z

инженер-проектировщик КИПиА
 
Регистрация: 30.08.2008
Минск
Сообщений: 159


может и не проще но, по моему, красивее делать полилинии в таких случаях, причем ActiveX-ом
(просто мнение, ссылки не смотрел)
kakt00z вне форума  
 
Непрочитано 09.02.2012, 09:12
#12
Dulitman


 
Регистрация: 03.05.2011
Сообщений: 35


Цитата:
Сообщение от kakt00z Посмотреть сообщение
может и не проще но, по моему, красивее делать полилинии в таких случаях, причем ActiveX-ом
(просто мнение, ссылки не смотрел)
Я сейчас с Point Manager разбираюсь. Может кинете ссылку на ActiveX если там проще?
Dulitman вне форума  
 
Непрочитано 09.02.2012, 09:32
#13
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Dulitman, а у тебя исходные данные в каком виде\формате и что ты хочешь получить в конечном виде?
А про ActiveX, это не готовая программа для решения твоей задачи, а метод в программировании, это kakt00z с Дима_ о своем...
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 09.02.2012, 09:58
#14
Dulitman


 
Регистрация: 03.05.2011
Сообщений: 35


Цитата:
Сообщение от Disney Посмотреть сообщение
Dulitman, а у тебя исходные данные в каком виде\формате и что ты хочешь получить в конечном виде?
А про ActiveX, это не готовая программа для решения твоей задачи, а метод в программировании, это kakt00z с Дима_ о своем...
Вообщем исходные данные в формате PDF изначально, но я перевёл в doc, xls, txt вообщем в любой. Формат такой №___X___Y, правда координаты через запятую, а не точку представлены, наверное надо через точку каким то образом перебить, а лучше переделать (в Excel например), т.к. сейчас пробовал через Credo_DAT, так вот там как раз точки должны быть везде). А должен получиться контур (отрезками, полилинией без разницы) с подписями точек или без тоже вообщем-то не принципиально, но лучше конечно с подписями

Про точки и запятые я имел ввиду, что сейчас 12345,678, а надо 12345.678
Dulitman вне форума  
 
Непрочитано 09.02.2012, 10:11
#15
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


выложи пример файла

Цитата:
Сообщение от Dulitman Посмотреть сообщение
наверное надо через точку каким то образом перебить
в любом редакторе (том же блокноте) CTRL+H и далее по тексту
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 09.02.2012, 10:16
#16
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Ну вот, когда полностью разобрались, могу посоветовать свою программу Geo_Import , она понимает как txt так и csv(из Excel), в качестве разделителя вообще всё что угодно, и дробную часть понимает, хоть через .(точку), хоть через ,(запятую). Линии(отрезки) правда не строит, но полилинии умеет хоть обычную, хоть 3D.
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 09.02.2012, 10:48
#17
Dulitman


 
Регистрация: 03.05.2011
Сообщений: 35


Цитата:
Сообщение от Disney Посмотреть сообщение
Ну вот, когда полностью разобрались, могу посоветовать свою программу Geo_Import , она понимает как txt так и csv(из Excel), в качестве разделителя вообще всё что угодно, и дробную часть понимает, хоть через .(точку), хоть через ,(запятую). Линии(отрезки) правда не строит, но полилинии умеет хоть обычную, хоть 3D.
Большое спасибо! (Да и вообще хочу ещё раз сказать СПАСИБО всем тем кто откликнулся и тут отписался). Ввёл координаты всё ок Только сначала подумал что программы выдаёт результат в геодезических координатах (так и есть), а мне надо в обычных (X и Y) местами поменять, но как оказалось и в выписке из Росреестра координаты геодезические (сравнил с картинкой/планом).

Цитата:
Сообщение от VVA Посмотреть сообщение
выложи пример файла


в любом редакторе (том же блокноте) CTRL+H и далее по тексту
Вообщем прикрепляю сам файл из Росреестра и выдержку из него в блокноте (я уже переделал её для программы товарища Disney). Файл txt выложил в формате lsp т.к. тут txt не прикрепляет.
Вложения
Тип файла: pdf doc85471.pdf (101.8 Кб, 284 просмотров)
Тип файла: lsp 111.lsp (1.4 Кб, 105 просмотров)
Dulitman вне форума  
 
Непрочитано 13.02.2012, 10:07
#18
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Под твою конкретную ситуацию можно попробовать
такой вариант
Код:
[Выделить все]
;;================================== <KADASTR.lsp> ================================;;

(defun C:KADASTR(/ ent fn fname i line pts texts tmp x)
  
(defun split  (txt sep)
  (if (not (eq sep txt))
    (if	(setq pos (vl-string-search sep txt 0))
      (cons (substr txt 1 pos)
	    (split (substr txt (+ pos 1 (strlen sep))) sep))
      (list txt)) )
  )

  
  (defun emake-pline (pts)
    (entmake
      (append (list (cons 0  "LWPOLYLINE")
		(cons 100  "AcDbEntity")
		(cons 100  "AcDbPolyline")
		(cons 90 (length pts))
		(cons 70  129))
              (mapcar '(lambda (pt)
			(cons 10 pt)) pts)
      )
    )
  )
  
(setq fname	(getfiled "---  Выбрать файл данных  ---:" (getvar "dwgprefix") "csv;txt" 4) )
(setq fn (open fname "R"))

(while (setq line (read-line fn))
  (setq tmp (split line "\t"))
  (setq pts (append pts (list tmp)))
  )
(close fn)

(setq pts (mapcar '(lambda(x)
		     (list (car x)(distof (vl-string-translate  "," "."(cadr x)) 2)
			   (distof (vl-string-translate  "," "."(last x))2)))
		  pts)
      )
(emake-pline (mapcar 'cdr pts))
(command "_zoom" "_OB" (entlast) "")
(setq texts (mapcar 'car pts))
(setq i -1)
(foreach pt pts
      (setq ent (entmakex
                  (list (cons 0 "TEXT")
                        (cons 10 (cdr pt))
                        (cons 40 2.0 );<-- высота текста
                        (cons 7 (getvar "TEXTSTYLE"))
                        (cons 1 (nth (setq i (1+ i)) texts))
                  )
                )
      )
  )
  (princ)
  )
(princ
  "\n\t\t---Команда на выполнение KADASTR\t---")
(prin1)

;;================================== </KADASTR.lsp> ================================;;
Олег (jr.) вне форума  
 
Непрочитано 13.02.2012, 10:43
#19
Dulitman


 
Регистрация: 03.05.2011
Сообщений: 35


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Под твою конкретную ситуацию можно попробовать
такой вариант
Код:
[Выделить все]
;;================================== <KADASTR.lsp> ================================;;

(defun C:KADASTR(/ ent fn fname i line pts texts tmp x)
  
(defun split  (txt sep)
  (if (not (eq sep txt))
    (if	(setq pos (vl-string-search sep txt 0))
      (cons (substr txt 1 pos)
	    (split (substr txt (+ pos 1 (strlen sep))) sep))
      (list txt)) )
  )

  
  (defun emake-pline (pts)
    (entmake
      (append (list (cons 0  "LWPOLYLINE")
		(cons 100  "AcDbEntity")
		(cons 100  "AcDbPolyline")
		(cons 90 (length pts))
		(cons 70  129))
              (mapcar '(lambda (pt)
			(cons 10 pt)) pts)
      )
    )
  )
  
(setq fname	(getfiled "---  Выбрать файл данных  ---:" (getvar "dwgprefix") "csv;txt" 4) )
(setq fn (open fname "R"))

(while (setq line (read-line fn))
  (setq tmp (split line "\t"))
  (setq pts (append pts (list tmp)))
  )
(close fn)

(setq pts (mapcar '(lambda(x)
		     (list (car x)(distof (vl-string-translate  "," "."(cadr x)) 2)
			   (distof (vl-string-translate  "," "."(last x))2)))
		  pts)
      )
(emake-pline (mapcar 'cdr pts))
(command "_zoom" "_OB" (entlast) "")
(setq texts (mapcar 'car pts))
(setq i -1)
(foreach pt pts
      (setq ent (entmakex
                  (list (cons 0 "TEXT")
                        (cons 10 (cdr pt))
                        (cons 40 2.0 );<-- высота текста
                        (cons 7 (getvar "TEXTSTYLE"))
                        (cons 1 (nth (setq i (1+ i)) texts))
                  )
                )
      )
  )
  (princ)
  )
(princ
  "\n\t\t---Команда на выполнение KADASTR\t---")
(prin1)

;;================================== </KADASTR.lsp> ================================;;
Спасибо! Уже нанёс, но сейчас твой вариант буду тестить!

Всё работает! Ещё раз спасибо!
Dulitman вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > построение линии через имеющийся список точек

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Построение точек по координатам полученным из уравнения Ishikawa Программирование 2 22.01.2009 15:51
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47
Команда _pline и список точек переменной длины Fogel Программирование 8 19.01.2007 14:08
Список цветов и веса линии DANZZ Программирование 6 13.09.2006 11:37