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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Вопрос по API
 
Подскажите, пжалста, можно ли с помощью макроса программно вставить в сборку 3D-фрагмент из DOCs (важно!)? Почитал хэлп по API, нашел только методы, которые вставляют фрагменты по пути к файлу, т.е. фрагменты с диска.
Страницы: Пред. 1 2 3 4 5 6 7 След.
Ответы
 
Может кто знает, как через API пересчитать 2D чертеж? Переменные у фрагментов меняются, а как пересчитать (Ctrl+F7) - не нашел.
 
Document::Redraw() - Перерисовка всех видов документа
 
Спасибо.
Про Redraw знаю. Как оказалось проблема была в том, что в значение вещественной переменной передал текст (забыл конвертнуть). При этом не было ошибки ни во время компиляции, ни во время выполнения. Когда сохранил документ и уже в T-Flex открыл внешние переменные фрагмента - все стало ясно.
 
"Застрял" на создании таблицы. Подскажите, кто знает - как таблицу "прорисовать".
Код:
tfcontrol.Document.BeginChanges("Таблица");

Table.CreationSettings tbl = new Table.CreationSettings();
tbl.Columns = 10;
tbl.ColumnsWidth = 50;
tbl.Rows = 20;

tfcontrol.Document.EndChanges();

компилируется, но в графику не выводиться.
 
Таблицу надо вставлять в текст:

Код
document = TFlex.Application.ActiveDocument;

document.BeginChanges("Создание текста");

Page page = document.ActivePage;
ParagraphText text = new ParagraphText(document);

text.BeginEdit();
ParagraphText.TextRectangle.Point p1 = new ParagraphText.TextRectangle.Point(5,17.5);
ParagraphText.TextRectangle.Point p2 = new ParagraphText.TextRectangle.Point(292,161.5);
ParagraphText.TextRectangle rect = new ParagraphText.TextRectangle(p1,p2,page,0);
text.AddRectangle(rect);
text.EndEdit();

document.EndChanges();

document.BeginChanges("Создание таблицы");

text.BeginEdit();
Table.CreationSettings a;
a.Columns =3;
a.Rows = 6;
a.ColumnsWidth = 20;
Table table = text.CreateTable(a);
text.EndEdit();

document.EndChanges();




 
Большое спасибо. Все получилось.
 
Перенесен в ветку «Разработка приложений под Open API T-FLEX CAD (.NET)»
 
Кто-нибудь знает как определить с помошью Open API "версию файла", т.е. версию T-Flex CAD, в которой был ранее сохранен выбранный *.grb файл? Вообще, задача такая: определить "версию файла" не запуская его, но это, наверное, нужно производить, используя функциональности операционной системы, что сложнее... Поэтому, буду рад подсказке, как определить "версию файла", открытого в T-Flex CAD в данны момент.

P.S. Достаточно указать раздел справки, а также необходимый метод или свойство; дальше, думаю, сам разберусь :)
Кто ищет - тот всегда найдет!
 
Пожалуйста, помогите разобраться, как пользоваться инструментом "BreakPoint" (клавиша F9) в редакторе макросов. К собственному стыду :oops: даже не знаю, для чего он нужен, но предполагаю, что для отладки. Должно быть, инструментом "BreakPoint" пользоваться удобнее, чем стандартными экраными формами (MessageBox).
Кто ищет - тот всегда найдет!
 
Цитата
Brom25 пишет:

Пожалуйста, помогите разобраться, как пользоваться инструментом "BreakPoint" (клавиша F9) в редакторе макросов. К собственному стыду даже не знаю, для чего он нужен, но предполагаю, что для отладки. Должно быть, инструментом "BreakPoint" пользоваться удобнее, чем стандартными экраными формами (MessageBox).
Опция "BreakPoint" прездназначена для останова отладки программы в требуемом месте. Используется следующим образом: необоходимо указать строку в тексте программы, в которой нужно остановить отладку, щелчком мыши и поставить точку прерывания нажатием F9 (строка выделится красным цветом). Далее нажимаем "Начать отладку". Отладка остановится в указанной точке прерывания. Как правило в тексте программы до точки прерывания необходимо посмотреть значения каких-либо полей или данных. Делается это следующим образом: вызываем контекстное меню редактора макросов щелчком правой кнопки мыши и в нем выбираем пункт "Вычислить выражение". В появишвемся диалоговом окне вводим выражение и нажимаем "Вычислить".
 
Спасибо, Александр.
Попробовал, честно говоря, из 10 попыток использования опции "BreakPoint" успешно выполнялись 2-3. Проверял в TF10.059 и TF11(учебная версия). Пробовал проверять в редакторе макросов в только что созданном модуле – с абсолютно «пустым телом», а также пробовал ставить точку прерывания после единственной инструкции в теле метода типа:
string check = “Проверка”;
В основном попытки приводили к зависанию TF. Может быть, я что-то не так делаю?
Кто ищет - тот всегда найдет!
 
Цитата
Brom25 пишет:

Кто-нибудь знает как определить с помошью Open API "версию файла", т.е. версию T-Flex CAD, в которой был ранее сохранен выбранный *.grb файл? Вообще, задача такая: определить "версию файла" не запуская его, но это, наверное, нужно производить, используя функциональности операционной системы, что сложнее... Поэтому, буду рад подсказке, как определить "версию файла", открытого в T-Flex CAD в данны момент.
Данная функуиональность появится в скором времени.
Цитата
Brom25 пишет:

Спасибо, Александр.
Попробовал, честно говоря, из 10 попыток использования опции "BreakPoint" успешно выполнялись 2-3. Проверял в TF10.059 и TF11(учебная версия). Пробовал проверять в редакторе макросов в только что созданном модуле – с абсолютно «пустым телом», а также пробовал ставить точку прерывания после единственной инструкции в теле метода типа:
string check = “Проверка”;
В основном попытки приводили к зависанию TF. Может быть, я что-то не так делаю?
Опишите, пожалуйста, последовательность команд, выполненных Вами, которые привели к зависанию.
 
Последовательность действий в TF11(Учебная версия):
1. Удаляю свой документ с макросами использующими стандартные обработчики событий (New Document Created, Document Open, View Activated) из директории С:\Program Files\T-FLEX\T-FLEX CAD ST 11\Program\Macros\.
2. Запускаю TF11, создаю новый документ и сохраняю его на диске.
3. В редакторе макросов в только что созданном проекте добавляю модуль – Modul 1:
4. На всякий случай компилирую и сохраняю документ.
5. Дополняю код и ставлю точку прерывания (обозначена //F9)
Код
using System;

namespace NewMacroNamespace
{
   public class NewMacroClass
   {
      public static void NewMacro()
      {
         string check = "Проверка";
// F9
      }

   }
}


6. Снова компилирую и запускаю отладку, указав отлаживаемый метод NewMacroNamespace.NewMacroClass.NewMacro.
7. Во время отладки зависаний не проходит, не смотря на то, что в окне "Вычислить выражение" (вычисляю check) появляется ошибка – Error!
8. Останавливаю отладку.
9. Снова дополняю код:
Код
using System;

namespace NewMacroNamespace
{
   public class NewMacroClass
   {
      public static void NewMacro()
      {
         string check = "Проверка";
         check += "1";
// F9
      }

   }
}


10. Компилирую и запускаю отладку, после чего происходит зависание.

P.S.Моя практика показала, что зависание происходит всегда при втором запуске отладки в одном и том же сеансе работы с проектом(в редакторе макросов). Уточнить условия зависания TF10.059 раньше 23.06.08 не смогу, хотя для меня эта проблема более актуальна именно для TF10.
Кто ищет - тот всегда найдет!
 
Цитата
Brom25 пишет:
задача такая: определить "версию файла" не запуская его

Цитата
Александр Сысоев пишет:
Данная функциональность появится в скором времени.

Как альтернативный вариант необходимой функциональности (до тех пор, пока она не станет доступной) рассматриваю инструмент FilePreview, предоставляемый для использования в экранных формах. В связи с этим есть вопрос, на который я пока не смог найти ответа - существует ли свойство в инструменте FilePreview позволяющее определить произошла ли ошибка при «просмотре» файла?
Кто ищет - тот всегда найдет!
 
Цитата
Brom25 пишет:

P.S.Моя практика показала, что зависание происходит всегда при втором запуске отладки в одном и том же сеансе работы с проектом(в редакторе макросов). Уточнить условия зависания TF10.059 раньше 23.06.08 не смогу, хотя для меня эта проблема более актуальна именно для TF10.
Не совсем понятно для чего нужно производить вот это действие
Цитата
Brom25 пишет:

1. Удаляю свой документ с макросами использующими стандартные обработчики событий (New Document Created, Document Open, View Activated) из директории С:\Program Files\T-FLEX\T-FLEX CAD ST 11\Program\Macros\.
Я просто вставил ваш код в редактор макросов, задал отлаживаемый метод и поставил точку прерывания не в пустой строке (как в вашем случае), а в строке с закрывающей фигурной скобкой. В этом случае все работает.
 
Цитата
Александр Сысоев пишет:

Не совсем понятно для чего нужно производить вот это действие

Цитата
Brom25 пишет:
1. Удаляю свой документ с макросами использующими стандартные обработчики событий (New Document Created, Document Open, View Activated) из директории С:\Program Files\T-FLEX\T-FLEX CAD ST 11\Program\Macros\.

Для "чистоты эксперимента", чтобы показать, что никакой сторонний код не вмешивается в отладку (если такое вообще возможно). Просто я заметил, что в момент отладки T-Flex CAD начинает мигает (на панели задач)..., поэтому решил, что такой обработчик, как Active View, может мешать правильной отладке.

Цитата
Александр Сысоев пишет:

Я просто вставил ваш код в редактор макросов, задал отлаживаемый метод и поставил точку прерывания не в пустой строке (как в вашем случае), а в строке с закрывающей фигурной скобкой. В этом случае все работает.


Да, действительно, работает. Спасибо, Александр. :applanse: Буду тренироваться использовать Breakpoint. :)
Кто ищет - тот всегда найдет!
 
Вопрос Александру Сысоеву.
Внешнее приложение использует "control". Например, открываем 3D. Как вывести 3D изображение (текущий вид) на печать, т.е. открыть стандартный диалог печати T-Flex Cad? Вариант использования сущестующей кнопки в "control" не подходит, т.к. интерфейс программы свой и вклинивать туда имеющиеся кнопки - не дело. Как написать обработчик своей кнопки для вызова диалога "Печать"? В справке по API хорошо написано про вывод на графическое устройство, но у меня разобраться пока не получается, видимо требуются хорошие знания в программировании.
 
У класса TFlex.Model.Document есть следующие методы:
Print() - печать документа с выводом диалога печати на экран
PrintNoDialog() - печать документа без вывода диалога
PrintPage() - печать конкретной страницы документа
 
Методы-то нашел, не понял как их применить:
tfcontrol.Document.PrintPage(IntPtr window, Page page);

Что подставлять вместо IntPtr window и вместо Page page?

Размеры окна? Так нужно все текущее окно. Страницу? Ставлю 3D не понимает, ругается. А задача открыть диалог печати как в каде.
 
Как я понял, Window - это дескриптор окна, которое является родителем диалога печати. За него отвечает свойство Handle любого окна в .NET.

tfcontrol.Document.PrintPage(this.Handle, tfcontrol.Document.ActivePage);
Страницы: Пред. 1 2 3 4 5 6 7 След.