Переполнение памяти при программировании на VB.Script в Propety Set Definitions
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Переполнение памяти при программировании на VB.Script в Propety Set Definitions

Переполнение памяти при программировании на VB.Script в Propety Set Definitions

Ответ
Поиск в этой теме
Непрочитано 13.10.2009, 11:31 #1
Переполнение памяти при программировании на VB.Script в Propety Set Definitions
Vladmart
 
Регистрация: 09.10.2009
Сообщений: 9

Для автоматизации процесса решил использовать Schedule Table, где есть возможность использовать VB.Script для создания формул... До определенног времени (работал на MEP 2009) все шло нормально, но не так давно (под переход на 2010) увеличил количество используемых переменных ~300 шт. MEP начал туго ворочаться и периодически вылетать по причине переполнения памяти . Не могу понять в чем дело, ведь в MEP наверняка используется для стандартных Schedule Table намного большее кол-во переменных. Помогите, кто чем может
Просмотров: 3954
 
Непрочитано 13.10.2009, 12:03
#2
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Если в Автокаде что-то происходит, то оно тут же запоминается. Если нарисовать примитив, запомнить его метку, а потом удалить примитив, то через функцию handent все равно можно получить описание этого примитива и даже сохранение файла не помогает. Только полное закрытие и вновь открытие уничтожает избыточные данные, на которых построена система Undo и Redo.
Переменные VB Script, если они созданы в этом же процессе тоже множатся как тараканы. Либо подвязывай VB Script на дочерний процесс, либо после перенастройки таблицы сохраняйся и перегружай файл.
Supermax вне форума  
 
Автор темы   Непрочитано 13.10.2009, 12:52
#3
Vladmart


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


Цитата:
Сообщение от Supermax Посмотреть сообщение
... Либо подвязывай VB Script на дочерний процесс...
Как подвязать VB Script на дочерний процесс - это же не внешний обработчик, а встроенный в MEP (ACA) или я не правильно понимаю?
Цитата:
Сообщение от Supermax Посмотреть сообщение
... либо после перенастройки таблицы сохраняйся и перегружай файл.
Перегружать AutoCAD или файл?
Vladmart вне форума  
 
Непрочитано 13.10.2009, 12:54
#4
Кулик Алексей aka kpblc
Moderator

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


VBS в AA / MEP вообще-то достаточно хамоватая штукенция. Код покажи (если VitalyF появится, может, он подскажет).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.10.2009, 13:16
#5
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Цитата:
Сообщение от Vladmart Посмотреть сообщение
Как подвязать VB Script на дочерний процесс - это же не внешний обработчик, а встроенный в MEP (ACA) или я не правильно понимаю?

Перегружать AutoCAD или файл?
см. http://forum.dwg.ru/showthread.php?t=16998

Я написал перезагружай файл.
Supermax вне форума  
 
Автор темы   Непрочитано 13.10.2009, 15:20
#6
Vladmart


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


Цитата:
Сообщение от Supermax Посмотреть сообщение
см. http://forum.dwg.ru/showthread.php?t=16998

Я написал перезагружай файл.
Перегружение файла не помогает...
На VBA выполняется цикл...
открывается файл, выполняется минимум необходимых действий, записывается, закрывается и по новой...
На 7-9 файле AutoCAD вылетает из-за нехватки памяти...

За http://forum.dwg.ru/showthread.php?t=16998 спасибо,хотя пока не понял как это прикрутить.
Я не запускаю скрипт, а прописываю его в стиле Schedule Table?AutoCAD MEP сам запускает их своим обработчиком.

Для Кулик Алексей aka kpblc
прикладываю часть проекта, сам код вставлен в Property Set Definition основной код в VariableList.
Вложения
Тип файла: rar 9-xxxx.rar (575.1 Кб, 52 просмотров)

Последний раз редактировалось Vladmart, 13.10.2009 в 15:33.
Vladmart вне форума  
 
Непрочитано 13.10.2009, 22:33
#7
Кулик Алексей aka kpblc
Moderator

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


Скажу честно - посмотреть что бы то ни было не удалось (проект пуст как барабан - ни конструкций; ни элементов. А на листах много не увидишь).
Специально два раза скачивал (думал, что в первый раз машина глюканула) - ан нет, действительно в проекте пусто...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.10.2009, 09:38
#8
Vladmart


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Скажу честно - посмотреть что бы то ни было не удалось (проект пуст как барабан - ни конструкций; ни элементов. А на листах много не увидишь).
Специально два раза скачивал (думал, что в первый раз машина глюканула) - ан нет, действительно в проекте пусто...
Действительно - ни конструкций; ни элементов в проекте нет.
Есть лист Общие данные (OD.dwg)
-> в нем есть блок штампа (Format)
-> к нему привязано несколько Schedle Table с разными стилями ("Шифр","Наименование сооружения" и т.д.)
-> стили используют Property Set Definition ("Counters","VariableList", "Subset" и др.)
-> в них есть Definition разных типов ("SubSetDescription" с выражениями на VB Scripte, "ProjNumber" с переменными проекта (Project Navigator=> Project => Edit Project => Detailed Information).

В проекте есть переменные, принадлежащие всему проекту, есть переменные, принадлежащие листу.
Одной из задач вышеперечисленного, создать переменные принадлежащие только Subset-у, при этом автоматически меняющимися от названия Subseta и переменных проекта.

Вот добавил переменных, немного кода на VB Scripte и AutoCAD MEP стал "блаженно" зависать
Vladmart вне форума  
 
Непрочитано 14.10.2009, 14:17
#9
Кулик Алексей aka kpblc
Moderator

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


Ннда. Разбираться надо капитально. Навскидку: я бы попытался уменьшить количество вычислений или перевел бы их внутрь одной формулы. Дополнительно попытайся принудительно уничтожать переменные (не помню, работает подобное в VBS или нет) по принципу:
Код:
[Выделить все]
a = Left( "[ProjCurrentSubSet]", 3 )
' <...>
Set a = Nothing
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.10.2009, 15:14
#10
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Может глупость скажу, но объявление переменных в Private не поможет?
Makswell вне форума  
 
Непрочитано 14.10.2009, 15:23
#11
Кулик Алексей aka kpblc
Moderator

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


В VBS, интегрированном в AA / MEP вообще нет объявления переменных. Да и типов переменных тоже нет.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.10.2009, 15:30
#12
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Это просто неявное объявление.
В VBS интегрированном в WSH тоже самое, однако там можно применять и Dim, и Private, и Public, и даже Option Exlicit. Просто зачастую в этом нет никакого смысла, потому что в VBS один фиг есть только тип данных Variant.
Makswell вне форума  
 
Непрочитано 14.10.2009, 15:42
#13
Кулик Алексей aka kpblc
Moderator

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


В АА / МЕР идет выполнение единственной функции с предопределенным именем. И код ты пишешь именно для этой функции.
Лично у меня попытки объявить переменную вечно заканчивались полным провалом.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.10.2009, 18:27
#14
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Vladmart, Посмотрел я твою таблицу, поковырял и обратил внимание, что стоит просто переименовать твой файл OD скажем в OD1, как все начинает просто летать. Страшно ругается на огромное количество отсутствующих внешних ссылок, но летает.
А как только его подвязываешь к проекту - тормоз.
Не знаю, что у тебя за МЕР, но на голом автокаде именно так.
Supermax вне форума  
 
Автор темы   Непрочитано 16.10.2009, 16:01
#15
Vladmart


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


Цитата:
Сообщение от Supermax Посмотреть сообщение
Vladmart, Посмотрел я твою таблицу, поковырял и обратил внимание, что стоит просто переименовать твой файл OD скажем в OD1, как все начинает просто летать. Страшно ругается на огромное количество отсутствующих внешних ссылок, но летает.
А как только его подвязываешь к проекту - тормоз.
Не знаю, что у тебя за МЕР, но на голом автокаде именно так.
В MEP тормозит в обоих случаях.
Кстати, чистый ACAD не должен воспринимать Schedle Table, она воспринимается только в приложениях с AEC технологией (т.к. AA/MEP).
Да и переменные проекта (Project Navigator=> Project => Edit Project => Detailed Information) в ACADе не доступны.

Файл загружается намного быстрее, если уменьшить кол-во переменных, кол-во КОДА на скорость сильно не влияет...
Vladmart вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Переполнение памяти при программировании на VB.Script в Propety Set Definitions



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ГОСТ Р 53231-2008 UnyqUm Поиск литературы, чертежей, моделей и прочих материалов 5 15.09.2009 14:41
VBA: утечка памяти при вставке блоков Mikha Программирование 13 03.04.2009 09:18
Электромагнитная пушка T-Yoke Машиностроение 112 06.08.2008 18:48
Мониторы LCD CRT Разное 94 17.06.2008 10:51
БРЕД СИВОЙ КОБЫЛЫ Kryaker Разное 1876 29.12.2006 23:41