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

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

Таблица в autocad не пересчитывает формулы

Ответ
Поиск в этой теме
Непрочитано 26.05.2009, 09:31
Таблица в autocad не пересчитывает формулы
aspid132
 
Регистрация: 28.01.2009
Сообщений: 25

Здравствуйте. У меня проблема с таблицами.
Есть таблица с забитыми в нее формулами. Если поменять числа в таблице, то формула итоговый результат не пересчитывает. Причем, иногда бывают удачные дни, когда все-таки подсчет происходит, но это бывает редко. Скорее всего проблема не с автокадом, т.к. на разных компах результат один и тот же. Таблица была создана в автокаде, но побывала в файле, который изначально был создан в zwcad. Может быть проблема в файле?
Есть еще одна небольшая проблемка: однострочный текст выделяется, когда захочет, ведет себя так же, как растровое изображение при значении переменной imageframe=0. Подскажите, пожалуйста, что делать.

Вложения
Тип файла: dwg
DWG 2004
Таблица.dwg (214.0 Кб, 1754 просмотров)

Просмотров: 44325
 
Непрочитано 06.02.2018, 16:52
1 | #61
МишаИнженер


 
Регистрация: 14.12.2008
Сообщений: 1,079


doctorraz,
Исправил программу: отключил регенерацию таблиц и потом снова включил, сделал передачу фокуса программам, фильтр выбора настроить не удалось
Добавил таймер подсчёта времени в функцию
Поменял название файла. Проверьте работу программы. Всё ли нормально?
Вложения
Тип файла: zip Обновление таблиц.zip (90.2 Кб, 143 просмотров)
МишаИнженер вне форума  
 
Непрочитано 06.02.2018, 21:20
#62
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,035


Зачем в файле экселя листы с какими то расчетами?
Сергей812 вне форума  
 
Непрочитано 27.03.2018, 12:55
1 | #63
Klo

Инженер-конструктор
 
Регистрация: 29.10.2007
Юбилейный МО
Сообщений: 266


МишаИнженер, спасибо за скрипт, надеюсь пригодится!
Протестировать сложно в связи с тем, что этот долбаный глюк с не обновляющимися формулами появляется в самый неподходящий момент...
У меня acad2018x64, поэтому пришлось немного исправить объявление переменных и функций на ptrsafe и LongPtr. Может я там чего и нахимичил, но, вроде, работает.
Выкладываю для тех, кто в vba ещё бо'льший ламер, чем я.
Вложения
Тип файла: rar Обновление таблиц2018x64.rar (94.2 Кб, 170 просмотров)
Klo вне форума  
 
Непрочитано 31.08.2018, 14:16
#64
DMS-chiii


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


А есть такое обновление таблиц на чистом автокаде 2018 и выше? А увидел чуть выше

Последний раз редактировалось DMS-chiii, 31.08.2018 в 14:26.
DMS-chiii вне форума  
 
Непрочитано 17.09.2018, 15:04
#65
DMS-chiii


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


Так так так скрипт по ведомому ему желанию меняет буквы ячеек в формулах (было например A10 после обработки A19) проверить такое становиться еще сложнее чем знать, что формулы просто не пересчитаны. И два он меняет цифровые значения ( было видимая часть число 90, после входа в ячейку с этим числом 90.99999 ). Закономерность проявления багов не проследилась Версия лиспа из 50 поста.

Последний раз редактировалось DMS-chiii, 17.09.2018 в 15:12.
DMS-chiii вне форума  
 
Непрочитано 26.03.2019, 11:27
#66
Bumbastic85

конструктор
 
Регистрация: 03.03.2011
СПб
Сообщений: 26


Цитата:
Сообщение от VVA Посмотреть сообщение
Заметил одну особенность: Если скопировать значение ячейки с формулой в буфер, вбить туда просто текст, вновь зайти в редактор и вставить значение ячейки из буфера, то она начинает работать.
Т.е нужно заменить значение ячейки текстом, а затем опять формулой

Взял из этой темы LISP. Подготовка подосновы пару функций. Написал команду, которая в ячейках с формулами:
- запоминает значение формулы ячейки
- заполняет значение пустым текстом
- заполняет значение запомненной формулой
Вроде после этого формулы "оживают" (проверено на файлах в #15, #6, #4)
[/color][/size]
спасибо за труды
но лисп работает на выбранном объекте (объектах)... можно ли сделать чтобы лисп по запуску обновлял все таблицы на разных листах (layout) ??? оченема надо

Последний раз редактировалось Bumbastic85, 26.03.2019 в 11:35.
Bumbastic85 вне форума  
 
Непрочитано 12.04.2019, 07:37
#67
zRaFiNaDz


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


Всем доброго времени суток!
До сих пор борюсь с этой проблемой. Сделал КЖ, используя lisp "TCF", связи с экселем (в исходнике ("шаблоне") все работало). Когда делал - тоже все обновлялось в таблицах, на следующий день доделал проект и заметил, что не обновляется. Лечил lispом RETABLE - но сбивалось форматирование ячеек - что не есть хорошо - врукопашную много действий. Не смирился.
Открыл чистый файл - переносил из старого чертежа примитивы, таблицы, размеры, выноски делал заново, после каждого листа - бэкапил чертеж. Сегодня пришел - надо было изменить в проекте некоторые моменты. Хрясь и опять ни фига не работает. При этом на двух листах общих данных есть "МТЕКСТ", это "МТЕКСТ" был отформатирован под абзац 10 и междустрочный 1,4. Захожу на листы общих данных и вижу, что форматирование падлы МТЕКСТА слетело: междустрочный везде разный, поля со значениями на разной высоте с текстом. Как я понял после бага с "МТЕКСТОМ" - возникает баг с обновлением таблиц. В бэкапе все с форматированием хорошо и все работает.
Файл приложить не могу - конфиденциальность, но может кому-то хорошо понимающему в Ватокаде - эта подсказка поможет выявить проблему с "необновлением" полей в таблицах.
zRaFiNaDz вне форума  
 
Непрочитано 02.05.2019, 10:21
#68
DMS-chiii


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


Люди добрые помогите для 2020 обновить обновлятор.
DMS-chiii вне форума  
 
Непрочитано 05.05.2019, 16:21
#69
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от DMS-chiii Посмотреть сообщение
Люди добрые помогите для 2020 обновить обновлятор.
Чего??
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.05.2019, 15:51
3 | #70
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


DMS-chiii,
Можно попробовать мой вариант пересчета таблиц. Команда RECALCTABLE.
(подразумевается, что командой _NETLOAD для загрузки dll-файла пользоваться умеешь и как разблокировать приложение, загруженное из интернета знаешь).
Должно работать начиная с AutoCAD 2013 (проверял только в 2017...2020)
Вложения
Тип файла: zip ReCalcTable.dll.zip (4.0 Кб, 418 просмотров)
Александр Ривилис вне форума  
 
Непрочитано 07.05.2019, 19:50
#71
DMS-chiii


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


2 kpblc про этот https://forum.dwg.ru/showpost.php?p=...0&postcount=63 файл.
2 Александр Ривилис большое спасибо в 2020 полёт нормальный
DMS-chiii вне форума  
 
Непрочитано 07.05.2019, 20:37
#72
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от DMS-chiii Посмотреть сообщение
2 Александр Ривилис большое спасибо в 2020 полёт нормальный
Отлично. Похоже вся проблема связана с тем, что в какой-то момент времени у полей устанавливается признак "Disable" вместо "Automatic". Моя программа рекурсивно находит все поля в таблице, меняет им признак на "Automatic" и обновляет их.
На AutoLisp/VBA это сделать нельзя. Только AutoCAD .NET API или ObjectARX. Я выбрал AutoCAD .NET API, чтобы не плодить кучу различных arx-файлов (версии и разрядность AutoCAD)
Александр Ривилис вне форума  
 
Непрочитано 07.05.2019, 21:21
#73
Кулик Алексей aka kpblc
Moderator

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


Александр Ривилис, а исходник можно глянуть? Ну так, для понимания, насколько я в C# никакой
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.05.2019, 22:48
3 | #74
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Кулик Алексей aka kpblc,
Можно.
Код:
[Выделить все]
 // (C) Copyright 2019 by  
//
using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;

#pragma warning disable 0618

// This line is not mandatory, but improves loading performances
[assembly: CommandClass(typeof(Rivilis.ReCalcTable))]

namespace Rivilis
{
  public class ReCalcTable
  {
    [CommandMethod("ReCalcTable")]
    public void ReCalcTableHandler() // This method can have any name
    {
      int lcid = SystemObjects.DynamicLinker.ProductLcid; // Язык AutoCAD
      Document doc = Application.DocumentManager.MdiActiveDocument;
      if (doc == null)
        return;
      Editor ed = doc.Editor;
      Database db = doc.Database;
      PromptSelectionOptions prOpt = new PromptSelectionOptions();
      prOpt.MessageForAdding = (lcid == 0x419) ?
        "Выберите таблицы для пересчета полей" :
        "Select tables in order to recalculate fields";
      prOpt.MessageForRemoval = (lcid == 0x419) ?
        "Удалите таблицы из набора" :
        "Remove tables from selection";
      SelectionFilter sf = new SelectionFilter(
        new TypedValue[] {
          new TypedValue (0, "ACAD_TABLE")
        }
      );
      PromptSelectionResult rs = ed.GetSelection(prOpt, sf);
      if (rs.Status != PromptStatus.OK || rs.Value.GetObjectIds().Length == 0)
        return;
      ObjectId[] ids = rs.Value.GetObjectIds();
      foreach (ObjectId id in ids)
      {
        using (Table tab = id.Open(OpenMode.ForWrite) as Table)
        {
          for (int i = 0; i < tab.Rows.Count; i++)
          {
            for (int j = 0; j < tab.Columns.Count; j++)
            {
              ObjectId idField = tab.Cells[i, j].FieldId;
              if (!idField.IsNull && idField.IsValid)
              {
                using (Field fld = idField.Open(OpenMode.ForWrite) as Field)
                {
                  FieldEvalRecursive(fld);
                }
              }
            }
          }
          tab.RecomputeTableBlock(true);
          tab.RecordGraphicsModified(true);
        }
      }
      ed.Regen();
    }
    /// <summary>
    /// Функция рекурсивно обновляет связанные поля 
    /// </summary>
    /// <param name="fld"></param>
    public void FieldEvalRecursive(Field fld)
    {
      ObjectId[] idsChilds = fld.GetChildrenIds();
      foreach (ObjectId idChild in idsChilds)
      {
        using (Field fldChild = idChild.Open(OpenMode.ForWrite) as Field)
        {
          if (fldChild.EvaluationOption == FieldEvaluationOptions.Disable) {
            fldChild.EvaluationOption = FieldEvaluationOptions.Automatic;
          }
          FieldEvalRecursive(fldChild);
          fldChild.Evaluate();
        }
      }
      if (fld.EvaluationOption == FieldEvaluationOptions.Disable) {
        fld.EvaluationOption = FieldEvaluationOptions.Automatic;
      }
      fld.Evaluate();
    }
  }
}
Александр Ривилис вне форума  
 
Непрочитано 20.08.2021, 14:05
#75
Евгений_22


 
Регистрация: 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()

Подскажите как это исправить?
Евгений_22 вне форума  
 
Непрочитано 20.08.2021, 18:12
1 | #76
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Евгений_22 Посмотреть сообщение
Александр Ривилис, Здравствуйте! Попробовал установить в 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()

Подскажите как это исправить?
Похоже вы не разблокировали файл, после скачивания его с сайта. Его нужно разблокировать:

Александр Ривилис вне форума  
 
Непрочитано 21.09.2021, 17:16 Таблица в autocad не пересчитывает формулы
#77
Darkside121


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


Добрый вечер! возникла проблема, копирую две связанные таблицы из одного файла автокад 2019 в другой, связь в ячейках таблицы изменяется и мы видим ####, к тому же в редактировании формулы в поле ячейки вместо ссылки на таблицу с номером появляется =Table(0). Если править в каждой ячейке формулу руками, при сохранении всё слетает обратно к =Table(0). Может быть кто то сталкивался с таким и знает решение данной проблемы?
Darkside121 вне форума  
 
Непрочитано 30.11.2021, 13:56
#78
Barmaley Bubusikin


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


Цитата:
Сообщение от Darkside121 Посмотреть сообщение
Добрый вечер! возникла проблема, копирую две связанные таблицы из одного файла автокад 2019 в другой, связь в ячейках таблицы изменяется и мы видим ####
А как копируешь? ctrl+c, ctrl+v? Попробуй копировать с базовой точкой
Barmaley Bubusikin вне форума  
 
Непрочитано 21.04.2022, 16:05
#79
DMSskop


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


Если что в 2023 это повторяется из ранее созданных файлов и таблиц.
DMSskop вне форума  
 
Непрочитано 21.04.2022, 16:15
#80
Кулик Алексей aka kpblc
Moderator

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


https://autolisp.ru/2020/09/09/formulas-in-tables/ ?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Таблица в autocad не пересчитывает формулы

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формулы в таблицах 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