Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 ... 22 След.
Удаление ссылки на файл
 
[QUOTE]Паша Маргинал написал:
То есть если я перед удалением фрагмента скопирую сам фрагмент, удалю его, обновлю ссылки и вставлю копию то должно сработать?[/QUOTE]
Зачем так усложнять? Можно переопределить свойство "FilePath". Фрагменты легко заменяются на уровне переременных документа (см. вложение). Если путь фрагмента определен переменной документа, то ссылки обновлять не нужно, достаточно обновить модель. Таким же образом, можно погасить фрагмент, без удаления.

[CODE]
using TFlex.Model;
using TFlex.Model.Model2D;
using TFlex.Model.Model3D;

namespace Test
{
   public class Class11
   {
       public static void Run()
       {
           Document document = TFlex.Application.ActiveDocument;

           if (document != null)
           {
               document.BeginChanges("");

               foreach (FileLink link in document.FileLinks)
               {
                   if (link.IsOriginalFormat)
                   {
                       ReplaceFragment(document, "Part1.grb", "Part2.grb");
                       //RemoveFragment(document, "Part1.grb");
                       break;
                   }
               }

               document.EndChanges();
           }
       }

       static bool ReplaceFragment(Document document, string filePathOld, string filePathNew)
       {
           foreach (Fragment fragment in document.GetFragments())
           {
               if (fragment.FilePath == filePathOld)
               {
                   fragment.FilePath = filePathNew;

                   if (fragment.GroupType == ObjectType.Fragment3D)
                       document.Regenerate3D();
                   return true;
               }
           }
           return false;
       }

       static bool RemoveFragment(Document document, string filePath)
       {
           ObjectArray objArray = new ObjectArray();
           DeleteOptions deleteOptions = new DeleteOptions();

           foreach (Fragment fragment in document.GetFragments())
           {
               if (fragment.FilePath == filePath)
               {
                   objArray.Add(fragment);

                   document.DeleteObjects(objArray, deleteOptions);
                   return true;
               }
           }
           return false;
       }
   }
}
[/CODE]
Изменено: Vite - 21.06.2017 14:56:32
Удаление ссылки на файл
 
[QUOTE]Паша Маргинал написал:
Как можно удалить ссылку на файл (FileLink).[/QUOTE]
если вы обратили внимание, интерфейс окна "Ссылки" не поддерживает функцию удаления ссылок. но, можно удалить фрагмент, а затем обновить ссылки.
Изменено: Vite - 21.06.2017 15:12:48
[ Закрыто] Получить значение RichText, Хочу через GetText() текст считать, но меня выкидывает с исключением Edit mode was not set
 
[QUOTE]Паша Маргинал написал:
Всем приветик, у меня такой вопрос: есть ли простой способ получить абсолютно все текстовые поля документа?[/QUOTE]

похоже на ошибку в API. когда добавляешь текст в документ, вылетает исключение, типа 'System.AccessViolationException':
[ Закрыто] Превью изображение, Как получить изображение превьюшки модели/чертежа
 
[QUOTE]SwnSerg написал:
Никто не подскажет, а можно ли им каким-либо образом воспользоваться?[/QUOTE]
Опишите задачу, что Вы хотите сделать.

Картинку можно получить используя метод "GetDocumentIcon":
[CODE]
Icon icon = TFlex.Application.GetDocumentIcon(fileName, 128);
[/CODE]
Как посчитать количество вхождений 3D фрагмента в сборке
 
woofer, с этого нужно было начинать. У меня версия (15.0.21.0).
Как посчитать количество вхождений 3D фрагмента в сборке
 
[QUOTE]woofer написал:
Вроде ближе к делу но, свойств Body и BaseOperation в операции у меня нет.[/QUOTE]
Какая у Вас версия T-FLEX CAD?
Как посчитать количество вхождений 3D фрагмента в сборке
 
[QUOTE]woofer написал:
IsKindOf не дает совершенно ничего.[/QUOTE]
Данная функция необходима для определения типа объекта. Для перечисления открытых документов, используется свойство Documents. Например:

[CODE]
using TFlex.Model;
using TFlex.Model.Model3D;

namespace Test
{
   public class Class8
   {
       public static void Run()
       {
           foreach (Document document in TFlex.Application.Documents)
           {
               if (document.ActiveView != null)
               {
                   Foo(document); // данные активного документа
               }
               else
               {
                   Foo(document); // данные фрагмента
               }
           }
       }

       public static void Foo(Document document)
       {
           foreach (Operation operation in document.GetOperations())
           {
               if (operation.IsKindOf(ObjectType.Fragment3D))
               {
                   // ...
               }

               if (operation.IsKindOf(ObjectType.Extrusion))
               {
                   var body = operation.Body;
                   var baseOperation = body.BaseOperation;

                   // ...

                   foreach (ModelObject obj in document.GetObjects())
                   {
                       if (operation.DependsOn(obj))
                       {
                           // определение зависимостей ...
                       }
                   }
               }
           }
       }
   }
}
[/CODE]
Как посчитать количество вхождений 3D фрагмента в сборке
 
[QUOTE]woofer написал:
Не это не то. Сколько всего фрагментов мне не нужно. Нужно количество вхождений определенных сборок.[/QUOTE]

[CODE]
using TFlex.Model;
using TFlex.Model.Model3D;

namespace Test
{
   public class Class8
   {
       public static void Run()
       {
           Document document = TFlex.Application.ActiveDocument;

           if (document != null)
           {
               foreach (Operation operation in document.GetOperations())
               {
                   if (operation.IsKindOf(ObjectType.Fragment3D))
                   {
                       // 3D Фрагмент
                   }

                   if (operation.IsKindOf(ObjectType.Area))
                   {
                       // Штриховка или заливка
                   }

                   if (operation.IsKindOf(ObjectType.Bend))
                   {
                       // Операция гибки
                   }

                   // и т.д., полный список см. (TFlex.Model.ObjectType)
               }
           }
       }
   }
}
[/CODE]
Как посчитать количество вхождений 3D фрагмента в сборке
 
[QUOTE]woofer написал:
Интересует алгоритм который используется для заполнения спецификации, чтобы учесть все операции(копирование, массивы, симметрии и т.д.)[/QUOTE]
Спецификация генерируется по шаблону (см. [URL=http://www.tflexcad.ru/help/cad/15/report_temp.htm]Создание шаблона отчета[/URL]).
Сайт и Форум, Замечания и предложения по сайту и форуму
 
[QUOTE]Osiris2000 написал:
Насколько это критично, как вы считаете?[/QUOTE]
Не думал, что перенос данных форума может быть проблемой для разработчиков САПР. Относительно новой CMS для форума, предлагаю к рассмотрению вариант: [URL=https://github.com/discourse/discourse]discourse[/URL]. Чтобы не быть голословным, можете ознакомиться с действующим форумом [URL=https://forums.sketchup.com/]SketchUp Community[/URL].

Форум из мобильного устройства iPhone6:
Изменено: Vite - 20.03.2017 06:30:04
Доработки функционала, необходимые пользователям, Внедрение нового функционала, доработка существующего.
 
Предложение, добавить возможность выполнения макроса на уровне фрагмента.
Конфигурации модели
 
[QUOTE]SwnSerg написал:
возможно такое делается как-то по другому?[/QUOTE]
на сколько я понял, конфигурация модели представляет набор фиксированных параметров, досупных в свойствах "Параметры 3D фрагмента" (см. tf_3d_fragment_prop.PNG). это может быть полезным, если фрагмент имеет определенный стандарт, и не нуждается в динамических отношениях со сборкой. в качестве альтернативы, предлагаю вам рассмотреть возможность построения модели по параметрам из БД:
- [URL=https://www.youtube.com/watch?v=ONkYJ6Q38Yo]создание связи БД с переменными[/URL]
- [URL=https://www.youtube.com/watch?v=iEoQgpR3iuM]создание диалога[/URL]
Изменено: Vite - 05.03.2017 17:50:50
Конфигурации модели
 
[QUOTE]SwnSerg написал:
нужно ли после  вызова данного метода вызывать document.Regenerate(options)? или LoadConfigurationVariables(confName) достаточно?[/QUOTE]

я пробовал применить метод LoadConfigurationSolids, но возникает исключение, типа:
[CODE]
An exception of type 'System.AccessViolationException' occurred in TFlexAPI.dll but was not handled in user code
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
[/CODE]
если макрос запустить без отладчика, приложение T-FLEX CAD завершается с ошибкой. что именно вызывает ошибку, мне непонятно. незнаю зачем вам понадобилось использовать конфигурации модели. на мой взгляд, проще и эффективнее загрузить параметры из базы данных.
Изменено: Vite - 05.03.2017 15:10:12
Конфигурации модели
 
[QUOTE]SwnSerg написал:
такое возможно реализовать?[/QUOTE]

[CODE]
using System.Windows.Forms;
using TFlex.Model;

namespace Test
{
   public class Class6
   {
       public static void Run()
       {
           Document document = TFlex.Application.ActiveDocument;
           RegenerateOptions options = new RegenerateOptions();

           options.Full = true;

           string confName = "";
           string confCurrent = document.ModelConfigurations.GetConfigurationWithCurrentValues();

           MessageBox.Show("Текущая конфигурация: " + confCurrent);

           for (int i = 0; i < document.ModelConfigurations.ConfigurationCount; i++)
           {
               confName = document.ModelConfigurations.GetConfigurationName(i);

               if (confName != confCurrent)
               {
                   MessageBox.Show("Следующая конфигурация: " + confName);

                   document.ModelConfigurations.LoadConfigurationVariables(confName);
                   document.Regenerate(options);
               }

               if (i == document.ModelConfigurations.ConfigurationCount - 1)
               {
                   MessageBox.Show("Возврат к исходной конфигурации");
                   document.ModelConfigurations.LoadConfigurationVariables(confCurrent);
                   document.Regenerate(options);
               }
           }
       }
   }
}
[/CODE]
Изменено: Vite - 04.03.2017 14:55:06
[ Закрыто] Обновление всех открытых документов, Как сделать полный пересчёт всех открытых документов.
 
[QUOTE]SwnSerg написал:
Подскажите, пожалуйста, каким образом можно обновить все открытые документы в сессии T-Flex CAD?
[/QUOTE]

макрос регенерации открытых документов:
[CODE]
using System.Collections.Generic;
using System.Windows.Forms;
using TFlex.Model;

namespace Test
{
   public class Class5
   {
       static List<Document> documents = new List<Document>();

       public static void Run()
       {
           Document activedocument = TFlex.Application.ActiveDocument;

           if (activedocument != null)
           {
               RegenerateOptions options = new RegenerateOptions();

               options.Full = true;
               options.UpdateAllLinks = true;
               options.UpdateBillOfMaterials = true;

               foreach (var doc in GetDocuments())
               {
                   doc.BeginChanges("Регенерация документа " + doc.FileName);
                   doc.Regenerate(options);
                   doc.EndChanges();
               }

               activedocument.Activate();

               documents.Clear();
           }
           else
           {
               MessageBox.Show("Не обнаружен активный документ.",
                   "T-FLEX CAD", MessageBoxButtons.OK, MessageBoxIcon.Question);
           }
       }

       static List<Document> GetDocuments()
       {
           foreach (Document d in TFlex.Application.Documents)
           {
               if (d.ActiveView != null)
               {
                   documents.Add(d);
               }
           }

           return documents;
       }
   }
}
[/CODE]
Изменено: Vite - 03.03.2017 11:13:51
Доработки функционала, необходимые пользователям, Внедрение нового функционала, доработка существующего.
 
Предложение, дбавить в редактор переменных:
[B]Гиперболические функции[/B]
- гиперболический синус
- гиперболический косинус
- гиперболический тангенс
- гиперболический котангенс
- гиперболический секанс
- гиперболический косеканс
[B]Обратные гиперболические функции[/B]
- гиперболический арксинус
- гиперболический арккосинус
- гиперболический арктангенс
- гиперболический арккотангенс
- гиперболический арксеканс
- гиперболический арккосеканс
[B]Математические[/B]
- Корень в n-й степени
спецификация
 
Цитата
ВладиславКМВ написал:
Пока решил просто удалить переменную, задающую длину во фрагменте.
по-умолчанию подгруппа элементов формируется по условию совпадения строки для колонки "Наименование". я сомневаюсь что с уровня пользоватльского интерфейса возможно переопределить данное правило.
T-FLEX CAD 16.0.68.0
спецификация
 
Цитата
ВладиславКМВ написал:
Как свести все детали одного сортамента в одну группу?
по идее сортировка должна выполняться по условию, определенного по-умолчанию в свойствах структуры изделия (см. вложение: tf_struct_sort.PNG). Но по факту, сортировка работает не для всех стандартных изделий (см. вложение: tf_struct_group_to_definition.PNG). почему так, для меня загадка.
T-FLEX CAD 16.0.68.0
Замечания по T-FLEX CAD 15, Ваши замечания касающиеся работы T-FLEX CAD 15
 
Цитата
Андрей Мальчук написал:
это не правильно на 146%, и на мой взгляд - это ошибка, и довольно критичная.
я наблюдал похожую ситуацию, когда в структуру модели попадает элемент (например ссылка, которая не используется), при удалении возникали проблемы на уровне зависимостей. проблема решается, после повторного запуска TF.
T-FLEX CAD 16.0.68.0
Поле БД как переменная
 
Цитата
i.volk62 написал:
Хотя сделать как выше предложил Vite было бы проще наверно, но хоть у меня и 15-я версия - повторить не удалось.
использование переменного имени БД решает задачу зависимых списков. но к сожалению, данный метод, корректно работает только в табличном представлении (имеется ввиду обновление списка по умолчанию).
T-FLEX CAD 16.0.68.0
Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 ... 22 След.