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


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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 31 След.
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
Обнаружена ошибка API. Из примера StarsPlugin, класс StarObject:
Код
protected override PropertyChange EditProperties()
{
   StarPropertiesDialog dialog = new StarPropertiesDialog(this);
   Document doc = this.Owner2D.Document;

   PropertyChange result = PropertyChange.Nothing;


   if (dialog.ShowDialog())
   {
      doc.BeginChanges("Изменить параметры звезды");

      StarObject newStar = Owner2D.VolatileObject as StarObject;
      newStar.Assign(dialog.Star);
      newStar.ApplyReferences(dialog.Star);

      doc.EndChanges();

      result = PropertyChange.Regenerate;
   }

   return result;
}

Ожидается регенерация модели после изменения параметров объекта, но этого не происходит. После закрытия документа изменения объекта не сохраняются.

Последовательность действий
1. Создайте новый документ.
2. Создайте объект "Звезда".
3. Сохраните документ.
4. На вкладке "Элементы модели" выберете объект и нажмите контекстное меню "Параметры...", чтобы внести изменения. Затем нажмите "ОК".
5. Закройте документ.

Ошибку также можно воспроизвести если запустить "Пример приложения к T-FLEX CAD StarsPlugin.dll" из меню "Приложения".
Версия T-FLEX CAD 17.1.6.0
Изменено: vite - 10.02.2024 00:19:36
T-FLEX CAD 17.1.6.0
T-FLEX Package Manager, Модуль расширения пакетной обработки документов
 
Иван Секретов, нужен файл документа и файл конфигурации (можно отправить в ЛС), чтобы я мог воспроизвести ошибку...
T-FLEX Package Manager, Модуль расширения пакетной обработки документов
 
Иван Секретов,

1. Скачайте повторно архив и извлеките содержимое.
2. В командной строке введите сдедующее:
[CODE]
TFPackageManager.exe --api-info
[/CODE]
в корне каталога приложения появится текстовый файл [B]api-loader.log[/B], содержимое которого должно быть примерно следующим:
[CODE]
T-FLEX CAD APILoader Info

Culture              : en-US
FileLinksAutoRefresh : SystemDefault
IsDOCsEnabled        : False
IsMacrosEnabled      : False
IsSessionInitialized : True
InterfaceLanguage    : Russian
MeasuringSystem      : Metric
Product              : TFlexCad3D
RegistryName         : SOFTWARE\Top Systems\T-FLEX CAD API 17\Rus
StudentVersion       : False
SystemPath           : C:\Program Files\T-FLEX CAD 17\Program\
Version              : 17.1.0.0
[/CODE]
или
[CODE]
Failed to initialize API...
[/CODE]
если по какой то причине API не был загружен...
Изменено: vite - 24.11.2023 20:45:53
T-FLEX Package Manager, Модуль расширения пакетной обработки документов
 
[QUOTE]Иван Секретов написал:
2. 17.1.0.0[/QUOTE]
Такое случается из-за несовместимости API с приложением. Я обновил архив с бинарными файлами. Скачайте обновленную сборку приложения по той же ссылке...

[B]Примечание[/B]
1. В Open T-FLEX CAD API добавлено много функций. В частности, некоторые из них затрагивают API, связанные с классом ExportToPDF. Текущее обновление просто повышает версию API без надлежащего анализа и тестирования.
2. Минимальная поддерживаемая версия T-FLEX CAD API 17.1.0.0
T-FLEX Package Manager, Модуль расширения пакетной обработки документов
 
Иван Секретов, нужно больше информации:

1. Версия ОС
2. Версия T-FLEX CAD
макросы вешают тфлекс
 
Hydra, зависание возникает при запуске отладчика непосредственно в редакторе макросов... эта ошибка уже давно наблюдается (не помню точно с какой версии)...
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
Sasha, по описанию сложно судить, что у вас неполучается (или неработает)... нужно больше информации, какой либо простой пример выложить или видео...
T-FLEX CAD 17.1.6.0
Конфигурации модели
 
[QUOTE]ainis написал:
Можно ли с помощью API для конфигураций модели изменить набор значений переменных?[/QUOTE]
Странный вопрос. Конфигурации -- это набор состояний общих геометрических данных. Конфигурации применяются на уровне сборки с тем состоянием, которое вы определили в документе фрагмента (текущая конфигурация). Как я понял, вы хотите изменить состояние переменных текущей конфигурации при включении в сборку... только не понятно зачем так усложнять?! Если вам нужны динамические фрагменты, на мой взгляд, конфигурации не лучший вариант для этого. Возможно, стоит рассмотреть вариант создания адаптивных фрагментов с пользовательскими данными в составе изделия (нужно проверять).
Сайт и Форум, Замечания и предложения по сайту и форуму
 
Кажется движок форума достиг нового уровня регресси, что теперь нельзя изменить личные данные... :-(
Скрытый текст

с этим определенно нужно что-то делать... :-)
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
Цитата
Sasha написал:
А почему если на проекции есть линии, круги и т.п. такая проблема разрушить проекцию?
В T-FLEX CAD 17 проекция создается на основе нового типа страницы "Проекция". По умолчанию этот тип страницы скрыт. Чтобы отобразить этот тип на вкладке, нужно установить галку в диалоге "Страницы" (см. раздел: Страницы документа). Насколько я понимаю, новый тип страницы "Проекция" выполняет ту же роль, что и тип страницы "Вспомогательная" для чертежного вида, только для проекций (к сожалению, в справочнике не так много информации). Возможно, то что вам нужно, уже реализовано... :-)

Разрушение проекции
-- Контекстное меню проекции и ее элементов
Изменено: vite - 13.08.2023 15:02:18
T-FLEX CAD 17.1.6.0
Замечания по T-FLEX CAD 17, Ваши замечания касающиеся работы T-FLEX CAD 17
 
Roman, насколько мне известно (кто знает, пусть подтвердит), пакетная печать уже реализована в DOCs... :-)
T-FLEX CAD 17.1.6.0
Получить текущий состав (структуру) сборки ProductStructure
 
[QUOTE]ainis написал:
Можно ли как-то получить TFlex.Model.Document?[/QUOTE]
Нет, этот API предоставляет независимую объектную модель (ограниченную в плане управления документом). По сути, компонент [B]TFlex.CAD.Server.DLL[/B] обеспечивает доступ к серверной части T-FLEX CAD для работы с документом в асинхронном режиме. В отличии от приложения, построенного на базе [B]TFlexAPI.DLL[/B], серверный компонент позволяет обрабатывать запросы от нескольких клиентов одновременно. То есть, принципиальное отличие в том, что документ не блокируется на запись, если он (документ) уже открыт по запросу другого клиента.
Получить текущий состав (структуру) сборки ProductStructure
 
[QUOTE]ainis написал:
как подключиться к уже запущенному T-Flex'у и получить активный документ?[/QUOTE]
Скачайте проект [URL=https://disk.yandex.ru/d/jqSsw0pGU6YByw]ServerTest[/URL] (см. ReadMe.txt в архиве).
Получить текущий состав (структуру) сборки ProductStructure
 
[QUOTE]ainis написал:
Как сделать так, чтобы это окно было открыто, не подскажете?[/QUOTE]
ну, это не очень хорошая идея... нужно писать в техподдержку, и прикрепить ссылку на эту тему...
Получить текущий состав (структуру) сборки ProductStructure
 
[QUOTE]ainis написал:
У меня почему-то для всех составов это свойство - False.[/QUOTE]
Я уже писал об этом ранее,
[QUOTE]
класс "ProductStructure" содержит свойство "IsShownInProductStructureWindow", но оно будет работать [B]только при открытом окне[/B] "Состав изделия"
[/QUOTE]
Нужно писать в техподдержку по этому вопросу. Скорее всего это баг API.
---
Ещё в API есть статический метод [B]ProductStructure.GetActiveProductStructure[/B], который, по идее, должен возвращать ссылку на объект [B]ProductStructure[/B], но к сожалению и тут засада... :-) метод всегда возвращает [B]null[/B]...
Изменено: vite - 06.05.2023 07:35:33
Получить ячейку состава изделия, Как добраться до ячейки состава изделия
 
[QUOTE]ainis написал:
А можно как-нибудь добраться до ячейки с помощью дескриптора ParameterDescriptor, не задавая его GUID?[/QUOTE]
Можно последовательно перебрать дескрипторы в цикле, например:
[CODE]
var scheme = ps.GetScheme();
foreach (ParameterDescriptor descriptor in scheme.Parameters)
{
   foreach (RowElement row in ps.GetAllRowElements())
   {
       var cell = row[descriptor];

       // последующая обработка ячейки ...
   }
}
[/CODE]
Изменено: vite - 05.05.2023 22:16:37
Получить текущий состав (структуру) сборки ProductStructure
 
ainis, для этого есть свойство [B]IsShownInProductStructureWindow[/B]
Параграф текст заданный на двух узлах
 
Оказывается проблема не в координатах, это связано с привязкой к узлам. Я создал вручную параграф (см. граф зависимостей: tflexcad-paragraph-info-1.PNG) и сравнил с результатом, полученным при выполнении макроса (см. граф зависимостей: tflexcad-paragraph-info-2.PNG). На втором снимке видно, что отсутствует "Узел 2". Что характерно, в T-FLEX CAD 12 то же самое... :-)
Чтобы получить координаты узлов, нужно отделить операцию создания узлов от операции создания параграфа.
[CODE]
using TFlex;
using TFlex.Model;
using TFlex.Model.Model2D;

namespace Test
{
   public class ParagraphBuilder
   {
       static readonly Document document = Application.ActiveDocument;

       public static void Run()
       {
           if (document == null)
               return;
           var page = document.ActiveView.Page;
           if (page == null)
               return;

           document.BeginChanges("Create Nodes");

           var lc1 = new LineConstruction(document) { Page = page };
           lc1.SetVertical(10);
           var lc2 = new LineConstruction(document) { Page = page };
           lc2.SetHorizontal(50);
           var lc3 = new LineConstruction(document) { Page = page };
           lc3.SetVertical(50);
           var lc4 = new LineConstruction(document) { Page = page };
           lc4.SetHorizontal(10);
           var in1 = new IntersectionNode(document, lc1, lc2) { Page = page };
           var in2 = new IntersectionNode(document, lc3, lc4) { Page = page };

           document.EndChanges();
           document.BeginChanges("Create Paragraph");

           var lp = new ParagraphText.TextRectangle.Point
           {
               X = in1.Coordinates.X,
               Y = in1.Coordinates.Y,
               Node = in1
           };
           var rp = new ParagraphText.TextRectangle.Point
           {
               X = in2.Coordinates.X,
               Y = in2.Coordinates.Y,
               Node = in2
           };
           var pr = new ParagraphText.TextRectangle
           {
               LeftPoint = lp,
               RightPoint = rp,
               Page = page
           };

           ParagraphText txt = new ParagraphText(document)
           {
               HeightAction = ParagraphText.FitHeightAction.Ignore,
               WidthAction  = ParagraphText.FitWidthAction.Ignore
           };

           txt.AddRectangle(pr);
           txt.BeginEdit();
           txt.InsertParagraph();
           txt.InsertText("this is inserted paragraph text...");
           txt.EndEdit();

           document.EndChanges();
       }
   }
}
[/CODE]
Параграф текст заданный на двух узлах
 
Nikita, по видимому опять что то в API сломали... :-)
Если убрать ссылку на объект узла, то параграф создается по заданным координатам.
Скрытый текст

Однако, это будет не очень удобно использовать. Если я не ошибаюсь, ссылка на объект узла нужна для автоматической коррекции координат точек параграфа.
Я попробовал также привязку к узлам типа [B]IntersectionNode[/B], чтобы проверить это.
Скрытый текст

[S]Но, к сожалению, результат оказался еще хуже. Проблема в том, что координаты узлов по нулям (см. вложение).[/S]

[S]В общем, как временное решение, используйте глобальные переменные для синхронизации координат узлов и точек привязки параграфа.[/S]
Изменено: vite - 09.03.2023 17:13:42
Document или Fragment3d из Face/Edge/Plane
 
[QUOTE]Игорь написал:
Добрый день, подскажите как можно получить программно документ или фрагмент для выделенного фэйса или другого элемента?[/QUOTE]
[CODE]
void PluginInstance::ObjectSelectionChangedEventHandler(ObjectEventArgs^ args)
{
ModelObject ^obj = args->Object;
Fragment3D^ fr3d = nullptr;

if (obj->GroupType == ObjectType::Topol)
{
TopolReference^ topol = (TopolReference^)obj;

for each (ParentObject ^p in topol->Parents)
{
fr3d = (Fragment3D^)p->Object;
if (fr3d != nullptr)
break;
}
}

args->Document->Diagnostics->Add(
gcnew DiagnosticsMessage(DiagnosticsMessageType::Information,
String::Format("select [id:{0}, type:{1}, parent:{2}]",
obj->ObjectId, obj->GroupType, fr3d ? fr3d->PathName : "NULL"), obj));
}
[/CODE]
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 31 След.