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


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

Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 ... 22 След.
Порядок размещения объектов
 
Паша Маргинал, нужно смотреть документ, так сложно определить причину.
Порядок размещения объектов
 
[QUOTE]Паша Маргинал написал:
Подскажите как это можно сделать?[/QUOTE]
Возможно Вы имели ввиду случай, когда таблица наложена поверх параграфа? Если таблица создана независимо от параграфа, можно выделить в окне "Элементы модели" (для T-FLEX 15), или через слой (если элемент создан на отдельном слое). Далее, при помощи свойства "Уровень" или "Приоритет", устанавливаете порядковый номер от нуля.
На уровне API это общее свойство:
- Text.Level
- Text.Priority

для oпределения таблицы используется свойство "RichText.TableOnly", например:
[CODE]
foreach (RichText text in document.GetTexts())
{
   text.BeginEdit();

   if (text.TableOnly)
       text.Level = 1;

   text.EndEdit();
}
[/CODE]
Изменено: Vite - 27.06.2017 21:06:09
Удаление ссылки на файл
 
[QUOTE]Паша Маргинал написал:
Можно ли как то достать все ссылки из одного параграфа?[/QUOTE]

[CODE]
static bool RemoveFileLink(Document document, ParagraphText text, string filePath)
{
   foreach (FileLink link in document.FileLinks)
   {
       if (link.FilePath == filePath)
       {
           text.SetFileLinkReference(link.InternalID.ToInt32(), new FileLink(document));
           return true;
       }
   }
   return false;
}
[/CODE]
Удаление ссылки на файл
 
[QUOTE]Паша Маргинал написал:
Судя по вашему коду, для одного экземпляра ParagraphText проставится только один FileLink, а мне нужно именно несколько FileLink для одного параграфа.[/QUOTE]
вы можете прикрепить к объекту "ParagraphText" сколько угодно ссылок, с этим нет проблем:
[CODE]
FileLink link = null;

foreach (ParagraphText text in document.GetTexts())
{
   text.BeginEdit();

   if (text.TextValue.Contains("Text1"))
   {
       link = new FileLink(document, "item1.txt");
       text.SetFileLinkReference(link.InternalID.ToInt32(), link);
   }
   if (text.TextValue.Contains("Text2"))
   {
       link = new FileLink(document, "item2.txt");
       text.SetFileLinkReference(link.InternalID.ToInt32(), link);
   }

   text.EndEdit();
}
[/CODE]
Удаление ссылки на файл
 
[QUOTE]Паша Маргинал написал:
Для этого текста я хочу проставить несколько ссылок на внешний файл через ParagraphText.SetFileLinkReference()[/QUOTE]

[CODE]
FileLink link = new FileLink(document, "test.lst");

foreach (ParagraphText text in document.GetTexts())
{
   text.BeginEdit();

   if (text.TextValue.Contains("Параграф"))
       text.SetFileLinkReference(link.InternalID.ToInt32(), link);

   text.EndEdit();
}
[/CODE]

если не секрет, зачем это вам понадобилось?
Удаление ссылки на файл
 
[QUOTE]Паша Маргинал написал:
Я хочу проставить для фрагмента несколько ссылок[/QUOTE]
когда создается новый документ, по-умолчанию, в нем всего две ссылки, которые определены в параметрах документа (см. вложение). если добавить фрагмент, то ссылка на файл создается автоматически при включении из библиотеки или локальной директории. объясните, что конкретно вы хотите сделать?
Удаление ссылки на файл
 
[QUOTE]Паша Маргинал написал:
может ли быть у фрагмента несколько ссылок?[/QUOTE]
что значит несколько ссылок? путь фрагмента определяется свойством "FilePath", и на уровне пользовательского интерфейса можно задать путь через переменную документа в формате: {$Path}
переменная документа, это универсальный объект, который можно очень просто преобразовать в коллекцию (выпадающий список), подключить к таблице базы данных.
Изменено: Vite - 21.06.2017 15:28:36
Удаление ссылки на файл
 
[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
Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 ... 22 След.