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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Переименовать все файлы и XREFs в проекте

Переименовать все файлы и XREFs в проекте

Ответ
Поиск в этой теме
Непрочитано 29.11.2008, 13:49 #1
Переименовать все файлы и XREFs в проекте
Grinzaid
 
Архитектор
 
Израиль
Регистрация: 14.10.2003
Сообщений: 365

Добрый день.
Задача такая:
Имеется огромный проект с тысячами файлов и внешних ссылок.
Проект вышел на новую стадию, тогда как старая пока ещё в работе.
Необходимо скопировать проект так, чтобы обе стадии были независимы и доступны.

Из-за сложной системы папок я хочу оставить всю структуру. Все файлы продублировать, добавив к ним окончание Т (т.е. TENDER). Таким образом в каждой папке будет удвоенное клоичество файлов - с "Т" и без.

Но как переименовать и переадресовать все внеш. ссылки? Reference Manager меняет только маршруты, а не имена.

Решения типа "открывать каждый файл и менять" не предлагать.
__________________
С уважением,
Влад Гринзайд.
Просмотров: 2487
 
Непрочитано 29.11.2008, 15:37
#2
Andi55

инженер-электрик
 
Регистрация: 12.08.2005
Иркутск
Сообщений: 523
<phrase 1=


Не все тут понятно. Не надо смешивать все в кучу. Отделите мухов от катлет. Скопируйте полностью всю папку "Обьект" в папку "Обьект-изм1".

Если умницы-чертежники вставляли икс-рефы с относительными путями - тогда все в порядке, пейте кофе и имитируйте бурную деятельность неделю-две.

Ессли чертежники-не-умницы - перебивайте пути к икс-рефам, материте всех и вся за вашу бурную деятельность.
Andi55 вне форума  
 
Автор темы   Непрочитано 29.11.2008, 15:57
#3
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Все пути абсолютные. Да они и не могут долго оставаться относительными, т.к. Автокад делает их относительными только при вставке, а при пересохранении пути или замене XREFа эту относительность нужно поддерживать вручную. Да и абсолютные пути позволяют более гибкую и изменчивую структуру папок.

Так или иначе, все пути абсолютные.

Мне бы какую-нибудь утилиту, чтоб тупо сделала замену *.dwg на *T.dwg во всех иксрефах.
__________________
С уважением,
Влад Гринзайд.
Grinzaid вне форума  
 
Непрочитано 29.11.2008, 22:48
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Функция глобальной замены абсолютных путей ссылок и растров на относительные и обратно, версия: 0.91; автор: Пётр В. Лоскутов
Меняет пути ссылок и растров, в том числе, UNC.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.12.2008, 09:52
#5
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Алексей, eto ne to, chto mhe nujno. Mne nado pomenyat v marshrutah nazvaniya failov, a ne ih absolutnost ili otnositelnost. Faili doljni pomeniat okonchanie s "P" (PERMIT) na "T" (TENDER). T.e. fail c imenem backgroundP.dwg stanet backgroundT.dwg
__________________
С уважением,
Влад Гринзайд.
Grinzaid вне форума  
 
Непрочитано 01.12.2008, 10:41
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Сформируй через _etransmit небольшой комплект. Пока (именно пока!) теоретически можно "прогнать" такое (сам не проверял, учти!):
Код:
[Выделить все]
(defun change-paths (start end / adoc err err_lst path loc:start)
                    ;|
*    Замена части имени путей внешних ссылок
*    Параметры вызова
	start	маска имени начального варианта
	end	маски имени конечного варианта
*    "Понимает" только маски с * в начале. Без вариантов
*    Примеры вызова:
(change-paths "*1.dwg" "*16.dwg")
|;
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (setq start     (strcase start)
        loc:start (vl-string-trim "*" start)
        end       (vl-string-trim "*" (strcase end))
        ) ;_ end of setq
  (vlax-for xref (vla-get-blocks adoc)
    (if (and (equal (vla-get-isxref xref) :vlax-true)
             (wcmatch (setq path (strcase (vla-get-path xref))) start)
             ) ;_ end of and
      (if
        (vl-catch-all-error-p
          (setq
            err (vl-catch-all-apply
                  (function
                    (lambda ()
                      (vla-put-path
                        xref
                        (strcat (substr (vla-get-path xref)
                                        1
                                        (1- (vl-string-search loc:start path))
                                        ) ;_ end of substr
                                end
                                ) ;_ end of strcat
                        ) ;_ end of vla-put-path
                      ) ;_ end of lambda
                    ) ;_ end of function
                  ) ;_ end of vl-catch-all-apply
            ) ;_ end of setq
          ) ;_ end of vl-catch-all-error-p
         (setq err_lst (cons err err_lst))
         ) ;_ end of if
      ) ;_ end of if
    ) ;_ end of vlax-for
  (if err_lst
    (princ
      (apply 'strcat
             (mapcar '(lambda (x) (strcat "\n" (vl-catch-all-error-message x))))
             err_lst
             ) ;_ end of apply
      ) ;_ end of princ
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Меняются только пути, но не имена.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.12.2008, 09:44
#7
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Chto-to ne furichit Mojet ya nepravilno zapuskau? Proboval comandoi "change-paths"
__________________
С уважением,
Влад Гринзайд.
Grinzaid вне форума  
 
Непрочитано 02.12.2008, 09:48
#8
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


В твоем случае (кстати, смотри комментарии - там же написан пример вызова) понадобится нечто типа
Код:
[Выделить все]
(change-paths "*p.dwg" "*t.dwg")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.12.2008, 08:56
#9
Grinzaid

Архитектор
 
Регистрация: 14.10.2003
Израиль
Сообщений: 365
<phrase 1=


Алексей, zarabotalo, no nekorrektno. Naprimer, pri zapuske (chp "*P.dwg" "*C.dwg") fail AX06A1-02P.dwg pereimenovalo v AX06A1-0C.dwg . Po-moemu nepravilno pereimenovivautsya tsifri.
__________________
С уважением,
Влад Гринзайд.
Grinzaid вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Переименовать все файлы и XREFs в проекте



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Юмор 2007 Огурец Разное 1172 29.12.2007 11:16
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46
Как бы это попроще слить все файлы из папки в один чертеж ? bdfy AutoCAD 3 16.11.2006 22:00
проблема .....все на одном слое ..... Startrek AutoCAD 20 20.10.2005 08:03
как же распечатать все эти файлы? Orcad AutoCAD 6 19.11.2004 10:19