Последние сообщения

Последние сообщения

Страницы: 1 ... 8 9 [10]
91
Попробуй воспользоваться методом Table.RecomputeTableBlock(true). И возможно в отдельной транзакции.
Спасибо! Именно этого и не хватало. Использовал в этой же транзакции
92
Видео с ScreenCast создать не получилось (ошибка при uploading).
Autodesk отменила поддержку Autodesk Screencast. Так что записывай видео для Youtube и вставляй сюда ссылки.
93
Попробуй воспользоваться методом Table.RecomputeTableBlock(true). И возможно в отдельной транзакции.
94
Добрый день.
Подскажите плиз где и как смотреть изменения, которые происходят от версии к версии.
У меня есть проект. Еще на Revit2019.
И вот пришло время его компилировать под 2022 и 2024. И просто так не получается.
Вот например, пропала структура DisplayUnitType, а FormatOptions уже не содержит тех переменных. ( DisplayUnits, UnitSymbol ).
В общем чтобы за каждым разом не спрашивать что делать, хочу найти где описан переход.
Спасибо.

95
Добрый день! Подскажите, имеется таблица. При программном изменении ее размеров (например, удаление части колонок и столбцов), границы удаленных ячеек продолжают отображаться. За них можно даже выделить таблицу, хотя реально ячеек там нет. Если скопировать и вставить такую таблицу, то её копия уже отображается правильно. Regen (программный и ручной) не помогает. В чем может быть ошибка? Видео с ScreenCast создать не получилось (ошибка при uploading).
Исходная таблица, например, 2х2


После запуска удаления одного столбца и одной колонки получаем


При копировании таблица (при перетаскивании) всё еще отображается как 2х2

но уже при вставке копии становится 1х1


Код прикладываю
Код - C# [Выбрать]
  1. public void CreateTable(string DevName, ObjectId TabObjId, List<string> CableNames) // Где TabObjId - ObjectId существующей таблицы
  2.         {
  3.             Document doc = Application.DocumentManager.MdiActiveDocument;
  4.             Database db = doc.Database;
  5.             Editor ed = doc.Editor;
  6.             int TabLength = CableNames.Count();
  7.  
  8.             Transaction tr = db.TransactionManager.StartTransaction();
  9.             using (tr)
  10.             {
  11.                 try
  12.                 {
  13.                     Table tab = tr.GetObject(TabObjId, OpenMode.ForRead) as Table;
  14.                     tab.UpgradeOpen();
  15.                     tab = ClearTable(tab);
  16.                     Cell c;
  17.                     for (int i = 1; i < tab.Rows.Count; i++)
  18.                         tab.DeleteRows(1, i);
  19.                     for (int i = 1; i < tab.Columns.Count; i++)
  20.                         tab.DeleteColumns(1, i);
  21.                     Cell c = tab.Cells[0, 0];
  22.                     tab.GenerateLayout();
  23.                     //tab.DowngradeOpen();
  24.                     tr.Commit();
  25.                     ed.Regen();
  26.                 }
  27.                 catch (System.Exception ex)
  28.                 {
  29.                     Autodesk.AutoCAD.Runtime.Exception ex2 =
  30.                       ex as Autodesk.AutoCAD.Runtime.Exception;
  31.                     if (ex2 != null && ex2.ErrorStatus != ErrorStatus.WasOpenForUndo)
  32.                     {
  33.                         ed.WriteMessage("\nAutoCAD exception: {0}", ex2);
  34.                     }
  35.                     else if (ex2 == null)
  36.                     {
  37.                         ed.WriteMessage("\nSystem exception: {0}", ex);
  38.                     }
  39.                 }
  40.             }
  41.         }
  42.  
96
Попробуй оформить
Код - C# [Выбрать]
  1.         doc.Database.SaveAs(path, true, DwgVersion.Current, doc.Database.SecurityParameters);
  2.  
  3.         doc.CloseAndDiscard();
как отдельную команду с флагом Session, и запускать ее при помощи doc.SendStringToExecute после запуска _PURGE
97
AutoCAD .NET API / Re: Открытие - Очистка -Закрытие файла чертежа
« Последний ответ от AVait 23-02-2024, 14:25:01 »
Так и должно быть, так как SendStringToExecute выполняется ассинхронно, т.е. уже после завершения команды.

Возможно вы можете подсказать на примере как можно реализовать выполнение очистки файла от неиспользуемых объектов и стилей по принципу как работает стандартная команда "ОЧИСТИТЬ" в автокаде?
98
Приветствую. Попытался к коду Александра прикрутить окно, где есть текстбокс для имени фильтра слоёв, этот же текстбокс есть и Expression для фильтра.
Есть два затыка:
1.Expression не записывается, видимо, неверно передаю Expression?
2.Странное поведение диспетчера слоёв - фильтр создаётся, но отображается если закрыть-открыть диспетчер или если запустить команду, находясь внутри другого фильтра в диспетчере. Нужно вот здесь пробовать обновить диспетчер Autodesk.AutoCAD.Windows.Data.LayerFilterCollection?

<a href="http://adn-cis.org/sozdanie-i-dostup-k-informaczii-filtra-sloyov.html" title="Создание и доступ к информации фильтра слоёв">Создание и доступ к информации фильтра слоёв[/url]

Код - C# [Выбрать]
  1. public class CreateLayerFilMtd
  2.     {
  3.         public void CreateLayerFilter(Document doc, string MyLyFilter)
  4.         {
  5.             var db = doc.Database;
  6.             LayerFilterTree filterTree = db.LayerFilters;
  7.             LayerFilterCollection filters
  8.                                     = filterTree.Root.NestedFilters;
  9.             {
  10.                 using (var tr = db.TransactionManager.StartTransaction())
  11.                 {
  12.                     using (LayerFilter layerFilter = new LayerFilter())
  13.                     {
  14.                         // Создаём новый фильтр слоёв
  15.                         layerFilter.Name = MyLyFilter;
  16.                         filters.Add(layerFilter);
  17.                         // Устанавливаем изменённые фильтры для базы данных
  18.                         db.LayerFilters = filterTree;
  19.                         string myst;
  20.                         myst = string.Concat("NAME == \"*",MyLyFilter,"*\"");
  21.                         layerFilter.FilterExpression = myst;
  22.                     }
  23.                tr.Commit();
  24.                 }
  25.             }
  26.         }
  27.     }
  28.  
99
Так и должно быть, так как SendStringToExecute выполняется ассинхронно, т.е. уже после завершения команды.
100
AutoCAD .NET API / Открытие - Очистка -Закрытие файла чертежа
« Последний ответ от AVait 22-02-2024, 16:56:46 »
Всем привет!
Столкнулся с проблемой закрытия файла после его открытия, очистки и сохранения.
Если не закрывать файл, то все очищается и сохраняется и можно закрыть вручную, НО если использоваться любые методы программного закрытия файла (или не любые, просто использовал, что знаю), то файл остается таким как и до очистки а сохранение либо исчезает либо вовсе не происходит.

Код - C# [Выбрать]
  1. public void PurgeFileMethod(string path)
  2. {
  3.     using (ApplicationCivil.DocumentManager.MdiActiveDocument.LockDocument())
  4.     {
  5.         var doc = ApplicationCivil.DocumentManager.Add(path);
  6.         if (doc == null) return;
  7.  
  8.         doc.SendStringToExecute("-PURGE\n", true, false, true);
  9.         doc.SendStringToExecute("Все\n", true, false, true);
  10.         doc.SendStringToExecute("*\n", true, false, true);
  11.         doc.SendStringToExecute(\n", true, false, true);
  12.        
  13.         doc.Database.SaveAs(path, true, DwgVersion.Current, doc.Database.SecurityParameters);
  14.  
  15.         doc.CloseAndDiscard();
  16.     }
  17. }
  18.  

Возможно кто-то сталкивался с такой проблемой и сможет помочь, благодарю за помощь.
Страницы: 1 ... 8 9 [10]