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