dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > Замена одного блока другим

Замена одного блока другим

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 12.06.2010, 14:28 #1
Замена одного блока другим
Victor
 
Бат-Ям
Регистрация: 14.06.2009
Сообщений: 292

Victor вне форума Вставить имя

Наверняка не всё учёл, поэтому возможна доработка.
Замена блока на блок. Разместить оба файла надо в путях автокада.
В этой строке пишем свои блоки, которых нет в рисунке, но которые есть в путях автокада (setq nam_out '("a7" "a9" "a11" "a13" "a17" "a21" "a25" "a31"))
Можно изменить и эту строку (setq scl (list "0.1" "0.25" "0.5" "1.0" "2.5" "5.0" "10" "25" "100"))
Файл DCL
Код:
[Выделить все]
b2b : dialog {				
      label = "Replace block" ;		
: row {
     :column {
        :text{label="Replace block";}
     	: popup_list {				
        key = "block_in";			
        value = "0" ; width=15;				
        }					
             }
     :column {
        :text{label="Insert block";}
     	: popup_list {				
        key = "block_out";			        
        value = "0" ; width=15;				
        }		
             }
      }
     :text{label="Scale";}
     	: popup_list {				
        key = "scl_out";			        
        value = "3" ;alignment=centered;
        fixed_width=true; width=10;	
                     }
     ok_cancel ;								
              }
Файл Lisp
Код:
[Выделить все]
 
(defun replace( b_in b_out sc / ) 
(setq at_r (getvar "attreq"))
(setvar "attreq" 0)
(setq s_in (cons 2 b_in)) 
(if(/= nil (setq blokset (ssget "_:L" (list '( 0 . "INSERT") s_in)))) 
  (progn 
  (setq blklength (sslength blokset)) 
  (setq i -1 ) 
  (repeat blklength 
     (setq i (1+ i))       
     (setq name_blk (ssname blokset i)) 
     (setq spis_blk (entget name_blk)) 
     (setq kord_b   (cdr(assoc 10 spis_blk))) 
     (setq ugol (*(cdr(assoc 50 spis_blk)) 57.297469)) 
     (command "_.insert" b_out kord_b sc sc ugol) 
  ) ;repeat 
  (setq i -1) 
  (repeat blklength 
   (setq i (1+ i)) 
   (entdel (ssname blokset i)) 
  ) ;repeat 
  ) ;progn 
) ;if 
(setvar "attreq" at_r)
) 


(defun C:b2b ( / snp scl nam_out nam_in bl nm_bl f_nm ch_1 ch_2 ch_3 sc_b)					
  (command "_.undo" "_begin") 
  (setq snp (getvar "Osmode")) 
  (setvar "Osmode" 0) 					

  (setq scl (list "0.1" "0.25" "0.5" "1.0" "2.5" "5.0" "10" "25" "100"))

  (setq nam_out   '("a7" "a9" "a11" "a13" "a17" "a21" "a25" "a31"))
  
  (setq nam_in nil) 
  (setq bl (tblnext "BLOCK" T))
  (while (/= nil bl)
         (setq nm_bl (cdr(assoc 2 bl)))
         (setq f_nm (substr nm_bl 1 2))
         (if(/= "*U" f_nm)(setq nam_in (append nam_in (list nm_bl))))
         (setq bl (tblnext "BLOCK"))
   ) 
  (setq nam_out (append nam_out nam_in))
  (setq dcl_id (load_dialog "b2b.dcl"))		        
  (if (not (new_dialog "b2b" dcl_id)			
      );not
    (exit)						
  );if
  (start_list "block_in")				
  (mapcar 'add_list nam_in)				
  (end_list)						
  (start_list "block_out")			        	
  (mapcar 'add_list nam_out)				
  (end_list)		
 
  (start_list "scl_out")				
  (mapcar 'add_list scl)				
  (end_list)			

    (action_tile
    "cancel"						
    "(done_dialog) (setq userclick nil)"		
    );action_tile
  (action_tile
    "accept"						
    (strcat						
      "(progn 
       (setq ch_1 (atoi (get_tile \"block_in\"))
             ch_2 (atoi (get_tile \"block_out\"))	
             ch_3 (atoi (get_tile \"scl_out\")))"
      " (done_dialog)(setq userclick T))"		
    );strcat
  );action tile

  (start_dialog)					
  (unload_dialog dcl_id)				

   (if userclick					
    (progn				
      (setq ch_1 (nth ch_1 nam_in))					
      (setq ch_2 (nth ch_2 nam_out))
      (setq sc_b (nth ch_3 scl))
    );progn
   );if userclick

(replace ch_1 ch_2 sc_b) 

(setvar "Osmode" snp) 
(command "_.undo" "_end") 
);defun
(princ)

Последний раз редактировалось Кулик Алексей aka kpblc, 20.02.2011 в 22:29.
Просмотров: 21347
 
Непрочитано 13.06.2010, 06:23
#2
Valery Brelovsky

Инженер дорожник
 
Регистрация: 22.10.2007
Израиль
Сообщений: 1,825


Продолжим здесь, здесь даже лучше не искажается код. Нужно пороробовать. Вижу тут есть окно DCL.

P.s.В окне DCL есть три строки. Набор блоков на замену и масштаб. Но нужно выбрать блок на чертеже который заменить. С эти не понятно.
Вот прилагаю растр.
я перед эти запускал программу в пустом чертеже, в чертеже с набором блоков открывается список блоков чертежа. Но по моему программа заменит все выбранные блоки данного типа на другой тип блока?
Миниатюры
Нажмите на изображение для увеличения
Название: 2.jpg
Просмотров: 883
Размер:	56.3 Кб
ID:	40743  

Последний раз редактировалось Valery Brelovsky, 13.06.2010 в 07:06.
Valery Brelovsky вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 30.10.2010, 10:05
#3
dextron3

Фотограф
 
Регистрация: 01.01.2007
Алматы
Сообщений: 4,995


Valery Brelovsky, а какой командой запускается то окошко которое у вас на скриншоте?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 30.10.2010, 13:06
#4
Victor


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


Ух ты. Давно не заглядывал сюда. Запуск b2b. В первой колонке выбираем имя блока который хотим заменить. Во второй колонке выбираем имя блока на который хотим заменить. Жмём OK и выбираем блоки которые хотим заменить. Или выбираем весь чертёж, выберутся только блоки с указаным именем.
Victor вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.02.2011, 22:20
#5
Farest-1

Конструктор
 
Регистрация: 19.12.2005
Подольск
Сообщений: 43
Отправить сообщение для Farest-1 с помощью ICQ Отправить сообщение для Farest-1 с помощью Skype™


Цитата:
Сообщение от Victor Посмотреть сообщение
Ух ты. Давно не заглядывал сюда. Запуск b2b. В первой колонке выбираем имя блока который хотим заменить. Во второй колонке выбираем имя блока на который хотим заменить. Жмём OK и выбираем блоки которые хотим заменить. Или выбираем весь чертёж, выберутся только блоки с указаным именем.
У меня автокад_2011
Ошибка
Команда: _appload Replace block.LSP успешно загружено.
Команда: ; ошибка: no function definition: B_IN
Farest-1 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 21.02.2011, 12:19
#6
Victor


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


Попробуй так. 2011 сейчас нет под рукой. На 2010 работает. Затащи в пространство модели файл VLX .Запуск b2b.
Вложения
Тип файла: rar b2b.rar (2.1 Кб, 546 просмотров)
Victor вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.02.2011, 21:14
#7
Farest-1

Конструктор
 
Регистрация: 19.12.2005
Подольск
Сообщений: 43
Отправить сообщение для Farest-1 с помощью ICQ Отправить сообщение для Farest-1 с помощью Skype™


Цитата:
Сообщение от Victor Посмотреть сообщение
Попробуй так. 2011 сейчас нет под рукой. На 2010 работает. Затащи в пространство модели файл VLX .Запуск b2b.
Спасибо работает
Farest-1 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 25.02.2011, 10:14
#8
Farest-1

Конструктор
 
Регистрация: 19.12.2005
Подольск
Сообщений: 43
Отправить сообщение для Farest-1 с помощью ICQ Отправить сообщение для Farest-1 с помощью Skype™


Цитата:
Сообщение от Farest-1 Посмотреть сообщение
Спасибо работает
Наверное поторопился с ответом что работает (то есть до этого запустил окошко и закрыл дальше не проверял) .
Сегодня как раз нужно было заменить блоки на другие.
Делаю так Запуск b2b. В первой колонке выбираем имя блока который хотим заменить. Во второй колонке выбираем имя блока на который хотим заменить. Жмём OK и выбираем блоки которые хотим заменить.
В итоге он не выбирает блоки.

Команда: b2b
_.undo Текущие настройки: Авто = Вкл, Управление = Все, Объединить = Есть, Слой
= Есть
Количество отменяемых операций или [Авто/Управление/Начало/Конец/Метка/Обратно]
<1>: _begin
Команда:
Выберите объекты: найдено: 0
Выберите объекты: Противоположный угол: найдено: 0, всего: 0
Выберите объекты: Противоположный угол: найдено: 0, всего: 0
Выберите объекты: Противоположный угол: найдено: 0, всего: 0
Выберите объекты:
_.undo Текущие настройки: Авто = Вкл, Управление = Все, Объединить = Есть, Слой
= Есть
Количество отменяемых операций или [Авто/Управление/Начало/Конец/Метка/Обратно]
<1>: _end
Команда: nil
Farest-1 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 25.02.2011, 10:34
#9
Victor


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


Ну это интересно. А можно файл посмотреть
Victor вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 25.02.2011, 11:20
#10
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 132


А в чем отличие от Replace block with another block (blockreplace) из express`a?
angel-fear вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 25.02.2011, 11:28
#11
Nike

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


Цитата:
Сообщение от angel-fear Посмотреть сообщение
А в чем отличие от Replace block with another block (blockreplace) из express`a?
одно другого хуже.
Nike вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 25.02.2011, 11:50
#12
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 14,902


Зачем сложности?
К блоку применяем flatten без скрытия линий из Express Tools.
Получаем блок с новым именем <имя блока>-flat-1.
Ну, и дальше подменяем этот самый блок через blockreplace
Хмурый вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 25.02.2011, 11:58
#13
Victor


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


Я ведь не настаиваю. Пользуйтесь express tools.
Victor вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 25.02.2011, 21:42
#14
Farest-1

Конструктор
 
Регистрация: 19.12.2005
Подольск
Сообщений: 43
Отправить сообщение для Farest-1 с помощью ICQ Отправить сообщение для Farest-1 с помощью Skype™


Цитата:
Сообщение от Victor Посмотреть сообщение
Попробуй так. 2011 сейчас нет под рукой. На 2010 работает. Затащи в пространство модели файл VLX .Запуск b2b.
Файл этот который выкладывал.
Farest-1 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 26.02.2011, 13:31
#15
Victor


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


Меня интересует твой файл, так как у меня всё работает.
Victor вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 26.02.2011, 19:03
#16
Farest-1

Конструктор
 
Регистрация: 19.12.2005
Подольск
Сообщений: 43
Отправить сообщение для Farest-1 с помощью ICQ Отправить сообщение для Farest-1 с помощью Skype™


Цитата:
Сообщение от Victor Посмотреть сообщение
Меня интересует твой файл, так как у меня всё работает.
Вот
Вложения
Тип файла: rar b2b.rar (2.1 Кб, 247 просмотров)
Farest-1 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 26.02.2011, 19:06
#17
Victor


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


Файл с твоими блоками.
Victor вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 28.02.2011, 23:15
#18
Farest-1

Конструктор
 
Регистрация: 19.12.2005
Подольск
Сообщений: 43
Отправить сообщение для Farest-1 с помощью ICQ Отправить сообщение для Farest-1 с помощью Skype™


Цитата:
Сообщение от Victor Посмотреть сообщение
Файл с твоими блоками.
Блоки с атрибутами
Вложения
Тип файла: rar Фасад.rar (906.4 Кб, 187 просмотров)
Farest-1 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 01.03.2011, 12:40
#19
Victor


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


Эта прога была задумана для простых блоков а не для динамических. Для динамических сразу возникаeт вопрос по какому имени менять по исходному или по текущему.
Victor вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 02.03.2012, 14:35
#20
crosandr

инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,701


Цитата:
Сообщение от Victor Посмотреть сообщение
Попробуй так. 2011 сейчас нет под рукой. На 2010 работает. Затащи в пространство модели файл VLX .Запуск b2b.
Несколько пожеланий:
  • Дать возможность скрывать неименованные блоки
  • Выпадающий список хотелось бы иметь размером с имя блока (они иногда весьма длинные бывают)
  • Дать возможность вписать масштаб вставки руками в самом окошке при работе программы (а не в текст lsp), того списа, что имеется - недостаточно
  • Упорядочить имена блоков по алфавиту
В остальном работает Неплохое дополнение к ET команде blockreplace
__________________
a computer program does not make a good engineer, only a good engineer should use a computer program

Последний раз редактировалось crosandr, 02.03.2012 в 14:45.
crosandr вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > Замена одного блока другим

Опции темы Поиск в этой теме
Поиск в этой теме:

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меняется масштаб блока при копировании с одного чертежа на другой. Jeriko AutoCAD 23 28.12.2016 16:09
LISP: Переименование одного из вхождений блока Кочетков Андрей Готовые программы 23 13.02.2015 09:12
Замена цвета блока или блока на блок maximator Программирование 25 24.09.2009 16:02
Замена простого блока на динамический Vova Программирование 5 11.05.2009 22:02
Несущие стены или колонны? Приимущества одного перед другим? Wlady Конструкции зданий и сооружений 23 17.01.2009 07:26

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||


Размещение рекламы