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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Замена связей AutoCAD 2012 и Excel

Замена связей AutoCAD 2012 и Excel

Ответ
Поиск в этой теме
Непрочитано 01.09.2011, 05:34 #1
Замена связей AutoCAD 2012 и Excel
seregas
 
Minsk
Регистрация: 17.08.2011
Сообщений: 60

Коллеги, представим, что есть DWG , в котором есть пару сотен связей с Excel в виде одной ячейки (спец. вставка - связать - Объект AutoCAD). Даже не знаю, поле это или таблица из 1 ячейки. Каждая связь ссыается на path1/file1.xlsx. Как поменять макросом-VBA или LISP этот где-то скрытый в DWG текст на path2/file2.xlsx ?

Файлы file1.xlsx и file2.xlsx по структуре одинаковые, получены переименованием и заменой содержимого некоторых ячеек.

Вот для примера, похожий VBA-макрос для WORD, и он даже работает Берите, пригодится. Его надо только перевести для AutoCAD

Код:
[Выделить все]
Attribute VB_Name = "Замена_связей_Оригинальная"

Sub ChangeLinks()
  Dim oFld As Field 'Поле
  Dim OldFileName As String 'Старое имя файла
  Dim NewFileName As String 'Новое имя файла
  Dim FieldCode As String 'Код поля
  Dim ReplaceAllPath As Boolean 'Заменять весь путь к файлу или только имя
  Dim StartPath As Integer, EndPath As Integer 'Начало и конец пути к файлу в коде поля
  
  'Ввод старого имени файла
  OldFileName = InputBox("Укажите старое имя файла с расширением в ссылке, которое нужно изменить", "Изменение ссылок", OldFileName)
  If Len(OldFileName) = 0 Then Exit Sub
  
  'Выбор нового файла
  With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Выберите новый файл, с которым должен быть связан документ"
    .AllowMultiSelect = False
    .ButtonName = "Выбрать"
    .Filters.Clear
    .Filters.Add "Таблицы Excel", "*.xls; *.xlsx"
    If .Show Then NewFileName = .SelectedItems(1) Else Exit Sub
  End With
  
  'Если изменилось не только имя, но и местоположение, то можно заменить весь путь
  ReplaceAllPath = MsgBox("Заменять весь путь? Нажмите ""Нет"", чтобы заменить только имя файла", vbYesNo + vbInformation, "Изменение ссылок") = vbYes
  
  NewFileName = Replace(NewFileName, "\", "\\")
  'Перебираем все поля в документе
  For Each oFld In ActiveDocument.Fields
    If oFld.Type = wdFieldLink Then 'Если поле является полем ссылки
      FieldCode = oFld.Code.Text
      If InStr(oFld.Code.Text, "Excel.Sheet") <> 0 And InStr(FieldCode, "\\" & OldFileName) <> 0 Then 'Если поле ссылается на лист Excel и на нужный файл
        If ReplaceAllPath Then 'Если нужно заменить весь путь
          StartPath = InStr(FieldCode, ":\\") - 2
          EndPath = InStr(FieldCode, "\\" & OldFileName) + Len(OldFileName) + 2
          FieldCode = Mid(FieldCode, 1, StartPath) & NewFileName & Mid(FieldCode, EndPath)
        Else 'Если нужно заменить только имя файла
          FieldCode = Replace(FieldCode, OldFileName, Mid(NewFileName, InStrRev(NewFileName, "\") + 1))
        End If
      End If
    End If
    oFld.Code.Text = FieldCode
  Next
End Sub
или на LISP
Просмотров: 18294
 
Непрочитано 01.09.2011, 09:27
#2
Кулик Алексей aka kpblc
Moderator

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


И в чем вопрос?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 01.09.2011, 16:08
#3
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


по-мойму суть вопроса ясна.
Выложен код макроса для замены звязей в длкументе WORD с документом Excel. Это очень полезная штука, даже если она не относится к теме данного форума.
Т.к. в AutoCAD тоже есть VBA , то не надо изобретать велосипед, а только перевести команды для WORD в команды для AutoCAD . Спасибо тому, кто понял с первого раза

коллеги, оказывается связи с Excel попадают в "список внешних связей".

1, Если удалить из DWG сами ячейки , связанные с Excel. Кажется они называются поля, то в "список внешних связей" остаются строки "Связь с Excel ---- не используется." Удалить эти строки нельзя. Их там слишком много накопилось. Каким методом VBA или LISP можно их убрать ?

2, оставшиеся полезные связи вполне редактируемые, но ТОЛЬКО ПО ОДНОЙ. Их можно все выделть , но редактировать нет. Как можно одним движением поменять КОНЕЧНЫЙ ПУТЬ у всех выделенных связей ?

Спасибо за внимание.

Последний раз редактировалось Кулик Алексей aka kpblc, 03.09.2011 в 00:24.
seregas вне форума  
 
Непрочитано 03.09.2011, 00:25
#4
Кулик Алексей aka kpblc
Moderator

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


Если суть вопроса "надо перевести", то - кому надо-то? Тебе? Так переводи. Будут трудности - спрашивай.
Цитата:
Сообщение от seregas Посмотреть сообщение
оказывается связи с Excel
Оказывается, достаточно поискать по форуму: http://www.google.ru/cse?cx=partner-...ru%2Findex.php
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.09.2011, 20:59
#5
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


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


вот что я нашел


Эту функцию можно использовать в случае, если вы хотите переместить внешнюю ссылку в другое местоположение или если вы хотите одновременно переименовать внешнюю ссылку и переместить ее в другой каталог.

Первый аргумент - старое имя,
второй аругмент - новое имя
третий аргумент - путь к новому размещению внешней ссылки
Пример: (fixref "XR_01-LIB A" "XR_201" "W:\\project\\1234\\")



Код:
[Выделить все]
 (defun XrefRename (oldname newname newpath)
  (if (and (findfile (strcat newpath newname ".dwg"))
    (ssget "X" (list '(0 . "INSERT") (cons 2 oldname))))
    (progn
      ; переименовать внешнюю ссылку, если указано
      (command "rename" "b" oldname newname)
      ; изменить путь к внешней ссылке, если указано
     (command
       "-xref"
       "p"
       newname
       (strcat newpath newname)
     )
   )
  )
)



но, по-моему, тут где-то ошибка. И это вообще не про замену путей. мне надо просто поменять все старые пути на новый в Менеджере Внешних Ссылок. Это должно быть просто.


Также намекните, что за загадочная страница http://entercad.ru/adrefman.ru/ws1a9...2e719-7ba8.htm . Где етот Диспетчер ссылок с таким полезными командами ?

коллеги я сильно страдаю, окно внешние ссылки по команде _xref. Как поменять всем сразу старый путь на новый ? Почему они не обновляются по кнопке сверху ?

Последний раз редактировалось Кулик Алексей aka kpblc, 17.09.2011 в 21:17.
seregas вне форума  
 
Непрочитано 17.09.2011, 21:29
#6
Кулик Алексей aka kpblc
Moderator

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


seregas, ты чего-то "не тово"... То нужны ссылки на Excel, то - внешние ссылки. Ты уж разберись и сам отредактируй свои сообщения.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.09.2011, 01:29
#7
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


у нас с тобой какое-то хроническое недопонимание. Ощущение такое , что твое звание "модератор" выдает в тебе человека, никогда не пытавшегося сделать такую сложную связь как AutoCAD и Excel. При специальной вставке - связь - Лист Excel она появляется в окне "СВЯЗИ". При Спец.Вставка-Связать-Объект AutoCAD она появляется во "Внешних связях". Мне уже все равно к какому типу они относятся, почему работать с ними одинаково неудобно. А создание новой связи через менеджер, так это вообще кошмар, хорошо хоть пользоватся им необязательно. Я ищу любой способ удобной работы хоть со "Связями", хоть с "Внешниими ссылками". Автокад хорошая программа, здесь все систематизировано, изменять общие свойства у набора объектов чуть ли не главное его достоинство. Но почему при выборе всех внешних ссылок нельзя поменять путь у всех сразу.

У меня в чертеже около сотни связей с разными файлами Excel . Я проделал большую работу, чтобы свести результаты в 1 .xlsx , чтобы упростить связь с AutoCAD. И теперь у меня куча ссылок на один единственный файл, и мне приходится заменять один путь на другой эти 100 раз вручную.

Наверное, эту недоработку уже решили лет 10 назад. Поэтому прошу совета у профи LISP или VBA. А приходится воевать с тобой за чистоту темы без решения проблемы.

Последний раз редактировалось seregas, 18.09.2011 в 01:37.
seregas вне форума  
 
Непрочитано 18.09.2011, 14:33
#8
Дима_

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


Цитата:
Сообщение от seregas Посмотреть сообщение
твое звание "модератор" выдает в тебе человека, никогда не пытавшегося сделать такую сложную связь как AutoCAD и Excel.
Offtop: Сейчас Крысу объяснят, что такое автокад...
Сегодня ж не первое апреля
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.09.2011, 15:16
#9
Кулик Алексей aka kpblc
Moderator

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


Внешние связи и внешние ссылки - разные вещи. Это раз. Второе: в #4 я показал результаты поиска по словам "связь Excel". Ходил? Смотрел? Читал? Третье. Вставлять связь можно несколькими способами, и ни в одном случае вставленная связь не попадает в окно "Внешние ссылки". Проверял на AutoCAD 2012 64bit.
Сегодня специально переустановлю Office 2007, еще разок попробую. Или вечером на ноуте погоняю в условиях 32-разрядной ОС. Но пока что ссылки и связи - разные понятия, показываются в разных окнах и обрабатываются по-разному.
И последнее. Я не вижу смысла делать связь AutoCAD и сторонних табличных редакторов (что Excel, что OpenOffice Calc). Все вычисления можно сделать в самом AutoCAD, чем я успешно и занимаюсь.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.09.2011, 15:28
#10
Хмурый


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


Кулик Алексей aka kpblc, сразу ставь Office 2010
Хмурый вне форума  
 
Автор темы   Непрочитано 18.09.2011, 17:42
#11
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


тогда разрешите мне тоже немного по-OFFTOP-ить.
Вот,например, у меня есть "ТЕХНОЛОГИЧЕСКАЯ КАРТА ВОЗДЕЛЫВАНИЯ ТРИТИКАЛЕ" . Это трава такая, гибрид ржи и пшеницы, короче трава будущего. Возделывается она по той же технологии, что и озимая пшеница. Поэтому, нет смысла держать разные карты с одинаковыми операциями. Надо только заменить сорта и предшественников, те травы, которые уже померли в прошлом году, и их высушенные трупы пойдут на благо роста тритикале или озимой пшеницы.

И вот я забацал неболшую формулу
=ЕСЛИ($C$54<=$A$59;ДВССЫЛ(СЦЕПИТЬ("C";55+$C$54));ЕСЛИ($C$54<=($A$60+$A$59);ДВССЫЛ(СЦЕПИТЬ("D";55+$C$54-($A$59+1)));"ВВОДИ МЕНЬШЕ !!!"))

Если я в поменяю в $A$54 одну цифру (1 из 10) , то в результате поменяется сорт тритикале (1 из 10) и рядом станет его предшественник (1 из 10) . Если я там же поставлю цифру (11 до 20), то в результате поменяется сорт озимой пшеницы и станет ее предшественнник. Также поменяется название всей карты.
Также в зависимости от названия трактора в исходных данных в расчеты подставляется его мощность двигателя и расход топлива.

Кстати, я тож раньше думал, то колхозники там в грязи копаются, ездят на 50-лених фордзонах и пьют водку, редко молоко. Так и есть. Но у нас самые нищие колхозы пашут по 3-4 тыщи га. А, например, с вико-овсяной смеси (трава на корм скоту, такая зелененькая) при правильном уходе прибыль до 1000 $ с гектара. Потом они везут эту траву в рулонах на старых МАЗах, когда эти рулоны в кузове стоят примерно в 2 раза больше, чем сам грузовик по остаточной стоимости . Это вам не гипсокартон на рынке продавать. И они же не работают круглый год, кстати щас посмотрю по карте сколько -- 160 дней. Жаль, что у меня нет своего поля с викой.

Сама карта тоже вся считается, она с трудом влазит на 24 дюйма. Их три штуки.

Я вижу тут недоработку -- зачем использовать лишнюю ячейку с одной цифрой, можно в названии в конце поставить нужное количество пробелов, считать их, и далее по тексту. При печати пробелы не видны, очень удобно. Это еще удлиннит формулу наполовину, но это потом, от скуки.

Access я не знаю, пока все что можно делает Excel. Шас сделал таблицу в AutoCAD , там нет и намека на те возможности (ну может на 1 %), что предосталяет Excel. Жалко смотреть на "Вставить функцию..." Даже такой мелочи как имена ячеек и диапазонов, нет. И не дай бог удалить/добавить строку/столбец -- все собьется. С именами ячеек нет. Через месяц я буду смотреть на свою карту как баран , чо за $A$54 ??? и не знать куда тыкнуть мышой, У меня даже пояснения для меня самого сделаны с формулами

Хорошая попытка Autodesk догнать Microsoft . Даже сама MS забросила точно такую же попытку с таблицами в своем собственном WORD. Для каждой задачи свое. По крайней мере AutoCAD догонит Excel не в этом десятилетии. Немного напоминает попытку России в 90-х сделать свой процессор, наверное расчеты делали на советких ламповых компутерах, когда весь мир резался в DIGGER уже на IBM PC. Да и наверное половину функция и методов расчетов MS надежно запатентовала, так что просто переписать не получится. Не те времена.

Извини, отвлекся, поиск по твеой сылке смотрел, все 10 страниц результатов. Именно там была ссылка на загадочный "Диспетчер ссылок" , который не найдешь в меню AutoCAD , но именно он единственный может поменять пути у всех выбранных файлов (я даже прослезился), но он не работает с внешними ссылками (2 раза).

Вообще надо как-то повлиять на наших коллег из Autodesk. Что-то они наворотили лишнего:

СВЯЗИ, ВНЕШНИЕ ССЫЛКИ, Диспетчер подключений к БД, Диспетчер связей данных, Диспетчер ссылок.

Может им пора что-то вычеркнуть и сосредоточится на чем-то одном ?

Последний раз редактировалось seregas, 18.09.2011 в 18:29.
seregas вне форума  
 
Непрочитано 18.09.2011, 22:48
#12
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Хмурый Посмотреть сообщение
Кулик Алексей aka kpblc, сразу ставь Office 2010
Нет, спасибо. Попробовал, хватит. Теперь не знаю как на 64-разрядной Win7 от его следов избавиться.
seregas, а ты подумай насчет программы, которая будет внутри AutoCAD все менять после нажатия на одну-две кнопки. Потому как ничего из того, что ты описал, вот так вот жизненно Excel'a не требует. Или я не понял задачу.
Цитата:
Сообщение от seregas Посмотреть сообщение
Вообще надо как-то повлиять на наших коллег из Autodesk. Что-то они наворотили лишнего:

СВЯЗИ, ВНЕШНИЕ ССЫЛКИ, Диспетчер подключений к БД, Диспетчер связей данных, Диспетчер ссылок.
И каждый из них отвечает за свою часть работы. Если не надо - не пользуйся, никто не неволит. Но все объединять вместе лично я не стал бы ни за какие коврижки. Запутаться будет как нефиг делать.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.09.2011, 23:23
#13
Дима_

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


Цитата:
Сообщение от seregas Посмотреть сообщение
Сама карта тоже вся считается, она с трудом влазит на 24 дюйма. Их три штуки...
По крайней мере AutoCAD догонит Excel не в этом десятилетии...
Вообще надо как-то повлиять на наших коллег из Autodesk. Что-то они наворотили лишнего...
То seregas, жаль что Вы сами не понимаете какую чушь Вы несете. Я тут сравнил ферари с трактором беларусь - так ферари не делает и 1% процента от трактора - а ведь оба на двигателях внутреннего сгорания - это примерно что Вы пишете, только в другой тематике. Вам не приходило в голову, что это Вы от незнания делаете все через ж**у, а не ребята из автодеск - если посмтреть на то что Вы пытаетесь сделать - так чесание левой пяткой правого уха - это куда более рациональная вешь, если Вы знаете VB - это еще не значит что Вы "все" понимаете, а все вокруг тупые идиоты, не понимают как-же пяткой ухо чесать не удобно - изучите вначале предмет, перед тем как его критиковать, спросите если не знаете, посмотрите как аналогичные задачи решают более опытные "коллеги", а уж разобравшись - пишите свои "мудрые" советы "догоняющим" - про свои ноу-хау, как это делать более рационально.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 19.09.2011, 01:35
#14
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


Дима_, написал бы сразу "многа букав". Тут всего 1 страница текста, ты не читал сначала.
Если сократить мою писанину, то вот кратко:
1. Кулик Алексей aka kpblc предложил , что все возможности Excel можно легко заменить встроенными таблицами AutoCAD и решения я никогда не найду. Я с легкими лирическими отступлениями это опроверг. Не для того что бы потрепать пальцами по клаве, а чтобы не закрывать открытую тему -- мне все еще очень надо узнать

Код:
[Выделить все]
Если 100 внешних ссылок ссылаются на path1/file1.xlsx. Как поменять макросом-VBA или LISP этот где-то скрытый в DWG текст на path2/file2.xlsx ?
Где я чесал пяткой за ухом ? Как раз наоборот. Сложные вещи потянет только Excel, его ничем не заменить, а все попытки -- это и есть пятка.

2. Как раз не знаю, ни LISP , ни VBA. Я даже нашел VBA-код, который по своей структуре выполняет эту задачу, но только в WORD. Я не думал , что подогнать VBA-код от WORD в VBA-код для AutoCAD будет так долго, и более того, не понятна сама задача и для Кулик Алексей aka kpblc, и для тебя Дима_
seregas вне форума  
 
Непрочитано 19.09.2011, 02:03
#15
Кулик Алексей aka kpblc
Moderator

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


seregas, вот ты скажи - у тебя меняются только значения текста или что-то еще? Если только текст - то поля в руки + DIESEL. И этого достаточно. Если меняются визуальные представления, например, штриховок - то можно уже и программирование привлекать.
Цитата:
Сообщение от seregas Посмотреть сообщение
Сложные вещи потянет только Excel
Та формула, которую ты показал - это как раз и есть пятка. Внутри формулы использовать абсолютные ссылки вместо того, чтобы привлекать, например, ИНДЕКС и ПОИСКПОЗ - ИМХО изврат.
Цитата:
Сообщение от seregas Посмотреть сообщение
Кулик Алексей aka kpblc предложил , что все возможности Excel можно легко заменить встроенными таблицами AutoCAD и решения я никогда не найду.
Вообще-то я говорил не так. Я говорил, что привлечение Excel'a не является критически необходимым - по крайней мере на основании того, что показано.
Цитата:
Сообщение от seregas Посмотреть сообщение
Я не думал , что подогнать VBA-код от WORD в VBA-код для AutoCAD будет так долго
А как бы тот факт, что объектная модель Word'a и AutoCAD'a отличаются весьма сурьезно, в расчет не принимается?
Цитата:
Сообщение от seregas Посмотреть сообщение
не понятна сама задача
Пока - непонятна. Точнее, непонятно, почему обязательно надо программирование и не рассматриваются варианты использования штатных возможностей AutoCAD'a.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.09.2011, 02:42
#16
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60




я уже не спрашиваю, почему нельзя все связи обновить кнопой сверху. Со скрипом можно это обойти, разместив все связи на отдельном слое и обновлять связи , что мы видим в этом окне через другое окно -- "Диспетчер связей с данными"

Последний раз редактировалось seregas, 19.09.2011 в 02:50.
seregas вне форума  
 
Непрочитано 19.09.2011, 13:04
#17
Сергей Богатов


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


http://forum.dwg.ru/showthread.php?p=368469&#post368469
мы не про это говорим?

Кстати. Пришло в голову решение. Почему-бы не сделать e-transmit. При этом создастся комплект и можно будет заменить содержимое экселевского файла
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 19.09.2011, 23:48
#18
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


вот , Сергей Богатов уже более двух лет ищет этот же ответ
seregas вне форума  
 
Непрочитано 20.09.2011, 09:19
#19
Сергей Богатов


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


Цитата:
Сообщение от seregas Посмотреть сообщение
вот , Сергей Богатов уже более двух лет ищет этот же ответ
Острота вопроса спала
Я всё таки сделал внешнее формирование таблицы - не через даталинк. С даталинками есть проблема. Это мегатормоза при более менее крупной таблице с связью. Но решение было-бы интересно мне увидеть
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Непрочитано 20.09.2011, 21:09
#20
Alex-2539


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


Offtop: А я вот поддерживаю товарища seregas. И описал он свою проблему вполне понятно. С макросом для Word он, конечно, погорячился, но не надо его за это гнобить. Он ведь, скорее всего, не программист и не понимает таких тонкостей. И я даже понимаю, почему он это делает именно таким способом, а не каким-нибудь другим. Скорее всего так просто исторически сложилось. Есть множество данных, которые появляются в процессе выполнения работы и их хранят именно в таблицах Excel, т.к. это быстро и удобно. Согласен, это не самый лучший вариант, особенно, когда они разрастаются. Это довольно сложно перенести большой объём данных и вычислений в совершенно другую систему на ходу, в процессе работы. И снова согласен, AutoCAD не предназначен для расчёта таблиц. А когда человек обращается с конкретной проблемой, говорить с умным видом "а зачем вам это нужно? правильнее делать по другому" уже бессмысленно. Вопрос не стоит, как сделать это правильно, вопрос стоит, как исправить то, что уже сделано. Форум для этого ведь и предназначен, разве нет?
Alex-2539 вне форума  
 
Автор темы   Непрочитано 21.09.2011, 01:10
#21
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


Alex-2539, спасибо за поддержку. Представьте, я смотрю на эту карту, одну из трех, и думаю -- а ведь правда, перевести ее в AutoCAD раз плюнуть. Шас пока кофеек согреется легко, одной правой пяткой Потом удалю эти Excel-файлы и буду счастлив. А потом как вывести инфу из AutoCAD для вставки в WORD даже думать не буду, это вообще слегка, второй левой пяткой И так три раза.

Последний раз редактировалось seregas, 15.11.2013 в 04:10.
seregas вне форума  
 
Непрочитано 21.09.2011, 08:00
#22
Сергей Богатов


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


А зачем такой документ засовывать в Автокад? Может прям в Экселе и оформлять?
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 25.09.2011, 18:38
#23
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


такой же вопрос в картинках


Последний раз редактировалось seregas, 25.10.2011 в 18:50.
seregas вне форума  
 
Автор темы   Непрочитано 04.04.2012, 04:14
#24
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


гаспада, периодически у меня все-таки появляется эта проблема. Попробую оживить тему, странно что никого больше это не волнует. Весь вопрос в том, что бы расчеты делать в Excel , а результаты выводить в AutoCAD.

Это 5 связей с файлом file1.xlsx, полученные :
"Правка-Специальная вставка-Вставить связь-ЛистExcel"

Они видны в "Правка-Связи"

Какой LISP-командой перенаправить эти связи на file2.xlsx ?

Эти файлы лежат в разных папках, поэтому очень желательно рассматривать имя файла как полный путь:
path1/file1.xlsx
path2/file2.xlsx

Файлы по структуре одинаковые, надо просто поменять путь и имя.
Спасибо.

вот вложение, чтобы было легче. Спасибо
Вложения
Тип файла: rar Links.rar (41.4 Кб, 107 просмотров)
seregas вне форума  
 
Непрочитано 22.05.2012, 16:49
#25
ServantosS


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


seregas, а нельзя к этой проблеме подойти с другой стороны? В папку на которую ведут все связи из автокада класть нужный экселевский файл (тот, что последний) все с тем же именем file1.xlsx. Старый экселевский файл в таком случае можно переложить в другую папку (архивную), если он когда-нибудь еще может пригодиться. Думаю, в таком случае с автокадовским файлом вобще ничего не придется делать. Offtop: Но возможно я что-то не понял в вашем вопросе. Хотя, суть проблемы из ваших слов вполне ясна. Непонятно, почему у закоренелых форумчан такая неадекватная реакция на то, как она была сформулирована. Возможно, мозг думает у них по-другому, и вашая вербальная кодировка для них оказалась слишком непонятной. Плохо, что адекватного решения так и не предложено! Форум в данной теме свои задачи не выполняет!
ServantosS вне форума  
 
Непрочитано 22.05.2012, 19:16
#26
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


seregas,
1. У тебя ссылка на файлы идет как ole объекты. Судя по ответам в этой теме на форуме Autodesk твой вопрос скорее риторический
2. Попробуй перейти с OleLink на DataLink
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 23.05.2012, 08:46
#27
Petrov-Vodkin


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


Вот лопни мои глаза, не пойму одну простую вещь:
seregas, а почему вообще ты таблицу делаешь в AutoCAD, когда:
  1. Табличный редактор - это Excel
  2. Все твои данные хранятся в Excel
  3. И ты сам пишешь, что
    Цитата:
    Сообщение от seregas Посмотреть сообщение
    Шас сделал таблицу в AutoCAD , там нет и намека на те возможности (ну может на 1 %), что предосталяет Excel.
Объясни, почему таблица из #21 должна жить в AutoCAD?
Сделал бы ее отдельным документом прям в Excel, а чертежи в AutoCAD нарисовал.
Petrov-Vodkin вне форума  
 
Автор темы   Непрочитано 28.05.2012, 01:33
#28
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


коллеги, спасибо за внимание

ServantosS, по твоему предложению все старые архивные папки с проектами буду ссылаться на последнюю папку с последним файлом. Их невозможно будет открыть, т.к. все будут давать одинаковые результаты расчетов с исходными данными из последнего файла path/file.xlslx

VVA, нажми на плюсик здесь. Посмотри сколько труда вложено в эту таблицу, там под каждой ячейкой есть расчет. Я даже пытаться не буду засунуть ТАКУЮ таблицу в AutoCAD и ограничить себя его слабыми функциями. Даже в твоей ссылке первая фраза в статье "Arguably the most valuable tool in the modern-day engineer's toolbox is Microsoft Excel" говорит о бессмысленности предложенного.
Смотрел твою ссылку, я тоже им внес кардинальное
предложение Autodesk о полном изменении системы связей

а на форуме MicroSoft я предложил полностью удалить MS Word и переписать его на основе MS Excel


VVA и Petrov-Vodkin, коллеги ! Я уже читал кучу рекомендаций любителей писать статьи как сделать 1 связь через DataLink . Посмотрел бы я на автора , когда нужно сделать 100 отдельных связей. AutoCAD затыкается на Preview с самыми простыми таблицами, не говоря уже о моих "колхозных" разработках. Autodesk заставляет нас отказываться от расчетов в Excel и использовать его только для вывода результатов, а мы этому активно сопротивляемся.

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

Я уже где-то писал, что строка path1/file.xlsx точно должна присутствовать в DWG-файле . Может ее как-то в бинарном виде изменить ?

Последний раз редактировалось seregas, 28.05.2012 в 02:20.
seregas вне форума  
 
Непрочитано 28.05.2012, 09:17
#29
tehkonst


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


Согласен, что встроенная в автокад работа связей неудобна в работе, но все это можно переписать или найти подходящую альтернативу.

Цитата:
Сообщение от seregas Посмотреть сообщение
Я уже где-то писал, что строка path1/file.xlsx точно должна присутствовать в DWG-файле . Может ее как-то в бинарном виде изменить ?
Сохрани в dxf, открой блокнотом, аккуратно замени пути, сохрани обратно в dwg. В результате не уверен.
tehkonst вне форума  
 
Непрочитано 28.05.2012, 13:14
#30
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от seregas Посмотреть сообщение
Может ее как-то в бинарном виде изменить ?
Я сохранил твой чертеж как dxf. Поиском "file1.xlsx" нашел только твою текстовую строчку. Зато там же поиском по AcDbOle2Frame нашел описание OLE. Там куча цифр в шестнадцатиричном виде. Я перевел название "file1.xlsx" в шестнадцатиричный вид. вроде похожие буковки нашел. Только учти, что в lisp один слеш заменяется на два (если видишь D:\Folder\file.xls то в lisp нужно писать D:\\Folder\\file.xls)
Код:
[Выделить все]
(defun C:OLE ()
;Переводит строку в 16-ричный вид для поиска в dxf
;;;Обратить внимание на двойной слэш в названии
(setq filename "D:\\file1.xlsx") ;_Здесь задать строку.
(vl-load-com)
(apply 'strcat
       (mapcar 'Dec2Hex (vl-string->list filename))
       )
)
;;  CAB 09.11.08
;;  Convert integer to Hexadecimal string
(defun Dec2Hex (num / str r)
  (setq str "")
  (while (progn
    (setq r (rem num 16.))
    (cond
      ((< r 10) (setq str (strcat (itoa (fix r)) str)))
      ((< r 16) (setq str (strcat (chr (+ (fix r) 55)) str)))
    )
    (> (setq num (fix (/ num 16.))) 0)
    )
  )
  str
)
;;  CAB 09.11.08
;;  Convert Hexadecimal string to integer
(defun Hex2Dec (str / n)
  (if (zerop (setq n (strlen str)))
    0
    (+
      (*
       (cond
         ((< "@" (setq let (strcase (substr str 1 1))) "G")(- (ascii let) 55))
         ((< "/" (setq let (strcase (substr str 1 1))) ":")(atoi let))
       )
       (expt 16 (1- n)))
      (Hex2Dec (substr str 2))
    )
  )
)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 31.05.2012 в 12:41.
VVA вне форума  
 
Автор темы   Непрочитано 31.05.2012, 00:05
#31
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


VVA, сохранил код в файл Dec2Hex.lsp , загрузил его, но команда Dec2Hex не распознается.

tehkonst , в .DXF есть много символов в непонятной кодировке , обычно редактирование его в блокноте ни к чему хорошему не приводит. Все заменил в но Автокаде никаких изменений в файле не произошло.

Последний раз редактировалось seregas, 31.05.2012 в 00:16.
seregas вне форума  
 
Непрочитано 31.05.2012, 11:31
#32
tehkonst


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


Да с ole трудно, расшифровывать надо. Data link просто текстом путь хранит.
Еще как вариант, создать промежуточный файл excel с абсолютными ссылками на нужный файл. И положить его рядом с каждым dwg, который ссылается. Менять путь в excel файлах значительно проще.


А программно, видимо, нужно расшифровать из 16-ричного кода пути к ole объектам, удалить эти объекты, и затем заново их скопировать и вставить из excel файла в тоже место. Это только предположение, я в объектной модели автокада плохо ориентируюсь.

Последний раз редактировалось tehkonst, 31.05.2012 в 12:12.
tehkonst вне форума  
 
Непрочитано 31.05.2012, 12:41
#33
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от seregas Посмотреть сообщение
но команда Dec2Hex не распознается
Поясни. Dec2Hex - это сервисная ф-ция. Внес изменения в #30.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 02.06.2012, 02:33
#34
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


tehkonst, я понял твою завернутую мысль -- рядом с каждым DWG-файлом будет лежать LINK.xlsx с постоянным именем. Это можно сделать, если LINK.xlsx будет являться копией kolhoz1.xlsx (в нем 12 листов и он лежит тут же рядом), только без расчетов но со ссылками на все его пару сотен результирующих ячеек. Согласен , что это реально осуществить, но я уже это не потяну второй раз. Тем более, что папки с разными проектами KOLHOZ1 и KOLHOZ2 не могут быть одинаковыми.

Я уже что-то подобное реализовал между несколькими EXCEL-файлами (типа составную ссылку) функцией : =ДВССЫЛ(СЦЕПИТЬ($J$1;"BL";Str_oper)) ,
где $J$1 -- ячейка с именем файла и листа
BL -- столб
Str_oper -- имя ячейки с номером строки

Вот так приходится извращаться для достижения лучшей автоматизации расчетов.

коллеги, как все сложно
VVA, я пробовал твою программу, подставил в нее свой путь. Получил ряд 16-ричных цифир. В файле .dxf такого набора не нашел.
Мой рабочий DWG-файл является здоровой таблицей, нарисованной простыми линиями, где перемешаны схемы, виды сверху тракторов , тексты со ссылками на результаты расчетов из Excel и картинки-ссылки на Excel-диаграммы. Размером до 3 МБ , это много. Представьте, как он будет выглядеть в текстовом редакторе после его сохранения в .DXF ! 102 МБ !!!

В идеале хотелось бы способ задать "НАЙТИ ... ЗАМЕНИТЬ ..." Мы все видели это окно в WORD, а ведь он тоже понимает макросы и VBA и это решение уже давно есть. Там даже можно просто включить "отображение связей" и менять в них строки текста простым поиском.

DataLink делает ссылку на одно число из Excel-файла, но отображает его в соответствии со своими стилями таблиц и стилями текста. По-моему, эти стили живут отдельно друг от друга. Все эти DataLink по-умолчанию заблокированы от редактирования. Мне приходилось ее снимать по тыще раз день. Какая-то параноидальная забота о моей безопасности, которую нельзя отключить. И если мне надо просто ссылка с большим размером шрифта, то мне надо делать новый стиль таблицы.
Я предпочел вставлять все ссылки в виде Excel-объектов с редактированием их отображения именно в первоисточнике. В Excel даже есть шрифты, идентичные стандартному GOST. Если сделать все границы в Excel невидимыми, то все ссылки прекрасно вписываются в тексты в DWG-файле.

Получается , в LISP нет команд и возможностей работать с OLE-связями ?

Последний раз редактировалось seregas, 02.06.2012 в 12:01.
seregas вне форума  
 
Автор темы   Непрочитано 26.11.2012, 02:49
#35
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


Коллеги, за эти годы я так и не нашел решения.
Но уже давно я делаю гораздо проще : все ссылки остаются на своих местах, никаких замен путей не требуется.

Проектов много, все лежат на своих местах, но они имеют сложности при открытии, как бы "read only" . Смотреть их можно, открывать связанные файлы в определенной последовательности, можно копировать содержимое без связей ( для старых проектов, в новых можно копировать и со связями). Редактировать можно голый текст, при условии отключения автообновления связей, без установления новых связей. На то они с "старые" проекты, чтобы их не менять.

Зато каждый проект со всеми .DOCX, .XLSX, .DWG, связанными между собой, редактируется только в одной папке , имеющей постоянное имя и адрес. Я уже привык, и никаких трудностей не вызывает, никаких макросов (для изменения связей в .DOCX) не требуется. Тем более макрос, указанный в начале этой ветки для WORD, не умеет менять пути связей в таблицах-рисунках (Рамка-Содержание с фамилией автора ), приходилось около десятка связей обновлять вручную. Это не сложно, просто можно забыть , распечатать , и получить в тех связях результаты из предыдущего проекта. А это не приятно, страдает моя репутация -- люди думают, что я такие объемы расчетов выполняю на калькуляторе

Таким образом, мои проекты только усложняются (хотя и пишутся по 5 штук одновременно), вероятности ошибок уменьшаются, т.к. связи уже не надо менять. Так даже лучше. Я по десятку раз в день складирую один проект из рабочей папки и заменяю его другим. Вот и все решение, для кого-то очевидное. Мне казалось, что это мое решение, но все-аки первым его предложил mr. ServantosS.
Так что отдельная благодарность ему и коллегам, чьи ники представлены на это странице

Последний раз редактировалось seregas, 15.11.2013 в 04:27.
seregas вне форума  
 
Автор темы   Непрочитано 16.06.2014, 21:05
#36
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


коллеги, я заметил, что связи с Excel, лежащие на 2 уровне вложения не обновляются. Надо открывать внешнюю ссылку , обновлять связи с Excel (очень долго около 5 сек на каждом чертеже, т.е. около 1 сек на КАЖДУЮ СВЯЗЬ !!!) , закрывать внешнюю ссылку. Обновлять внешние ссылки в главном чертеже . Если делать 2 проекта одновременно, то внешюю ссылка для них одинаковая, но подписи на ней разные для каждого проекта. Представляете, что творится ?
Эй , в Autodesk ! На дворе 2014 год, проснитесь !
seregas вне форума  
 
Непрочитано 16.06.2014, 22:10
#37
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Можно просто написать макрос, который на основе шаблона (dwt/dwg) и данных из Excel'я рисует нужные чертежы, без всяких связей.
Нафиг они нужны, если новый чертёж можно получить за 5сек...
trir вне форума  
 
Автор темы   Непрочитано 19.06.2014, 09:28
#38
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


гспади, не надо ничего рисовать (вряд ли вы это потянете)
надо просто вставить фамилии из Эксель

я вычисли 3 варианта связей:
1. Спец. Вставка - Связать - Лист Excel -- самая надежная, обновляется через ссылки второго уровня вложения. Не форматируется. Обновление мгновенное, не требующее вмешательства.

2. Спец. Вставка - Связать - Объект AutoCAD. Иногда связь теряется по неизвестным причинам. Практически не поддается редактированию. Форматирование сложное через стили таблиц. Обновление очень долгое, почти 1 сек/связь. На 2 уровне внешних ссылок не обновляется.

3. Поля через драйвер DB (База AD). Отличное форматирование через стили текста. Может потеряться связь, не изучен процесс сохранения точек связи в Базе AD. На 2 уровне внешних ссылок не обновляется. преимущество -- можно соединять с данными на чертеже.


Предлагаю делиться наблюдениями. Я считаю что связи с Excel гораздо нужнее и полезнее для сложных проектов, чем совместная облачная работа, чему Autodesk уделяет слишком много времени, в ущерб другим видам связей.
Расчетная часть Excel просто недостижима для таблиц AutoCAD, и не стоит даже пытаться повторить это, на современном уровне. Надо просто правильно и надежно соединить этих двух лидеров в своих областях.
seregas вне форума  
 
Непрочитано 19.06.2014, 10:37
#39
Сергей Богатов


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


Цитата:
Сообщение от seregas Посмотреть сообщение
надо просто вставить фамилии из Эксель
Если дело(задача) только в этом, то посмотри в сторону подшивок. Фамилии в штампе будут полями с свойствами подшивки(или листа подшивки)

А по теме: я тоже начинал идти по этому пути, но большое кол-во данных не залинкуешь - начинаются тормоза. Да и менять связи проблематично...
Так-что приходим к варианту:
обработка данных в внешней БД(СУБД) -> перекидывание на чертёж в Автокад с помощью программирования
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 19.06.2014, 23:26
#40
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


у меня была такая простая идея -- взять формат А1, поместить туда ссылки из Excel на фамилии. Положить этот формат в укромное место и вставлятьь ег в чертежи в качестве внешней ссылки. Проекты разные, но у каждого есть этот одинаковый XLS , где фмилии расположены строго в определенном месте. Как они могут быть разные есть следующий XLS сделан из предыдущего. А формат А1 один на всех.
Я просто хочу открыть чертеж, а формт с правильными фамилиями уже подставлен в него.
Это настолько элементарная задача, что она должна быть решена еще 10 лет назад, когда только появились внешние ссылки AutoCAD. Но как видите решения до сих пор нет.

Если я твердо решил уйти от screenshot одной ячейки из Excel, то я продираюсь через эти давно забытые Autodesk технологии. А пока мне приходится в каждом чертеже клеить одинаковые связи, и при открытии на следующий день наблюдать: половина связей слетела, половина осталась.

Решение , которое действительно отвечало этим простейший требованиям -- это связь в виде маленького screenshot одной ячейки из Excel. Autodesk так и пишут на своем сайте -- "поля во внешних ссылках не обновляются". Мне даже стыдно за Autodesk.

У меня есть карты 40*30 ячеек ( я даже купил 2*24" монитора, что бы видеть что в них написано), и в итоговом чертежи их 3 шт на А1. И как ни странно, я не вижу другой альтернативы, как их вставить -- в только в виде screenshot из Excel. Так что это корявое решение иногда оказывается единственным.

Сергей Богатов , спасибо на намек. Я видел эти подшивки. Раньше я думал, что это для крупных проектов на сотни листов. Их возможностей не знаю. И какое они имеют отношение к Excel ?
seregas вне форума  
 
Непрочитано 20.06.2014, 10:12
#41
Сергей Богатов


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


Цитата:
Сообщение от seregas Посмотреть сообщение
Я видел эти подшивки. Раньше я думал, что это для крупных проектов на сотни листов. Их возможностей не знаю
Тут смотри:
http://dwg.ru/dnl/5319
http://forum.dwg.ru/showthread.php?t=5111
И используй ПОИСК
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Замена связей AutoCAD 2012 и Excel



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ASD - AutoCAD Structural Detailing. Проблемы и их решение. Faber Вертикальные решения на базе AutoCAD 805 03.10.2015 21:33
связь текстовых полей AutoCad с ячейками в Excel April AutoCAD 9 29.06.2014 12:35
VBA. Как импортировать содержимое ячейки Excel в AutoCad? Petrov-Vodkin Программирование 4 27.12.2010 12:22