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

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

Жуткие тормоза при линковке автокада к екселю

Ответ
Поиск в этой теме
Непрочитано 08.10.2009, 16:37 #1
Жуткие тормоза при линковке автокада к екселю
hwd
 
C, C++, C#
 
С-Пб.
Регистрация: 07.10.2009
Сообщений: 2,762

1.Запускаем команду: _table
2. В открывшемся окне "Insert table", в группе Insert options" устанавливаем значение "From data link" и жмём на кнопку создания связи.
3. В раскрывшемся модальном окне "Select a Data link" создаём новую связь под произвольным именем и жмём кнопку "ОК".
4. В открывшемся диалоговом окне "New Excel Data Link" выбираем файл источник - тут начинаются "тормоза"...
5. В группе "Link options" выбираем из раскрывающегося списка "Select Excel sheet to link to:" лист "на все ванты"(в этом месте компьютер надолго впадает в ступор), устанавливаем опцию "Link entire sheet", указав тем самым, что данные нужно брать из всего листа в целом и жмём кнопку "ОК", после чего компьютер снова отправляется в анабиоз.
6. В диалоговом окне "Select a Data link" так же жмём на кнопку "ОК" и снова идем пить кофе.
7. В диалоговом окне "Insert table" так же жмём на кнопку "ОК" - можно снова пойти покурить.
8. На чертеже указываем точку вставки объекта.
Всё.

Компьютер не слабый:
Процессор: Core 2Duo E7400 2.8ГГц
ОЗУ: 2ГГб

Вся перечисленная выше процедура для прилагаемого файла ЗАНИМАЕТ ОКОЛО ПОЛУЧАСА, что не приемлемо для работы.
Потребность в организации связи между Excel и AutoCAD в нашей организации высока.

Размер получаемой таблицы: 153 [столбца] х 73 [колонки]. В ячейках данных по минимуму (в основном числа).
Файл расположен на локальном диске.

Чем может быть обусловлена такая скорость?

Просмотров: 5055
 
Непрочитано 08.10.2009, 16:59
#2
Сергей Богатов


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


Чем может быть обусловлена такая скорость?

Не знаю, но знаю что тормозит от размера файла. У меня тоже была засада. Решил разбиением большого файла на кучу мелких
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 08.10.2009, 17:04
#3
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Сергей Богатов Посмотреть сообщение
Чем может быть обусловлена такая скорость?

Не знаю, но знаю что тормозит от размера файла. У меня тоже была засада. Решил разбиением большого файла на кучу мелких
Разбивать, к сожалению, неудобно, т.к. файл формируется программно сторонней утилитой и в итоге еще ведь не известно, на что уйдет больше времени - на разбивки файлов или на ожидание обработки целого...
hwd вне форума  
 
Непрочитано 08.10.2009, 17:34
#4
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,176


Создать пустую маленькую таблицу.
Перед линковкой набрать
Код:
[Выделить все]
(vla-put-RegenerateTableSuppressed (vlax-ename->vla-object (car (entsel))) :vlax-true)
и щелкнуть по таблице.
Пролинковать.
Набрать
Код:
[Выделить все]
(vla-put-RegenerateTableSuppressed (vlax-ename->vla-object (car (entsel))) :vlax-false)
и щелкнуть по таблице.
На гораздо более слабой машине все получилось менее чем за 2 мин.
kp+ вне форума  
 
Автор темы   Непрочитано 08.10.2009, 18:24
#5
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от kp+ Посмотреть сообщение
Создать пустую маленькую таблицу. Перед линковкой набрать Код: (vla-put-RegenerateTableSuppressed (vlax-ename->vla-object (car (entsel))) :vlax-true) и щелкнуть по таблице.
ошибка: no function definition: VLAX-ENAME->VLA-OBJECT
подгрузил (vl-load-com).... ошибка пропала...
сейчас попробую пролинковать.

некоторое время спустя...
Цитата:
Сообщение от kp+ Посмотреть сообщение
На гораздо более слабой машине все получилось менее чем за 2 мин.
не знаю, что там у вас за "слабая" машина и за какие "2 минуты", но...
моё "ведро" всё еще висит, думает...

ещё некоторое время спустя...
вроде всё... Но визуально результат не заметен. Лишь если выделить таблицу, вижу, что она значительно вроде как должна быть шире.
Выглядит так:


Если обновить связь - данные не появляются всё равно. Т.о. если я линкую уже существующую таблицу к данным - получаю не тот результат, что ожидал. Возможно это из-за того, что в изначальной таблице количество строк/столбцов не совпадает с оригиналом. При линковке их количество автоматически не исправляется.
Времени тратится столько же...
В общем - не помогло...

Хотя спасибо, конечно, же за попытку помочь.

Последний раз редактировалось hwd, 08.10.2009 в 19:06.
hwd вне форума  
 
Непрочитано 08.10.2009, 20:07
#6
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,176


Насчет 2 мин - извини, не тот лист выбрал. "на все ванты" линковался минут 6. Машина - celeron, 2.66GHz, 1 GB, XP SP2.
Кстати, предпросмотры при линковке занимают много времени. Надо снять те галочки. От них толку все равно нет.
Чтобы результат был заметен, надо набрать второй фрагмент кода.
Перед обновлением связи обязательно набирать первый код. Иначе опять вешалка. После завершения - второй, чтобы видеть результат
kp+ вне форума  
 
Непрочитано 09.10.2009, 10:51
#7
Сергей Богатов


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


Цитата:
Сообщение от hwd Посмотреть сообщение
Разбивать, к сожалению, неудобно, т.к. файл формируется программно сторонней утилитой и в итоге еще ведь не известно, на что уйдет больше времени - на разбивки файлов или на ожидание обработки целого...
Напиши макрос в VBA(я так и сделал). А вобсчем я после того как помучился - понял что проще написать програмулину которая делает "ручной" даталинк: открывает эксель->забивает массив->создает или находит существующую табличку->вставляет данные из массива. Естественно автоматического обновления не будет. Вот так
ЗЫ
У меня табличка 58 х 600, фильтруется макросом по определённому полю, создаёт именованные диапазоны, которые затем используются в автокадовском макросе. Хочу написать стороннее приложение(не в VBA) которое будет этим заниматься, но времени нет
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 09.10.2009, 10:58
#8
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от kp+ Посмотреть сообщение
Насчет 2 мин - извини, не тот лист выбрал. "на все ванты" линковался минут 6. Машина - celeron, 2.66GHz, 1 GB, XP SP2.
Кстати, предпросмотры при линковке занимают много времени. Надо снять те галочки. От них толку все равно нет.
Чтобы результат был заметен, надо набрать второй фрагмент кода.
Перед обновлением связи обязательно набирать первый код. Иначе опять вешалка. После завершения - второй, чтобы видеть результат
Благодарю! Действительно, если поубирать галочки предварительного просмотра, то вместо 30 мин подключаюсь за 4,5 мин. (засекал время).

Хотя, конечно же это тоже не то, чего бы хотелось, но всё же уже не 30 мин...

Мне стало любопытно, насколько быстрее будет, если это выполнить посредством C#? Надо будет попробовать. Потому как за такую скорость меня пользователи всё равно вздёрнут. Диллеры советуют поставить на AutoCAD 2009 обновление - SP3. Хотя на странице, содержащей перечень исправлений, введя слово "Excel" я не получил результатов - т.е. обновления вроде как не затрагивали сей момент. Сегодня будем ставить и экспериментировать.

N.B. Кстати, у Полещука/Лоскутова в предметном указателе по "vla-put-RegenerateTableSuppressed" ничего не нашёл, равно как и в справке автокада, выбрав объектом поиска "all documentation".

Я так понимаю, что данная команда запрещает/разрешает регенерацию определённого объекта?

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

Результат: 5 мин.

Т.е. вывод:
Львиную долю времени выполнения команды линковки к файлу excel забирает на себя предварительный просмотр, а прирост скорости при использовании "vla-put-RegenerateTableSuppressed" невелик.

hwd вне форума  
 
Непрочитано 09.10.2009, 11:54
#9
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,176


у Полещука и в справке Акада ищи по свойству RegenerateTableSuppressed (без vla-put).
kp+ вне форума  
 
Автор темы   Непрочитано 09.10.2009, 12:03
#10
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от kp+ Посмотреть сообщение
у Полещука и в справке Акада ищи по свойству RegenerateTableSuppressed (без vla-put).
Да, так нашёл, спасибо.
hwd вне форума  
 
Непрочитано 09.10.2009, 12:47
#11
Сергей Богатов


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


Вопрос - а зачем тебе весь лист? ограничься нужным диапазоном. лучше всего создай именованный диапазон в Экселе. Софтина которая создаёт этот файл не может этого сделать? Если не может, то сделай макросик который будет предварительно обрабатывать этот массив. Быстрее будет, поверь мне
__________________
Я-проектировщик бывший проектировщик!
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 09.10.2009, 12:53
#12
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Сергей Богатов Посмотреть сообщение
Вопрос - а зачем тебе весь лист? ограничься нужным диапазоном. лучше всего создай именованный диапазон в Экселе. Софтина которая создаёт этот файл не может этого сделать? Если не может, то сделай макросик который будет предварительно обрабатывать этот массив. Быстрее будет, поверь мне
да это понятное дело, что range будет быстрее. проблема в том, что в ряде случаев нужен именно лист, т.к. в этом случае при добавлении в файле екселя строк с данными они добавятся и в автокаде при синхронизиции.
А если привязываться к диапазону ячеек, то после добавления новой строки в файл екселя, для таблицы автокада нужно будет указывать новый диапазон - неудобно.
hwd вне форума  
 
Непрочитано 09.10.2009, 14:15
#13
Сергей Богатов


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


не range, а named range в экселе диапазону нужно задать "имя". изменения именованного диапазона в экселе автоматически расширяют или сжимают табличку в автокаде. в хелпе экселя поищи "работа с именами". а всё таки, по-моему, лучше сделать без даталинков, а "внешним" воздействием(программерство)
ps
у меня нужный именованый диапазон влез за 1 минуту
pps
если сможешь "работать" с даталинками автокада через С# обязательно напиши
__________________
Я-проектировщик бывший проектировщик!

Последний раз редактировалось Сергей Богатов, 09.10.2009 в 14:21.
Сергей Богатов вне форума  
 
Автор темы   Непрочитано 09.10.2009, 15:27
#14
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Сергей Богатов Посмотреть сообщение
если сможешь "работать" с даталинками автокада через С# обязательно напиши
хорошо.

Цитата:
Сообщение от Сергей Богатов Посмотреть сообщение
если сможешь "работать" с даталинками автокада через С# обязательно напиши
Вот тут интересная тема, глянь.

Последний раз редактировалось Кулик Алексей aka kpblc, 16.10.2009 в 16:20.
hwd вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Жуткие тормоза при линковке автокада к екселю



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Мониторы LCD CRT Разное 94 17.06.2008 10:51
БРЕД СИВОЙ КОБЫЛЫ Kryaker Разное 1876 29.12.2006 23:41
Тормоза при выборе слоев в АКАДЕ 2005 boban AutoCAD 4 20.04.2005 20:13
При запуске АВтокада возникоет фатальная ошибка NTU AutoCAD 4 03.02.2005 17:22