Преобразуйте программу формы заявки в плагин

#c# #plugins

Вопрос:

Я работаю с API программного обеспечения(Tekla Structures). мы можем создать приложение или плагин. я хочу знать, как я могу написать код своего приложения в виде плагина, потому что это сложно для меня. Специально для того, чтобы я не понимал, как писать его для других кодов, которые сложнее, чем эти. Чего я не понимаю, так это части определения ввода и формы входных данных, как я должен изменить свои входные данные на эту форму. я не хочу копировать это, потому что в других случаях я снова попаду в беду. вот мой код приложения:

     public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        
        Picker Pick1 = new Picker();
        Point Point1 = Pick1.PickPoint("Pick First Point");
        Point Point2 = Pick1.PickPoint("Pick Second Point");

        Beam Mybeam = new Beam();
        Mybeam.StartPoint = Point1;
        Mybeam.EndPoint = Point2;
        Mybeam.Material.MaterialString = "S235JR";
        Mybeam.Profile.ProfileString = "PL20*200";
        Mybeam.Insert();


    }
}
 

вот пример создания плагина Beam, опубликованного программным обеспечением, немного отличающегося от моего по параметрам.

 public class StructuresData
{
    [StructuresField("LengthFactor")]
    public double LengthFactor;
    [StructuresField("Profile")]
    public string Profile;
}


public class BeamPlugin : PluginBase
{
    private StructuresData Data { get; set; }

    private double _LengthFactor;
    private string _Profile;

    // The constructor argument defines the database class StructuresData and set the data to be used in the plug-in.
    public BeamPlugin(StructuresData data)
    {
        TSM.Model M = new TSM.Model();
        Data = data;
    }

    //Defines the inputs to be passed to the plug-in.
    public override List<InputDefinition> DefineInput()
    {
        Picker BeamPicker = new Picker();
        List<InputDefinition> PointList = new List<InputDefinition>();

        Point Point1 = BeamPicker.PickPoint();
        Point Point2 = BeamPicker.PickPoint();

        InputDefinition Input1 = new InputDefinition(Point1);
        InputDefinition Input2 = new InputDefinition(Point2);

        //Add inputs to InputDefinition list.
        PointList.Add(Input1);
        PointList.Add(Input2);

        return PointList;
    }

    private void CreateBeam(Point Point1, Point Point2)
    {
        TSM.Beam MyBeam = new TSM.Beam(Point1, Point2);

        MyBeam.Profile.ProfileString = _Profile;
        MyBeam.Finish = "PAINT";
        MyBeam.Insert();
    }

    // Gets the values from the dialog and sets the default values if needed
    private void GetValuesFromDialog()
    {
        _LengthFactor = Data.LengthFactor;
        _Profile = Data.Profile;
        if (IsDefaultValue(_LengthFactor))
        {
            _LengthFactor = 2.0;
        }
        if (IsDefaultValue(_Profile))
        {
            _Profile = "HEA300";
        }
    }

    //Main method of the plug-in.
    public override bool Run(List<InputDefinition> Input)
    {
        try
        {
            GetValuesFromDialog();

            Point Point1 = (Point)(Input[0]).GetInput();
            Point Point2 = (Point)(Input[1]).GetInput();
            Point LengthVector = new Point(Point2.X - Point1.X, Point2.Y - Point1.Y, Point2.Z - Point1.Z);

            if (_LengthFactor > 0)
            {
                Point2.X = _LengthFactor * LengthVector.X   Point1.X;
                Point2.Y = _LengthFactor * LengthVector.Y   Point1.Y;
                Point2.Z = _LengthFactor * LengthVector.Z   Point1.Z;
            }

            CreateBeam(Point1, Point2);
        }
        catch (Exception Ex)
        {
        }

        return true;
    }
 

вот ссылка на базовый класс плагина программного API:
https://developer.tekla.com/tekla-structures/api/14/15741

Комментарии:

1. Вам нужно быть более конкретным в том, чего вы не понимаете.