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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP создание списка из text

LISP создание списка из text

Ответ
Поиск в этой теме
Непрочитано 25.02.2011, 17:16 #1
LISP создание списка из text
4ertegn1k
 
Регистрация: 20.12.2010
Сообщений: 35

Добрый день.
Проблема есть такого плана. Есть готовый чертеж dwg , в котором есть много наборов text , вроде R1 C23 X3 и так далее.
Есть спецификация, в которой есть перечень тех же самых элементов.
Хочу сделать через LISP список из этого текста, чтобы потом его можно было бы сравнить с другим списком из спецификации и сказать, что они одинаковы. Или различаются в таких-то позициях.
Что скажете хорошего по этому поводу?
Просмотров: 5328
 
Непрочитано 25.02.2011, 18:04
#2
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Теоретически набрать список из текстовых примитивов несложно.
Что касается сравнения его с другим списком, то тут задача сложнее, так как самое главное правила по которым эти списки составлялись, и по каким параметрам они будут сравниваться...
Я не знаю зачем Вы это хотите делать... Но наверное правильнее делать спецификации по информации чертежа...
Обычно вместо текстов употребляют атрибуты... как примитивы, имеющий более высокий коэффициент наполнения информацией и имеющие средства для извлечения их из чертежа.
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...

Последний раз редактировалось Alan, 25.02.2011 в 23:03.
Alan вне форума  
 
Непрочитано 25.02.2011, 23:50
#3
Дима_

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


Цитата:
Сообщение от 4ertegn1k Посмотреть сообщение
Хочу сделать через LISP список из этого текста...
Код:
[Выделить все]
 
(mapcar '(lambda (ent) 
           (cdr (assoc 1 (entget ent))))
        (vl-remove-if  'listp
          (mapcar 'cadr 
             (ssnamex (ssget (list (cons 0 "*text")))))))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 26.02.2011, 05:40
#4
Disney

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


А потом к списку можно применить
Код:
[Выделить все]
 (defun group-by-value (lst / ret tmp)
  (while (car lst)
    (setq tmp (list (vl-remove-if-not
		      (function	(lambda	(a)
				  (equal a (car lst) 1e-12)
				)
		      )
		      lst
		    )
	      )
    )
    (setq ret (cons (car tmp) ret))
    (setq lst (vl-remove-if
		(function (lambda (a)
			    (equal a (car lst) 1e-12)
			  )
		)
		lst
	      )
    )
    (setq tmp nil)
  )
  (setq	ret (mapcar (function (lambda (x)
				(list (car x) (length x))
			      )
		    )
		    (reverse ret)
	    )
  )
)
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Непрочитано 26.02.2011, 18:52
#5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Дима_, группы 3 для MTEXT'ов забыл.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 28.02.2011, 09:11
#6
4ertegn1k


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


Alan - согласен, что я бы сделал это немного по другому, но дело в том, что получаю в виде исходных данных чертеж и спецификацию, выполненных двумя разными людьми, и мне надо точно видеть, что одно соответствует другому. Чертежи есть маленькие, на 7-12 элементов, там несложно, но попадаются мастодонты на три с половиной сотни. Беру распечатанный чертеж и нахожу вручную по спецификации, для наглядности заштриховываю элемент за элементом. Долго и нудно. Вот и хочу это дело ускорить. С рутиной же надо бороться!

Dima_ и Disney - спасибо, буду разбираться, потому как хочу узнать, как оно работает. Позже расскажу, что получилось!
4ertegn1k вне форума  
 
Автор темы   Непрочитано 05.03.2011, 11:56
#7
4ertegn1k


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


Пробую разобраться в предложенных листингах и написать свой.
Пока всё туманно....
Сделал такую программку, которая создаёт список всех имен примитивов, которые есть в чертеже. Работает, но на маленьких чертежах, как-то 3-5-7 примитивов. Когда запускаю её на более-менее серьёзные чертежи - просто виснет.
Интересно, почему?

(defun c:spisok ()

(setq s1 nil) ; Список, куда записываются имена примитивов
(setq x1 nil) ; Переменная

(setq x1 (entnext))
(while x1
(entget x1)
(setq s1 (cons x1 s1))
(setq x1 (entnext x1))

)

)
4ertegn1k вне форума  
 
Непрочитано 05.03.2011, 12:02
#8
Лиспер


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


Код:
[Выделить все]
 (defun s:spisok(/ x1 s1)
(while (setq x1 (entnext))
(setq s1 (cons x1 s1)))
; <...>
(princ)
)
Как-то так... Только что ты хочешь с этим списком делать?
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 05.03.2011, 12:15
#9
4ertegn1k


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


А из него надо извлечь все примитивы, которые есть text.
Только у меня так быстро не получается
4ertegn1k вне форума  
 
Непрочитано 05.03.2011, 12:34
#10
Лиспер


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


А не проще будет в таком случае выполнить (ssget "_X" '((0 . "TEXT"))) и его преобразовывать в список? Или надо проходить еще и по составу блоков и внешних ссылок?
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 09.03.2011, 15:32
#11
4ertegn1k


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


Лиспер - замечание принимается! Действительно, это будет логично.
4ertegn1k вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP создание списка из text



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AUTOCAD 2010 перестал переключаться в многооконный режим. Проблемы с переменными Андрей Х. AutoCAD 24 27.05.2015 10:17
Express Tools Perezz!! AutoCAD 483 13.02.2015 10:57
перенос данных и автокада в эксель evg76 Программирование 31 29.10.2013 14:55
Копирование Мтекста с изменением №-ра копии Positron AutoCAD 4 17.08.2012 00:44
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33