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

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

лисп заменяющий определённые блоки в произвольном фрагменте чертежа?

Ответ
Поиск в этой теме
Непрочитано 24.09.2010, 00:00 #1
лисп заменяющий определённые блоки в произвольном фрагменте чертежа?
SilvioManuel
 
Регистрация: 11.08.2010
Сообщений: 124

Задача: существует большая карта и на ней необходимо в определённом фрагменте, выбрав рамкой набор разных объектов поменять одни блоки на другие.
Как это сделать не меняя всех подпобных блоков на карте? Существует ли такой лисп?
Просмотров: 2255
 
Непрочитано 24.09.2010, 03:33
#2
vadim_evg1


 
Регистрация: 08.01.2007
Рус
Сообщений: 398


Есть такие.
один из примеров:

команда ad-ren-i

[IMG]http://i064.***********/1009/b1/560750ac5395.gif[/IMG]

Последний раз редактировалось vadim_evg1, 24.09.2010 в 03:41. Причина: форум затупил, картинку не загружал
vadim_evg1 вне форума  
 
Автор темы   Непрочитано 24.09.2010, 13:34
#3
SilvioManuel


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


буду благодарен за корректные ссылки. Выражусь правильнее: чобы при запуске команды вылазило окошко с опциями типа:
1. выбираемый блок (имя)
2. заменить на (имя)
3. применить ко всему чертежу
4. применить к выделенному набору (что в общем то и нужно)


P.S.: Большое человеческое спасибо заранее

Последний раз редактировалось SilvioManuel, 24.09.2010 в 13:51.
SilvioManuel вне форума  
 
Непрочитано 24.09.2010, 14:47
#4
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010


http://www.caduser.ru/forum/index.ph...D=44&TID=21135
Nike вне форума  
 
Непрочитано 28.09.2010, 14:40
#5
Psyakrev


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


Цитата:
Сообщение от Nike Посмотреть сообщение
В конце указанной темы участники решили перебратья на dwg.ru - забавная получается рекурсия.
Попробовал код из сообщения #25 - все равно не то, исходный блок просто заменился на выбранный со всеми атрибутами, в таком случае проще не заморачиваться с лиспами, а банально скопировать блок.
Если честно, удивлен - вроде бы простая задача заменить выбранные блоки с сохранением атрибутов и базовой точки, а красивого решения нет.
Psyakrev вне форума  
 
Непрочитано 28.09.2010, 15:01
#6
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010


Psyakrev
Если атрибуты совпадают:
Код:
[Выделить все]
(defun c:blrevers (/ a b)
  (and (setq a (car (entsel "\nВыберите исходный блок: ")))
       (setq a (entget a))
       (while (and (= (cdr (assoc 0 a)) "INSERT")
                   (setq b (car (entsel "\nВыберите изменяемый блок: ")))
                   (setq b (entget b))
                   (= (cdr (assoc 0 b)) "INSERT")
                   (entmod (vl-remove (assoc 330 b) (subst (assoc 2 a) (assoc 2 b) b)) ;_ vl-remove
                   ) ;_ entmod
              ) ;_ and
       ) ;_ while
  ) ;_ and
  (princ)
) ;_ defun
Nike вне форума  
 
Непрочитано 28.09.2010, 15:25
#7
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от Psyakrev Посмотреть сообщение
проще не заморачиваться с лиспами, а банально скопировать блок.
интересная мысль, Psyakrev, а если у вас на чертеже эдак несколько сотен или тысяч вхождений блока который нужно заменить, хотел бы я посмотреть на процесс "банально скопировать"


Цитата:
Сообщение от Psyakrev Посмотреть сообщение
Если честно, удивлен - вроде бы простая задача заменить выбранные блоки с сохранением атрибутов и базовой точки, а красивого решения нет.
Psyakrev еще интереснее. Nike привел решение при совпадении атрибутов, а вот если они разные у исходного блока и блока на который надо заменить, тогда что на что заменять "простая задача"
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 29.09.2010, 08:43
#8
Psyakrev


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


TararykovDG
если мне понадобится заменить все вхождения блока - на помощь придет Express Tools. А если мне нужно заменить только одно либо несколько вхождений (но не все)? Сохранение атрибутов - при их совпадении естественно, остальные пусть обнуляются.
В моем случае, на чертеже несколько устройств А, блоки А имеют один атрибут - обозначение. Как заменить тип блока с А на Б для одного устройства с минимальными затратами труда (блок Б отличается от блока А только графикой, размеры и атрибут сохраняются)? Обозначение естественно должно сохраниться.

Nike
Спасибо, то, что нужно. А можно еще сделать выбор исходного блока в виде списка блоков, описания которых есть в чертеже?
Psyakrev вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > лисп заменяющий определённые блоки в произвольном фрагменте чертежа?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен лисп заменяющий publish на принтер указанный в page setup Red Nova LISP 12 01.09.2008 17:17