Здравствуйте. В редакторе макросов пытался по учебному пособию повторить ростроеие 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();
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. Её использование может помочь вам избежать тех простейших ошибок, которые можно допустить во встроенном редакторе макросов.
Нашел траблу. в строчке не ту функцию задал. там должно быть. 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);
Вот когда создал маленькое приложение в редакторе макросов, где использовалась форма, в которой был чекбокс и там выводились фигура и ее параметры. как ее перегнать в какой то текстовый файл типу ворда и тп.
вот код который должен сохранять в ХМЛ файл всю инфу.....
Код
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);
}
}
}
В визуал студио написан код,точки все в дереве созданы в ручную были.Тоисть он рабочий. как эго подсоединить к уже работающей программе?? просто когда подсоединяю и добавляю библиотеки недостающие для этого кода выдает ошибки....как избежат этого??? нужно просто теперь всю инфу которая компилируется в дерево сохранить в файлик.