#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. Вам нужно быть более конкретным в том, чего вы не понимаете.