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


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

Страницы: 1 2 След.
Анимация с помощью макросов в T-flex Open API
 
Как вариант, круг надо нарисовать в 1 положении, а потом его перемещать в другие, а не отрисовывать заново, в этом и есть вся прелесть параметризации  ~~:-  
К сожалению файл не сохраняется  :|  при попытке загрузки, поэтому - ссылка [url=http://myfolder.ru/files/42194408]Простейший маятник[/url]. :nono:
Для анимации сторонние средства не потребовались  :applanse:  

З.Ы. А вообще странно, что никто до сих пор не подсказал. Раньше тут хоть что-то шевелилось помимо смайликов
Анимация с помощью макросов в T-flex Open API
 
Я при выполнении похожей задачи использовала формулу затухающих колебаний Y=A*cos(wt+f0) (приблизительно, с поправкой на греческие буквы), параметрический чертеж и изменение переменной t с помошью анимации; учитывая специфику ветки вместо анимации можно использовать макрос с циклом (при этом помним, что маятник не катается, а качается ;) ). А на одном из CAD OLYMPов для анимации 3D модели маятника значения отклонения брались с 2D графика.
"Тонкости" прорисовки, Управление толщиной линий
 
Доброго времени суток!
Подскажите, можно ли через API отключить отображение толщины линий (Настройка-Статус-Прорисовка-Отображать толщину линий: Не отображать)?
Получение родительского объекта, Как получить объект-родитель для заданного объекта
 
[QUOTE]Дарья пишет:
...SourceOutline.ID[/QUOTE]
ID!
Дарья, Вам просто нет цены!

[QUOTE]Николай пишет:
- Parent что здесь означает? В TFlex API я такого не видел. Может не там ищу?[/QUOTE]
Извиняюсь за неточность, на самом деле свойство называется "Parents"
"__property ParentObjects* Parents;
Описание
Контейнер родительских объектов

Класс
ModelObject Класс

Ссылки
ModelObject Класс, TFlex::Model Пространство имён"
Получение родительского объекта, Как получить объект-родитель для заданного объекта
 
Попытка использовать "цивилизованные методы" заканчивается руганью и сообщением о том, что "... объект типа ... не может быть приведен к типу....". Так что проверки, как мне кажется, на данном уровне владения API надежнее. Хотя есть мнение, что если вместо редактора макросов использовать VS, можно получить гораздо лучшие результаты.
А потомки должны определять предков через Parent, но он мне пока неподвластен и времени разобраться нет, хотя этот  вопром мне тоже интересен. Так что если поиски решения увенчаются успехом не сочтите за труд выложить результат
Получение родительского объекта, Как получить объект-родитель для заданного объекта
 
Предлагаю взять за основу такой вариант:
using System;
using System.Windows.Forms;
using TFlex.Model.Model2D;
using TFlex;
using TFlex.Drawing;
using TFlex.Model;
namespace NewMacroNamespace
{
public class NewMacroClass
{
public static void NewMacro()
{
Document doc=TFlex.Application.ActiveDocument;
CircleOutline circle = doc.Selection.GetAt(0) as CircleOutline;
Node n1=circle.CenterNode;

int count=0;
foreach (Outline cao in doc.Outlines)
{
if (cao.SubType.ToString()=="CenterAxisOutline")
{
count+=1;
Point tpStart=cao.GetPoint(0);
Point tpFinish=cao.GetPoint(1);

if (tpStart.X ==n1.AbsX)
{doc.BeginChanges("Вертикальная ось");
cao.Name="Вертикальная ось";
doc.EndChanges();}

if (tpStart.Y ==n1.AbsY)
{doc.BeginChanges("Горизонтальная ось");
cao.Name="Горизонтальная ось";
doc.EndChanges();}
doc.Selection.Select(cao);
}
}
}
}
}
Помогите с макросом
 
Если это найти сложно http://www.tflex.ru/forum/index.php?PAGE_NAME=read&FID=14&TID=1808
то можно вот так, анешняя она или нет особого значения не имеет:

using System;
//using System.Windows.Forms;
using TFlex;
using TFlex.Model;
using TFlex.Model.Model2D;
using Microsoft.VisualBasic;

namespace NewMacroNamespace
{
public class NewMacroClass
{
public static void ExVarV()
{
Document doc = Application.ActiveDocument;
foreach (Variable v in doc.Variables)
{
if (v.Name=="r")
{doc.BeginChanges("VAR R");
v.Expression="30";
doc.EndChanges();}

}
}

}
}
Переменные фрагмента (2, Как их изменить
 
Появилась необходимость перезадать переменные в нескольких сотнях фрагментов.
Но пока получается только получить их значения! Согласно Open Api все св-ва только для чтения.
Попытка изменить Expression успехом тоже не увенчалась. Может быть кто-нибудь знает способ
изменять значения переменных без использования древнего ActiveX?

doc=TFlex.Application.ActiveDocument
contact=1
for each fr in doc.Fragments
frnum+=1

frdoc=fr.GetFragmentDocument(1)
   

frdoc.BeginChanges("Изменение параметров фрагмента "+frnum.ToString())
MessageBox.Show("Изменение параметров фрагмента "+frnum.ToString())
 
for each v in frdoc.Variables
     if v.name="hv" then
      Messagebox.Show(v.Expression)
      'v.Expression=contact.ToString() '?????
       exit for
     end if

   next

frdoc.EndChanges()
 
frdoc.Save()

next
ExportToDXF с помощью API, Помогите пожалуйста!
 
dialog.FileName – это файл [B]который[/B] нужно импортировать
dialog1.FileName – файл [B]в который[/B] происходит импорт

А вы пытаетесь открыть файл автокада после этого его же импортировать в... :(  :idontnow: ?

Еще одна цитата из справки:
"ImportFromACAD::Import Метод
bool Import([B]String* fileName[/B]);"

и  зачем вам "new ImportFromACAD"?

А свой вариант перед тем как запостить я пусть и в редакторе макросов, но оттестировал.
Может и вам сначала потренироваться в нем, разобраться с синтаксисом и параметрами, так сказать, на месте?
Редактирование переменных с помощью exe
 
Пожалуйста.
System.Convert.ToDouble() - это VB.NET, так что в вашем случае работать и не должна. Однако вам ничто не мешает написать свой ToDouble(), если лень зайти в свойства языка и нац. стандартов и поменять разделитель групп разрядов с зпт на тчк
ExportToDXF с помощью API, Помогите пожалуйста!
 
Цитата из справки: "[B]Иерархия классов
TFlex::Model::ImportFromACAD[/B]".
Т. е. в "TFlex.Model[B].Document[/B]" определения для "ImportFromACAD" действительно нет :) надо отдельно написать "using TFlex.Model;" и есть шанс, что все заработает как по волшебству.

А на счет комментариев - уж как сумел  :nono:

P/s/ а на брудершафт мы не пили, так что тыкать в меня необязательно ;) , а код лучше выкладывайте свой
ExportToDXF с помощью API, Помогите пожалуйста!
 
~~:-
"SaveFileDialog dialog1 = new SaveFileDialog ();
dialog1.Filter = "GRB files (*.grb)|*.grb";
if(dialog1.ShowDialog() != DialogResult.OK)
return;
- это файл в который будет сохраняться результат импортирования. Для импортирования нужно использовать не его, а автогадовский файл

ImportFromACAD imp = new ImportFromACAD(document);
- это зачем? Просто ImportFromACAD imp = document.ImportFromACAD;

imp.Import(dialog1.FileName);// выдает ошибку в этой строке (В экземпляре объекта не задана ссылка на объект). А без этой строки не сохраняет.
-  вместо "dialog1.FileName" должно быть указано имя dxf файла (OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "DXF files |*.dxf";
if (dialog.ShowDialog() != DialogResult.OK)
return;
---вот этот самый dialog.FileName-----------
MessageBox.Show("OK");
"
ExportToDXF с помощью API, Помогите пожалуйста!
 
А замена
ExportToDXF--->ImportFromACAD
Export--->Import
SaveFileDialog--->OpenFileDialog
не петрится?
Редактирование переменных с помощью exe
 
Про VB (6, A) все знает .. .\T-FLEX\T-FLEX CAD 11\Документация\ActiveX T-FLEX CAD.pdf

Перебрать переменные (в данном случае числовые) можно хотя бы вот так:

Private Sub UserForm_Initialize()
Set tf = GetObject("", "TFW32.SERVER")
Set doc = tf.GetActiveFile()
'Dim perem(1000, 2) As String

Set bdd = doc.GetDat abase(TextBox6.Text)

nm = doc.GetFileName()
TFLEX.Caption = "T-FLEX CAD - " & Right(nm, InStr(1, StrReverse(nm), "\") - 1)

perem1id = doc.GetFirstRealVariable()
perem1 = doc.GetVariableName(perem1id)

perem(0, 1) = perem1
perem(0, 2) = Str(perem1id)

Do

idper = idper + 1
pred = Val(perem(idper - 1, 2))
vvl = doc.GetNextRealVariable(pred)
If vvl <> -1 Then
perem(idper, 1) = doc.GetVariableName(vvl)
perem(idper, 2) = Trim(Str(vvl))
Else
Exit Do
End If

Loop

For q = 0 To idper - 1
ComboBox1.AddItem (perem(q, 1))
ListBox1.AddItem (perem(q, 1))
Next

End Sub
ExportToDXF с помощью API, Помогите пожалуйста!
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using TFlex;
using TFlex.Model;
using TFlex.Model.Model2D;
using Application = TFlex.Application;

namespace TFlexXMLExport
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }

       private void Form1_Load(object sender, EventArgs e)
       {
           TFlex.Application.InitSession(new ApplicationSessionSetup { Enable3D = true, EnableMacros = true, ReadOnly = false });
           OpenFileDialog opf = new OpenFileDialog();
           opf.Filter = "GRB files |*.grb";
           if (opf.ShowDialog() != DialogResult.OK)
               return;

           var document = TFlex.Application.OpenDocument(@opf.FileName);

           SaveFileDialog dialog = new SaveFileDialog();
           dialog.Filter = "DXF files |*.dxf";
           if (dialog.ShowDialog() != DialogResult.OK)
               return;

           ExportToDXF exp = document.ExportToDXF;
           exp.Export(dialog.FileName);
          MessageBox.Show("OK");
       }

   }
}
Изменено: petrick - 10.11.2011 08:52:00
ExportToDXF с помощью API, Помогите пожалуйста!
 
Как-то приблизительно вот так

using System;
using TFlex;
using TFlex.Model;
using TFlex.Model.Model2D;
using System.Windows.Forms;
using System.IO;


namespace NewMacroNamespace
{
public class NewMacroClass
{
public static void NewMacro()
{

SaveFileDialog dialog = new SaveFileDialog ();
    dialog.Filter = "DXF files |*.dxf";
if(dialog.ShowDialog() != DialogResult.OK)
return;

Document doc=TFlex.Application.ActiveDocument;
ExportToDXF exp = doc.ExportToDXF;
exp.Export(dialog.FileName);
//...
}

}
}
3D путь, 3D путь, помогите построить
 
http://www.tflex.ru/vhodnaforum/read.php?FID=14&TID=1477&MID=1
ConstructionOutline, ДОПОЛНИТЕЛЬНЫЕ параметры линии изображения
 
Здравствуйте! Возникла такая проблема - в полученном комплекте документация толщина линий задана через вкладку "Дополнительные параметры". Как добраться до параметра "Ширина" и галочки "Установить"(дополнительные параметры)?
Tflex и Delphi, импорт параметрической таблицы
 
Лучше поздно, чем никогда, правда?:)
.. .\Program Files\T-FLEX\T-FLEX CAD 11\Документация\ActiveX T-FLEX CAD.pdf
Одно время подобные задания были популярны на олимпиаде по САПР в Хмельницком, можно поискать ее материалы, по ее же мотивам есть неплохое описание в метод. материалах у Пасечника (точно где-то в свободном доступе лежит), раздел так и называется "1.2.3. Использование Delphi для автоматизации проектирования в T-FLEX", там рассмотрены и Ваш подход
Вставка 3D-фрагмента в T-Flex по команде внешнего приложения
 
http://tflex-nord.narod.ru/html/api/api_02/ObjectDocumentTFlexCad/Object3D/Fragment3­D.htm
Страницы: 1 2 След.