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

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

Перевод текста "х" в слой с названием "х".

Ответ
Поиск в этой теме
Непрочитано 09.02.2009, 19:08 #1
Перевод текста "х" в слой с названием "х".
archi2002
 
Ufa
Регистрация: 23.08.2007
Сообщений: 10

Доброго времени суток , уважаемые форумчане!
Работаю в 2007 акаде. Возникла необходимость перевода текста , в слой с таким же названием. Например: на чертеже есть текст 5560, 2030, 1040,...нужно , чтобы текст 5560 стал слоем "5560", 2030-слоем "2030",1040-слоем "1040"...Возможно, кто-нибудь встречал , или имеет такой лисп. Нужен , как воздух. Спасибо.
Просмотров: 3253
 
Непрочитано 09.02.2009, 19:14
#2
Солидворкер
Moderator

Конструктор (машиностроение)
 
Регистрация: 23.10.2006
Россия
Сообщений: 23,283
<phrase 1=


Поскольку нужен Лисп, перенес в Программирование
Солидворкер вне форума  
 
Непрочитано 09.02.2009, 23:33
#3
Дима_

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


Что есть текст? одностройчный, многостроячный, выноски, параметр размерной строки, атрибут блока. Пример файла был бы тоже не лишним.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 10.02.2009, 05:33
#4
archi2002


 
Регистрация: 23.08.2007
Ufa
Сообщений: 10


Текст однострочный. Пример файла прилагаю.
Вложения
Тип файла: dwg
DWG 2004
111.dwg (66.4 Кб, 282 просмотров)

Последний раз редактировалось archi2002, 10.02.2009 в 05:58. Причина: Замена вложенного файла
archi2002 вне форума  
 
Непрочитано 10.02.2009, 10:50
#5
Дима_

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


Другое дело:
Код:
[Выделить все]
(defun sstolist (ss / i lst); конвертирует набор в список
(setq i 0)
(if ss
(repeat (sslength ss)
(setq lst (append lst (list (ssname ss i))) i (1+ i))
));end of repeat & if
lst
);end of sstolist
(defun c:texttolay ()
(mapcar '(lambda (text)
(if (/= (cdr (assoc 1 (entget text))) "") (entmod (subst (cons 8 (cdr (assoc 1 (entget text)))) (assoc 8 (entget text)) (entget text))))
);end of lambda
(sstolist (ssget (list (cons 0 "*text")))))
);end of texttolay
запускать командой texttolay
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 10.02.2009, 14:03
#6
archi2002


 
Регистрация: 23.08.2007
Ufa
Сообщений: 10


То , что нужно Дима. Респект и большое человеческое спасибо.
archi2002 вне форума  
 
Непрочитано 23.05.2009, 18:22 Перевод текста "х" в слой с названием "х" помогите доработать
#7
Шмуль


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


В вопросе Перевод текста "х" в слой с названием "х" автор archi2002 просил цитата:


(Доброго времени суток , уважаемые форумчане!
Работаю в 2007 акаде. Возникла необходимость перевода текста , в слой с таким же названием. Например: на чертеже есть текст 5560, 2030, 1040,...нужно , чтобы текст 5560 стал слоем "5560", 2030-слоем "2030",1040-слоем "1040"...Возможно, кто-нибудь встречал , или имеет такой лисп. Нужен , как воздух. Спасибо.)

Был написан лисп авторДима_(defun sstolist (ss / i lst); конвертирует набор в список
(setq i 0)
(if ss
(repeat (sslength ss)
(setq lst (append lst (list (ssname ss i))) i (1+ i))
));end of repeat & if
lst
);end of sstolist
(defun c:texttolay ()
(mapcar '(lambda (text)
(if (/= (cdr (assoc 1 (entget text))) "") (entmod (subst (cons 8 (cdr (assoc 1 (entget text)))) (assoc 8 (entget text)) (entget text))))
);end of lambda
(sstolist (ssget (list (cons 0 "*text")))))
);end of texttolayУ меня этот лисп тоже работает отлично, но если перед текстом стоит пробел, то лисп не работает. Можно ли дописать/переписать лисп для текста с пробелом. Текст односточный AutoCAD2008-2009 Спасибо!
Шмуль вне форума  
 
Непрочитано 24.05.2009, 11:27
#8
Дима_

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


Намек понял:
Код:
[Выделить все]
(defun sstolist (ss / i lst); конвертирует набор в список
(setq i 0)
(if ss
(repeat (sslength ss)
(setq lst (append lst (list (ssname ss i))) i (1+ i))
));end of repeat & if
lst
);end of sstolist
(defun erspac (text)
(if (= (substr text 1 1) " ")
(erspac (substr text 2))
text
);end of if
);end of erspac
(defun c:texttolay ()
(mapcar '(lambda (text)
(if (/= (cdr (assoc 1 (entget text))) "") (entmod (subst (cons 8 (erspac (cdr (assoc 1 (entget text))))) (assoc 8 (entget text)) (entget text))))
);end of lambda
(sstolist (ssget (list (cons 0 "*text")))))
);end of texttolay
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 24.05.2009, 13:22
#9
Шмуль


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


Все работает отлично! Огромный респект Дима_, удачи!!!
Шмуль вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Перевод текста "х" в слой с названием "х".



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12