|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Таблица в autocad не пересчитывает формулы
Регистрация: 28.01.2009
Сообщений: 26
|
||
Просмотров: 47755
|
|
||||
__________________
*...И Случай, бог изобретатель. * |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
По-моему, формулы вбивались "впрямую" в ячейки. Если их создавать "длинным" путем, через вставку поля,- то вроде все нормально.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.03.2008
Сообщений: 2,680
|
Может кто знает, есть ли возможность в кадовских таблицах присвоить каждой ячейке уникальный адрес, который бы не менялся при удалении/добавлении строк/столбцов (переменная, может, есть какая)? По аналогии с excell (либо там ссылки обновляются - не знаю точно того алгоритма). Дело в том, что поле, ссылающееся на ячейку, допустим, A3 в таблице слетает (2008), либо принимает значение ячейки A4 (2010) при удалении строки 2. А мне нужно, чтобы поле ссылалось на конкретную ячейку.
|
|||
![]() |
|
||||
Регистрация: 28.01.2009
Сообщений: 26
|
skif58, с текстом помогло. Но был найден и другой способ: заблокировать, а потом разблокировать слой на котором находится текст))
Может кто подскажет, появилась еще проблема. При копировании таблиц или при очередном открытии файла в таблицах в ранее чистый ячейках появляются какие-то знаки, которых там не должно быть. |
|||
![]() |
|
||||
Регистрация: 10.11.2008
Сообщений: 10
|
Добрый день создал кучу таблиц в файле AutoCAD 2006 завязал их с полями, вычисления, вообщем работало на ура просто сказка.
После установки AutoCAD 2010 лицензионного в файлах АutoCAD перестали обновлятся поля в некоторых таблицах. Переделывать таблицы - долго и то не факт что будут работать. Значение переменной fieldeval = 31. Самое интересное, что в тексте поля обновляются, а вычисления типа 2+3 = 1 приходится каждый раз заходить нажимаешь редактировать поле - там вычисление правильное. Нажимаешь ок и обновляется. Как решить данную проблему ? Может у кого есть лисп хотя бы типа каждую ячейку обновляешь поле. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
А сервис-пак на 2010 установлен?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Попробовал погонять таблицу. Странное поведение: если войти в редактирование поля, и там по новой создать формулу (нажав по ходу дела кнопку [Evaluate]), то все начинает считаться корректно.
Программного решения придумать не удалось.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.11.2008
Сообщений: 10
|
Ну пока что я решаю данную проблемку через одно место и долго. Выделяю ячейку, кликаю правой кнопонькой, выбираю редактировать поле, потом кликаю на кнопоньку Вычислить и кликаю ОК. Но проблема, что так нужно делать во всех формулах. Мо на VBA сделать перебор всех полей в ячейках таблицы и выполнение функцию Вычислить.
Сколько не искал решения, пока его нету. Уже разобрался откуда поля берутся, но они подвязаны с dll, так что понять, где проблема зарыта мне неясно. |
|||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692
|
Нет, не найдено. Косяк таинственный, непонятно с чем связанный, т.к. в одном файле может все нормально обновляться, в другом - нет. Много раз уже и лисперов форумских просил посмотреть, что можно сделать, - никто не отозвался. (ну, хотя бы какой-нибудь имитатор прохода по ячейкам таблицы с заходом в редактор поля и нажатием "ОК"..)
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
Другие берега Регистрация: 12.09.2009
г. Краснодар
Сообщений: 315
|
Самое интересное - те поля, которые связаны со свойством чертежа для заполнения штампа работают без проблем, а вот именно те, которые в таблицах работают косячно. Из-за этого спецификации выходят неверными - приходится все проверять перед печатью.
|
|||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692
|
Если штамп - таблица, то не факт. Ссылки на свойства документа в ячейках тоже имеют свойство глючить. Причем, иногда - безнадежно, то бишь в редактор поля зашел, отредактировал, окей нажал, - вроде все нормально. Файл сохранил, закрыл.. Открыл, - поле показывает не то значение. Я теперь в ячейку таблицы вставляю блок, а в блоке - ссылку на поле. Если с полями все нормально, тогда обновляется автоматом, если нет - захожу в блок, меняю там, - меняется во всех штампах..
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
Регистрация: 10.11.2008
Сообщений: 10
|
Вроде решилась проблема с изменением форматов таблицы. Тоесть нужно изменить формат с текстового на десятичное число, должно помочь.
----- добавлено через ~6 мин. ----- AlexV - Точно, там стоит тестовый формат текста, нужно заменить на десятичное число. Единственный ньюанс, нужно все же один раз редактировать поле, что бы его "разглючило" после этого будет работать корректно. В случае с таблицей сверху, просто одну формулу разглючил остальные скопировал с этой разглюченой. ----- добавлено через ~7 мин. ----- конфликт форматов |
|||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692
|
Цитата:
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
Регистрация: 25.03.2013
Сообщений: 49
|
Всем привет!
В-общем есть два файла. Первый образец, где все считается в таблицах и ссылках на ячейки, взял первый файл как образец, скопировал как новый проект, через "найти и заменить" поменял штампы, наименование и т.д по тексту. Текст (МТЕКСТ) форматированный с абзацем и междустрочным интервалом. После того как зашел в текст слетело форматирование (gost_tybe B) - именно это я думаю и есть причина, и после этого даже если вбить в ячейку с формулой "=2+2" она не обновляет значение. До этого с теми же форматированиями и стилями текста и таблиц создал и правил +100500 файлов - и такого бага никогда не было, все считалось без проблем. Автокад сейчас 2017 как всегда с СПДС Модулем. Грешил на лисп "Prokat" с этого сайта, но даже после сноса его, всех настроек, чистки реестра и переустановки Ватокада, проблема осталась. Надеюсь может кто-то глянет и возможно найдет причину бага. Заранее спасибо! P.D. Чертежи очищать не стал, команда _updatefield - не помогает, при аудите - ошибок нет. |
|||
![]() |
|
||||
Инженер Регистрация: 02.04.2009
РФ
Сообщений: 864
|
Не создавая новую тему, вопрос задам здесь!
Есть две таблицы в одной объемы работ в другой материалы на эти работы. Эти таблицы идут парой из листа в лист. Когда копирую две таблицы, та в которой есть ссылка на ячейку сохраняет путь к таблице и не изменяет ее при копировании. Это не сразу замечаешь, а только когда понимаешь что при изменении объемов кол-во материала не меняется. Как быть? |
|||
![]() |
|
||||
Инженер Регистрация: 02.04.2009
РФ
Сообщений: 864
|
А теперь помучаю вопросиками:
- высота шрифта в шапке таблицы - строго 5мм - высота текста в остальной части - 3,5мм - высота строк строго не менее 8мм Шрифт отличается - я пользуюсь ГОСТ тип А. Шрифт в таблице отличается от самого чертежа. |
|||
![]() |
|
||||
Регистрация: 12.12.2009
Сообщений: 39
|
Шел 2018 год а таблицы все не пересчитывает. Как видно из прилагаемых файлов и скрина, значение в таблице не верное. Оно останется не верным т. е. вообще не пересчитается если попробовать изменить цифры в таблице уже заданный ячеек. Попытка скопировать ячейку в другое место и изменить значение цифр там, тоже не даст правильного результата. Только если войти в ячейку и скопировать текст из нее, тогда математические формулы заработают. Почему так получается и как этого избежать?
|
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
Нашёл способ решения!
1) Стереть знак "=" в формуле 2) Выйти из ячейки 3) Зайти в ячейку 4) Написать знать "=" 5) Выйти из ячейки Всё это можно запрограммировать в VBA. Правда предварительно надо запомнить высоты строк таблицы, так как при появлении текста формул на шаге 2 меняется высота строк таблицы. Когда сделаю програмку в Excel напишу вам об этом! |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Заметил одну особенность: Если скопировать значение ячейки с формулой в буфер, вбить туда просто текст, вновь зайти в редактор и вставить значение ячейки из буфера, то она начинает работать.
Т.е нужно заменить значение ячейки текстом, а затем опять формулой ----- добавлено через ~7 мин. ----- Взял из этой темы LISP. Подготовка подосновы пару функций. Написал команду, которая в ячейках с формулами: - запоминает значение формулы ячейки - заполняет значение пустым текстом - заполняет значение запомненной формулой Вроде после этого формулы "оживают" (проверено на файлах в #15, #6, #4) Код:
Обновил код. Добавил пропущенную Ф-цию
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 04.02.2018 в 11:02. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
МишаИнженер, Решение выложил а этой теме Не обновляются поля (вычисления) в таблицах AutoCAD 2006,2008,2010
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Темы объединены
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
Сделал программу для обновления формул в таблицах! Проверял, всё работает! Теперь проверьте сами: скачайте файл zip и запустите Excel (библиотеки в Excel настроены на AutoCAD2013, для настройки на другие версии AutoCAD запускайте команду Tools->References в VBA Excel). Вопрос модератору: почему нельзя загружать файлы xlsm? Это выглядит не современно! Вы отстаете от мировых тенденций!
|
|||
![]() |
|
||||
Offtop: может потому что загрузка любых исполняемых файлов на адекватные ресурсы запрещена?
__________________
Мастерская СПДС |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Цитата:
Задавался уже этот вопрос - ответ был типа: нет существенного спроса) и давно файлы Excel c макросами *.xlsm стали исполняемыми? |
|||
![]() |
|
||||
так же, как и vbs и bat
уязвимость
__________________
Мастерская СПДС |
||||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
только vbs и bat запускается на уровне операционной системы кликом пользователя, а xlsm - надо загрузить в excel сначала, и еще преднамеренно поставить выполнение макросов без подтверждения (что уже требует определенного уровня от пользователя). И что мешает сохранить в старый формат xls, который разрешен к загрузке тут на форуме?
|
|||
![]() |
|
||||
тем не менее на многих форумах и других ресурсах так. не мы решаем.
ну и правила хорошего тона подразумевают все же файлы упаковывать
__________________
Мастерская СПДС |
||||
![]() |
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692
|
Цитата:
Цитата:
Ну и время действия - пока не понял, отчего - но очень сильно различается. Одна табличка обрабатывается то 5 секунд, то :
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
![]() |
|
||||
если ты не против...
перед началом работы с таблицами включи подавление регенерации objТабл.RegenerateTableSuppressed = True а по окончании выключи objТабл.RegenerateTableSuppressed =False должно побыстрее работать.. ------ недостаточно активировать окно АК objAcadDoc.Activate надо ему еще фокус передать AppActivate objПриложениеAutoCAD.Caption -------------- ну и последнее, коль собираешь таблицы селсетом, примени фильтр выбора именно таблиц ("Acad_Table"), что бы потом не проверять является ли объект набора таблицей.
__________________
Мастерская СПДС |
||||
![]() |
|
||||
Регистрация: 14.12.2008
Сообщений: 1,134
|
doctorraz,
Исправил программу: отключил регенерацию таблиц и потом снова включил, сделал передачу фокуса программам, фильтр выбора настроить не удалось Добавил таймер подсчёта времени в функцию Поменял название файла. Проверьте работу программы. Всё ли нормально? |
|||
![]() |
|
||||
Инженер-конструктор Регистрация: 29.10.2007
Юбилейный МО
Сообщений: 269
|
МишаИнженер, спасибо за скрипт, надеюсь пригодится!
Протестировать сложно в связи с тем, что этот долбаный глюк с не обновляющимися формулами появляется в самый неподходящий момент... У меня acad2018x64, поэтому пришлось немного исправить объявление переменных и функций на ptrsafe и LongPtr. Может я там чего и нахимичил, но, вроде, работает. Выкладываю для тех, кто в vba ещё бо'льший ламер, чем я. |
|||
![]() |
|
||||
Регистрация: 12.12.2009
Сообщений: 39
|
Так так так скрипт по ведомому ему желанию меняет буквы ячеек в формулах (было например A10 после обработки A19) проверить такое становиться еще сложнее чем знать, что формулы просто не пересчитаны. И два он меняет цифровые значения ( было видимая часть число 90, после входа в ячейку с этим числом 90.99999 ). Закономерность проявления багов не проследилась
![]() Последний раз редактировалось DMS-chiii, 17.09.2018 в 15:12. |
|||
![]() |
|
||||
конструктор Регистрация: 03.03.2011
СПб
Сообщений: 26
|
Цитата:
![]() но лисп работает на выбранном объекте (объектах)... можно ли сделать чтобы лисп по запуску обновлял все таблицы на разных листах (layout) ??? оченема надо ![]() Последний раз редактировалось Bumbastic85, 26.03.2019 в 11:35. |
|||
![]() |
|
||||
Регистрация: 25.03.2013
Сообщений: 49
|
Всем доброго времени суток!
До сих пор борюсь с этой проблемой. Сделал КЖ, используя lisp "TCF", связи с экселем (в исходнике ("шаблоне") все работало). Когда делал - тоже все обновлялось в таблицах, на следующий день доделал проект и заметил, что не обновляется. Лечил lispом RETABLE - но сбивалось форматирование ячеек - что не есть хорошо - врукопашную много действий. Не смирился. Открыл чистый файл - переносил из старого чертежа примитивы, таблицы, размеры, выноски делал заново, после каждого листа - бэкапил чертеж. Сегодня пришел - надо было изменить в проекте некоторые моменты. Хрясь и опять ни фига не работает. При этом на двух листах общих данных есть "МТЕКСТ", это "МТЕКСТ" был отформатирован под абзац 10 и междустрочный 1,4. Захожу на листы общих данных и вижу, что форматирование падлы МТЕКСТА слетело: междустрочный везде разный, поля со значениями на разной высоте с текстом. Как я понял после бага с "МТЕКСТОМ" - возникает баг с обновлением таблиц. В бэкапе все с форматированием хорошо и все работает. Файл приложить не могу - конфиденциальность, но может кому-то хорошо понимающему в Ватокаде - эта подсказка поможет выявить проблему с "необновлением" полей в таблицах. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
DMS-chiii,
Можно попробовать мой вариант пересчета таблиц. Команда RECALCTABLE. (подразумевается, что командой _NETLOAD для загрузки dll-файла пользоваться умеешь и как разблокировать приложение, загруженное из интернета знаешь). Должно работать начиная с AutoCAD 2013 (проверял только в 2017...2020)
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 12.12.2009
Сообщений: 39
|
2 kpblc про этот https://forum.dwg.ru/showpost.php?p=...0&postcount=63 файл.
2 Александр Ривилис большое спасибо в 2020 полёт нормальный |
|||
![]() |
|
||||
Отлично. Похоже вся проблема связана с тем, что в какой-то момент времени у полей устанавливается признак "Disable" вместо "Automatic". Моя программа рекурсивно находит все поля в таблице, меняет им признак на "Automatic" и обновляет их.
На AutoLisp/VBA это сделать нельзя. Только AutoCAD .NET API или ObjectARX. Я выбрал AutoCAD .NET API, чтобы не плодить кучу различных arx-файлов (версии и разрядность AutoCAD)
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
Александр Ривилис, а исходник можно глянуть? Ну так, для понимания, насколько я в C# никакой
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Кулик Алексей aka kpblc,
Можно. Код:
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 20.08.2021
Сообщений: 1
|
Александр Ривилис, Здравствуйте! Попробовал установить в 2019 автокад команду RECALCTABLE - не работает. После загрузки dll автокад выдает ошибку:
Не удалось загрузить сборку. Сведения об ошибке: System.IO.FileLoadException: Could not load file or assembly 'file:///C:\Program Files\Autodesk\1\ReCalcTable.dll' or one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515) File name: 'file:///C:\Program Files\Autodesk\1\ReCalcTable.dll' ---> System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch. See http://go.microsoft.com/fwlink/?LinkId=155569 for more information. at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark) at System.Reflection.Assembly.LoadFrom(String assemblyFile) at Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName) at loadmgd() Подскажите как это исправить? |
|||
![]() |
|
||||
Цитата:
![]()
__________________
Сообщество программистов Autodesk в СНГ - техническая поддержка |
||||
![]() |
|
||||
Регистрация: 21.09.2021
Сообщений: 1
|
Добрый вечер! возникла проблема, копирую две связанные таблицы из одного файла автокад 2019 в другой, связь в ячейках таблицы изменяется и мы видим ####, к тому же в редактировании формулы в поле ячейки вместо ссылки на таблицу с номером появляется =Table(0). Если править в каждой ячейке формулу руками, при сохранении всё слетает обратно к =Table(0). Может быть кто то сталкивался с таким и знает решение данной проблемы?
|
|||
![]() |
|
||||
Регистрация: 05.06.2014
Сообщений: 77
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Формулы в таблицах AutoCAD | Krieger | AutoCAD | 94 | 04.02.2024 17:17 |
Видеоуроки AutoCAD | kosmax | AutoCAD | 173 | 17.02.2017 15:08 |
Таблица Exel -> Autocad | Skydog | AutoCAD | 14 | 11.03.2009 14:58 |
Autocad 2005 формулы в таблицах? | X-DeViL | AutoCAD | 1 | 24.05.2004 15:20 |