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


Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Помогите с Т-flex, Редактор макросов Т-flex
 
Здравствуйте. В редакторе макросов пытался по учебному пособию повторить ростроеие 3Д модели выталкиванием.
Оно то выталкивает, но только на высоту 10 милиметров.
Сколько не подставляю, все равно высота равна 10 миллиметров. В чем трабла??? Баг редактора или у меня руки кривоваты?
Вот сам код программы макроса:

using System;
using TFlex.Model;
using TFlex.Model.Model2D;
using TFlex.Model.Model3D;

namespace NewMacroNamespace
{
public class NewMacroClass
{
public static void NewMacro()
{
// Выбираем документ
Document tfdoc = TFlex.Application.ActiveDocument;

// блок изменений
tfdoc.BeginChanges("тест");

// Создаем свободные узлы контура
FreeNode fn1 = new FreeNode(tfdoc, 0, 0);
FreeNode fn2 = new FreeNode(tfdoc, 50, 50);
FreeNode fn3 = new FreeNode(tfdoc, 100, 50);
FreeNode fn4 = new FreeNode(tfdoc, 100, 0);

// Замыкаем контур
ConstructionOutline c1 = new
ConstructionOutline (tfdoc, fn1, fn2);
ConstructionOutline c2 = new
ConstructionOutline (tfdoc, fn2, fn3);
ConstructionOutline c3 = new
ConstructionOutline (tfdoc, fn3, fn4);
ConstructionOutline c4 = new
ConstructionOutline (tfdoc, fn4, fn1);

// Создаем штриховку
Area ar1 = new Area (tfdoc);
Contour cn = ar1.AppendContour();

// Описываем контур штриховки сегментами
ConstructionContourSegment ccs1 = new
ConstructionContourSegment(cn);
ccs1.StartNode = fn1;
ccs1.EndNode = fn2;

ConstructionContourSegment ccs2 = new
ConstructionContourSegment(cn);
ccs2.StartNode = fn2;
ccs2.EndNode = fn3;

ConstructionContourSegment ccs3 = new
ConstructionContourSegment(cn);
ccs3.StartNode = fn3;
ccs3.EndNode = fn4;

ConstructionContourSegment ccs4 = new
ConstructionContourSegment(cn);
ccs4.StartNode = fn4;
ccs4.EndNode = fn1;

// Создаем стандартную рабочую плоскость
StandardWorkplane swp1 = new
StandardWorkplane(tfdoc, StandardWorkplane.StandardType.Top);

// Создаем 3D на основе штриховки и рабочей плоскости
AreaProfile ap1 = new AreaProfile(tfdoc);
ap1.Area = ar1;
ap1.WorkSurface = swp1;

// Создаем операцию выталкивания
ThickenExtrusion extr = new ThickenExtrusion(tfdoc);

// Длина выталкивания (вот тут баг какой то. Выталкивает только на 10 мм)
extr.Thickness1 = 50;

// Профиль для выталкивания
extr.Profile.Add(ap1.Geometry.SheetContour);

// Закрываем блок изменений
tfdoc.EndChanges();
}

}
}
Изменено: Антон Рожик - 27.10.2011 22:01:14
 
Антон!

Вот работающий код:
Код
  FreeNode n1 = new FreeNode(docTF,(Parameter)1,(Parameter)1);

  CircleConstruction circle = new CircleConstruction (docTF);
  circle.SetCenterAndRadius(n1, (Parameter)10);

  Area ar = new Area (docTF);
  Contour cn = ar.AppendContour();

  ConstructionContourSegment seg1 = new ConstructionContourSegment(cn); 
  seg1.Construction = circle;

  StandardWorkplane swp = new StandardWorkplane(docTF, StandardWorkplane.StandardType.Top);
  AreaProfile pr3D = new AreaProfile(docTF);
  pr3D.Area = ar;
  pr3D.WorkSurface = swp;

  ThickenExtrusion EXT = new ThickenExtrusion(docTF);

  EXT.Thickness1 = (Parameter)10;
  EXT.Profile.Add(pr3D.Geometry.SheetContour);


Скорее всего, ошибочка в вашем коде была в строчке, где задавался параметр выталкивания. Значение длины выталивания нужно приводить к параметру:
Код
EXT.Thickness1 = (Parameter)10;


Антон, в какой среде вы пишите код? Мы рекомендуем использовать для этого Visual Studio. Её использование может помочь вам избежать тех простейших ошибок, которые можно допустить во встроенном редакторе макросов.
...и он исчез, оставив за собой ощущение уходящего Маззи...
 
Osiris2000 делал по твоему примеру все, но не пашет так же.....
Изменено: Антон Рожик - 07.11.2011 23:42:42
 
Нашел траблу. в строчке не ту функцию задал.
там должно быть. ForwardLenght . Осталось только разобраться как задать выталкивание в разные стороны на разное расстояние.

EXT.ForwardLenghth = ХХ;
EXT.BackwardLength = YY;
не катит
 
Попробуйте внести вот такие изменения:

ThickenExtrusion EXT = new ThickenExtrusion(docTF);
EXT.LengthType = ThickenExtrusion.LengthValue.AutoValue; //Нужно вот такой параметр выставить. Это важно!
EXT.ForwardLength = (Parameter)(-50);
EXT.Profile.Add(pr3D.Geometry.SheetContour);
...и он исчез, оставив за собой ощущение уходящего Маззи...
 
Вот пример того, как можно организовать макрос с использованием DLL.
Файл имеет расширение zip.

Повторюсь: для разработки макросов мы рекомендуем использовать Visual Studio.
...и он исчез, оставив за собой ощущение уходящего Маззи...
 
Вот когда создал маленькое приложение в редакторе макросов, где использовалась форма, в которой был чекбокс и там выводились фигура и ее параметры. как ее перегнать в какой то текстовый файл типу ворда и тп.
 
вот код который должен сохранять в ХМЛ файл всю инфу.....
Код
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;

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

        private void button1_Click(object sender, EventArgs e)
        {
             // Этот пример записывает xml в строку
            var buffer = new StringBuilder();
            var settings = new XmlWriterSettings { Indent = true };
 
            // Измените вызов метода Create, если надо писать в файл, например.
            using (var writer = XmlTextWriter.Create(buffer, settings))
            {
                writer.WriteStartElement("nodes");
                Traverse(treeView1.Nodes[0], writer);
                writer.WriteEndDocument();
            }
 
            File.WriteAllText(@"C:\output.xml", buffer.ToString());
        }
 
        void Traverse(TreeNode root, XmlWriter w)
        {
            if (root == null) return;
 
            
            {
                w.WriteStartElement("node");
                w.WriteAttributeString("id", root.Text);
                Traverse(root.FirstNode, w);
                w.WriteEndElement();
            }
            Traverse(root.NextNode, w);
  
        }
    }
}


В визуал студио написан код,точки все в дереве созданы в ручную были.Тоисть он рабочий. как эго подсоединить к уже работающей программе?? просто когда подсоединяю и добавляю библиотеки недостающие для этого кода выдает ошибки....как избежат этого???
нужно просто теперь всю инфу которая компилируется в дерево сохранить в файлик.
Страницы: 1