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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как считать в AutoLisp фигуру с AutoCad

Как считать в AutoLisp фигуру с AutoCad

Ответ
Поиск в этой теме
Непрочитано 11.04.2012, 17:29 #1
Как считать в AutoLisp фигуру с AutoCad
ilia22
 
Регистрация: 11.04.2012
Сообщений: 15

Есть чертеж в Autocad. Для примера любой многоугольник. Нужно занести размеры фигуры из пространства модели в AutoLisp/ Работаю в 6-м AutoCad. Если кто знает как делать подскажите. Или скиньте листинг.
Просмотров: 2930
 
Непрочитано 11.04.2012, 19:01
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Шо, опять? Вам на парах так и объясняют?
gomer вне форума  
 
Автор темы   Непрочитано 11.04.2012, 19:49
#3
ilia22


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


Эт не по учебе. Эт по работе.
ilia22 вне форума  
 
Непрочитано 11.04.2012, 20:01
#4
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от ilia22 Посмотреть сообщение
Эт по работе.
так что за фигура? из скольки пальцев?
Цитата:
Сообщение от ilia22 Посмотреть сообщение
Если кто знает как делать подскажите
Как-то знают, а вот ЧТО? покрыто звездной пылью
gomer вне форума  
 
Автор темы   Непрочитано 11.04.2012, 20:10
#5
ilia22


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


"Для примера любой многоугольник". Если такой дотошный то неправильный семиугольник. Мне важен сам принцип считывания координат
ilia22 вне форума  
 
Непрочитано 11.04.2012, 21:14
#6
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от ilia22 Посмотреть сообщение
"Для примера любой многоугольник". Если такой дотошный то неправильный семиугольник. Мне важен сам принцип считывания координат
Он не дотошный!
Вопрос в том, из какого примитива акада надо вытащить площадь.
Если сложно ответить, то просто приложи файл с семиугольником или опиши более подробно, что ты называешь фигурой.

как пример, многоугольник можно нарисовать:
1. отдельными линиями, причем не все вершины будут совпадать
2. Полилинией
3. линиями
4. трехмерной полилинией
5. регионом
6. штриховкой без контура
7. наложением нескольких солидов - те, которые 2д
8. то же, но в блоке или внешей ссылке

наверное, можно придумать еще много вариантов, как изобразить в акаде неправильный семиугольник. Но для каждого случая, подход к вычислению площади будет свой...
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Автор темы   Непрочитано 11.04.2012, 21:24
#7
ilia22


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


полилиния. без штриховки в пространстве модели
ilia22 вне форума  
 
Непрочитано 11.04.2012, 21:51
#8
Дима_

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


А поискать "координаты вершин поллилинии" не пробовал.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 11.04.2012, 22:08
#9
ilia22


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


нужна программа на лиспе, которая будет считывать координаты
ilia22 вне форума  
 
Непрочитано 11.04.2012, 22:18
#10
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


(massoc 10 (entget (car (entsel))))
gomer вне форума  
 
Непрочитано 12.04.2012, 06:32
#11
Дима_

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


Цитата:
Сообщение от ilia22 Посмотреть сообщение
Эт не по учебе. Эт по работе.
А для чего вам "по работе" координаты внутри программы, мне с трудом вериться, что Вы сделали "интерфейс", который что-то выполнет с координатами, а справиться с их получением не можете.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 12.04.2012, 10:20
#12
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


Код:
[Выделить все]
 (defun c:getxy	(/ x00 x01 x02)
  (while (not (and (setq x00 (car (entsel "\nВыберите полилинию...")))
		   (eq "LWPOLYLINE" (cdr (assoc 0 (setq x00 (entget x00))))))))
  (setq x01 (list))
  (repeat (cdr (assoc 90 x00))
    (setq x01 (append x01 (list (cdr (setq x02 (assoc 10 x00)))))
	  x00 (cdr (member x02 x00))))
  (princ x01)
  (princ))
Координаты выводит на экран списком, не проверяет на совпадение вершин Вообще, предыдущие высказывания правомерны, задачу нужно описывать четко
ciril вне форума  
 
Автор темы   Непрочитано 20.04.2012, 18:58
#13
ilia22


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


ciril спасибо за помощь. вот только еще возникло несколько вопросов. Почему то не сравниваются координаты
Код:
[Выделить все]
 (defun c:get (/ x00 x01 x02)
 (while (not (and (setq x00 (car (entsel "\n Âûáåðèòå ïîëèëèíèþ")))
          (eq "LWPOLYLINE" (cdr (assoc 0 (setq x00 (entget x00)))))))) ;âûáèðàåì ïîëèëèíèþ
 (setq x01 (list)
       x01 (cdr (setq x02 (assoc 10 x00)))
       x000 x00
       x00 (cdr (member x02 x00))			;ñïèñîê îñòàâøèõñÿ êîîðäèíàò
       x_start_1 (car x01)				;ïåðâàÿ êîîðäèíàòà
       y_start_1 (car(cdr x01))
       x_prev x_start_1					;äëÿ âòîðîé òî÷êè âûñòàâëÿåì ïðåäóùóþ êîîðäèíàòó
       y_prev y_start_1
       )
 (setq x01 (cdr (setq x02 (assoc 10 x00)))
       x00 (cdr (member x02 x00))			;ñïèñîê îñòàâøèõñÿ êîîðäèíàò
       x_start_2 (car x01)	;âòîðàÿ êîîðäèíàòà
       y_start_2 (car(cdr x01))
       x_shield1 x_start_2				
       y_shield1 y_start_2
       )
 (setq x01 (cdr (setq x02 (assoc 10 x00)))
       x00 (cdr (member x02 x00))			;ñïèñîê îñòàâøèõñÿ êîîðäèíàò
       x_start_3 (car x01)	;òðåòüÿ êîîðäèíàòà
       y_start_3 (car(cdr x01))
       x_shield2 x_start_3				
       y_shield2 y_start_3
       )
 (repeat (-(cdr (assoc 90 x000))3)
   (setq x01 (cdr (setq x02 (assoc 10 x00))) 	;áóäóùàÿ êîîðäèíàòà
	 x00 (cdr (member x02 x00))		;ñïèñîê îñòàâøèõñÿ êîîðäèíàò
	 x_next (car x01)
	 y_next (car(cdr x01)))
   (if (and(/= x_next x_shield2)(/= y_next y_shield2))
     (print
        (alert "/=")
	(print x_shield2)
	(prin1 )
	(prin1 y_shield2)
	(print x_next)
	(prin1 )
	(prin1 y_next)
     )
     )
  (setq x_prev x_shield1
	y_prev y_shield1
	x_shield1 x_shield2
	y_shield1 y_shield2
	x_shield2 x_next
	y_shield2 y_next)

   )
  )
Рисунок который считываю приложил
Вложения
Тип файла: dwg
DWG 2004
Рисунок1.dwg (21.3 Кб, 864 просмотров)
ilia22 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как считать в AutoLisp фигуру с AutoCad



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правило формирование записей в реестре об установленных обновлениях для AutoCAD и его вертикальных решений. hwd Программирование 8 30.09.2010 15:07
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59
О создании темы (раздела) для новичков в AutoCAD. Profan Разное 110 23.10.2008 10:01
Как считать координаты курсора относительно окна AutoCAD? Spirit Программирование 4 25.10.2007 08:50