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

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

Как имея массив точек создать полилинию по ним?

Ответ
Поиск в этой теме
Непрочитано 18.06.2009, 10:28 #1
Как имея массив точек создать полилинию по ним?
emilko
 
Регистрация: 18.06.2009
Сообщений: 11

Здравствуйте, как отрисовать полилинию по точкам, если шаг точек 0,1? Вручную тратится много времени.

К примеру, если нарисовать дугу и разметить используя Рисование-> Точка ->Разметить и длину сегмента указать 0,1, как теперь получить из этого полилинию, обводить не вариант.

Может можно как-то по координатам этих точек ее построить? Тогда как это реализовать?
Просмотров: 11270
 
Непрочитано 18.06.2009, 11:42
#2
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,187
<phrase 1=


О!
http://forum.dwg.ru/showthread.php?t...ED%E0%F2%E0%EC
Создание графика в AutoCAD на основе txt или xls файла

и наооборот
http://forum.dwg.ru/showthread.php?t...F2%EE%F7%E5%EA
Экспорт координат выбранных точек в *.txt

ПОЙДЕТ???
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 18.06.2009, 11:44
#3
AlphaGeo


 
Сообщений: n/a


emilko, может это Вам поможет?
отрисовка примитивов по координатам из файла
Создание графика в AutoCAD на основе txt или xls файла
Создать файл с координатами точек можно с помощью Извлечения данных (_DATAEXTRACTION).
 
 
Непрочитано 18.06.2009, 12:07
#4
Victor


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


Выбираем ВСЕ точки а потом точку с которой начнём полилинию
Soedinyaet tochki polyliniey
Код:
[Выделить все]
(defun c:plpn( / snp nameset frstblc runblk korfir setlength
                nirnam nirest kornir disnir brun korrun disrun
                spis spold oldname oldspis fin k firstblc)
 (setq snp (getvar "Osmode"))
 (setvar "Osmode" 0) 
 (setq nameset (ssget "_:L" '(( 0 . "POINT")))); imya nabora
 (setq frstblc (car (entsel "Select First Block"))); imya pervovo bloka
 (setq i 0) 
 (setq runblk (ssname nameset 0)); imya nulevogo
  (while         ; ishem pervi blok i udalyaem ego
     (not(equal runblk frstblc))  
     (setq i (1+ i))
     (setq runblk (ssname nameset i)); imya po nomeru
  ); konec while
 (if (equal runblk frstblc)  
            (ssdel runblk nameset)
 );konec if nashli i udalili
 (setq korfir (cdr(assoc 10 (entget frstblc)))); koord pervogo bloka(x Y)
 (setq setlength (sslength nameset)); dlina nabora
 (setq nirnam (ssname nameset 0)); imya nulevogo
 (setq nirest (entget nirnam)); spisok nulevogo
 (setq kornir (cdr (assoc 10 nirest))); koordinati nulevogo(X Y)
 (setq disnir (distance kornir korfir)); rastoyanie 1-0
 (setq i 0)
 (setq setlength (1- setlength))
   (repeat setlength
     (setq i (1+ i))
     (setq brun (entget(ssname nameset i))); spisok i
     (setq korrun (cdr (assoc 10 brun))); koordinati run(X Y) 
     (setq disrun (distance korrun korfir)); rastoyanie 1-i
     (if (< disrun disnir) 
              (progn
                    (setq disnir disrun); distanciya
                    (setq nirest brun); spisok nirest
                    (setq kornir korrun) 
              ); konec progn           
     ); konec if
   ); konec repeat
 (setq kornir (cdr (assoc 10 nirest))); koordinati nierest(X Y)
 (setq spis (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")
                          '(90 . 15) (append '(10)  korfir) (append '(10) kornir)))
 (setq spold (entmake spis))
 (setq oldname (entlast)); imya poslednego
 (setq oldspis (entget oldname)); spisok poslednego
 (setq fin (last oldspis))
 (setq k  (sslength nameset)); dlina nabora
 (setq k (1- k))
 (repeat k
  (ssdel (cdr (car nirest)) nameset)
  (setq firstblc nirest)
  (setq korfir (cdr(assoc 10 firstblc))); koord pervogo bloka(x Y)
  (setq setlength (sslength nameset)); dlina nabora
  (setq nirnam (ssname nameset 0)); imya nulevogo
  (setq nirest (entget nirnam)); spisok nulevogo
  (setq kornir (cdr (assoc 10 nirest))); koordinati nulevogo(X Y)
  (setq disnir (distance kornir korfir)); rastoyanie 1-2
  (setq i -1)
   (repeat setlength
     (setq i (1+ i))
     (setq brun (entget(ssname nameset i))); spisok i
     (setq korrun (cdr (assoc 10 brun))); koordinati next(X Y) 
     (setq disrun (distance korrun korfir)); rastoyanie 1-i
     (if (< disrun disnir) 
              (progn
                    (setq disnir disrun)
                    (setq nirest brun)
                    (setq kornir korrun)
              ); konec progn
     ); konec if
   ); konec repeat
  (setq oldspis (append oldspis (list (append '(10) kornir))))
  (setq oldspis (entmod oldspis)) 
  (entupd (entlast))
  (setq oldspis (entget(entlast)))
 ); konec repeat
(setvar "Osmode" snp) 
); konec defun

Последний раз редактировалось Кулик Алексей aka kpblc, 18.06.2009 в 23:36. Причина: Тэги [code] придуманы не просто так!
Victor вне форума  
 
Непрочитано 18.06.2009, 12:14
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
К примеру, если нарисовать дугу и разметить используя Рисование-> Точка ->Разметить и длину сегмента указать 0,1, как теперь получить из этого полилинию, обводить не вариант.
Используя pltools есть 2 варианта:
1. ConvTo2d -Преобразование линейных объектов в 2D полилинии
2. С помощью _pedit преобразуешь дугу в полилинию. Дальше
PL-NoArc -Аппроксимация дуговых сегментов полилинии.

Цитата:
Команда: PL-NoArc
Выберите режим апроксимации дуговых сегментов
[количество сегментов N/длина сегмента L/предельное отклонение хорды S/длина хорды C/помощь H]:
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 18.06.2009, 13:47
#6
emilko


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


Цитата:
Сообщение от Victor Посмотреть сообщение
Выбираем ВСЕ точки а потом точку с которой начнём полилинию
Soedinyaet tochki polyliniey
(defun clpn( / snp nameset frstblc runblk korfir setlength
nirnam nirest kornir disnir brun korrun disrun
spis spold oldname oldspis fin k firstblc)
(setq snp (getvar "Osmode"))
(setvar "Osmode" 0)
(setq nameset (ssget "_:L" '(( 0 . "POINT")))); imya nabora
(setq frstblc (car (entsel "Select First Block"))); imya pervovo bloka
(setq i 0)
(setq runblk (ssname nameset 0)); imya nulevogo
(while ; ishem pervi blok i udalyaem ego
(not(equal runblk frstblc))
(setq i (1+ i))
(setq runblk (ssname nameset i)); imya po nomeru
); konec while
(if (equal runblk frstblc)
(ssdel runblk nameset)
);konec if nashli i udalili
(setq korfir (cdr(assoc 10 (entget frstblc)))); koord pervogo bloka(x Y)
(setq setlength (sslength nameset)); dlina nabora
(setq nirnam (ssname nameset 0)); imya nulevogo
(setq nirest (entget nirnam)); spisok nulevogo
(setq kornir (cdr (assoc 10 nirest))); koordinati nulevogo(X Y)
(setq disnir (distance kornir korfir)); rastoyanie 1-0
(setq i 0)
(setq setlength (1- setlength))
(repeat setlength
(setq i (1+ i))
(setq brun (entget(ssname nameset i))); spisok i
(setq korrun (cdr (assoc 10 brun))); koordinati run(X Y)
(setq disrun (distance korrun korfir)); rastoyanie 1-i
(if (< disrun disnir)
(progn
(setq disnir disrun); distanciya
(setq nirest brun); spisok nirest
(setq kornir korrun)
); konec progn
); konec if
); konec repeat
(setq kornir (cdr (assoc 10 nirest))); koordinati nierest(X Y)
(setq spis (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")
'(90 . 15) (append '(10) korfir) (append '(10) kornir)))
(setq spold (entmake spis))
(setq oldname (entlast)); imya poslednego
(setq oldspis (entget oldname)); spisok poslednego
(setq fin (last oldspis))
(setq k (sslength nameset)); dlina nabora
(setq k (1- k))
(repeat k
(ssdel (cdr (car nirest)) nameset)
(setq firstblc nirest)
(setq korfir (cdr(assoc 10 firstblc))); koord pervogo bloka(x Y)
(setq setlength (sslength nameset)); dlina nabora
(setq nirnam (ssname nameset 0)); imya nulevogo
(setq nirest (entget nirnam)); spisok nulevogo
(setq kornir (cdr (assoc 10 nirest))); koordinati nulevogo(X Y)
(setq disnir (distance kornir korfir)); rastoyanie 1-2
(setq i -1)
(repeat setlength
(setq i (1+ i))
(setq brun (entget(ssname nameset i))); spisok i
(setq korrun (cdr (assoc 10 brun))); koordinati next(X Y)
(setq disrun (distance korrun korfir)); rastoyanie 1-i
(if (< disrun disnir)
(progn
(setq disnir disrun)
(setq nirest brun)
(setq kornir korrun)
); konec progn
); konec if
); konec repeat
(setq oldspis (append oldspis (list (append '(10) kornir))))
(setq oldspis (entmod oldspis))
(entupd (entlast))
(setq oldspis (entget(entlast)))
); konec repeat
(setvar "Osmode" snp)
); konec defun
какую команду писать в Автокаде? lpn - пишет ошибка

Последний раз редактировалось emilko, 18.06.2009 в 13:59.
emilko вне форума  
 
Непрочитано 18.06.2009, 13:58
#7
AlphaGeo


 
Сообщений: n/a


Victor, видимо, забыл BBCode отключить. И строка
Цитата:
(defun clpn( / snp nameset frstblc runblk korfir setlength
все же должна выглядеть вот так:
Код:
[Выделить все]
(defun c:plpn( / snp nameset frstblc runblk korfir setlength
Т.е. команда для LISP - plpn?
 
 
Непрочитано 18.06.2009, 14:05
#8
skif58

Наше дело труба
 
Регистрация: 19.11.2006
Томск_Комсомольск-на-Амуре
Сообщений: 1,736
<phrase 1= Отправить сообщение для skif58 с помощью Yahoo Отправить сообщение для skif58 с помощью Skype™


Цитата:
Сообщение от AlphaGeo Посмотреть сообщение
Т.е. команда для LISP - plpn?
Ага, имхо, это программисты так шутят.
__________________
*...И Случай, бог изобретатель. *
skif58 вне форума  
 
Непрочитано 19.06.2009, 09:46
#9
Victor


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


Просто я не знаю ещё как с этими штуками обращаться. Какие там программисты...
Victor вне форума  
 
Автор темы   Непрочитано 19.06.2009, 23:15
#10
emilko


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


Спасибо всем, все получилось.)
emilko вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как имея массив точек создать полилинию по ним?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать анонимный блок? Shoorup Программирование 18 18.06.2014 14:11
Строительный брус. Как создать сборку в Компасе? kop4enyi Компас 7 22.05.2009 05:24
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Как создать презентацию из файла Archicad 10 Иван 80 ArchiCAD 7 28.04.2008 11:46