/
Create Model.cs
134 lines (114 loc) · 4.3 KB
/
Create Model.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// Generated by Tekla.Technology.Akit.ScriptBuilder
using System.Threading;
using Tekla.Structures.Model;
using Tekla.Structures;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using Tekla.Structures.Geometry3d;
using Tekla.Structures.Solid;
using Tekla.Structures.Model.UI;
using TSMUI = Tekla.Structures.Model.UI;
using T3D = Tekla.Structures.Geometry3d;
namespace Tekla.Technology.Akit.UserScript
{
public class Script
{
static double ZDist = 4572;
static Model _model = new Model();
static int NoOfFloor = 2;
public static void Run(Tekla.Technology.Akit.IScript akit)
{
_model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane());
double StartZ = 0;
for (int i = 1; i <= NoOfFloor; i++)
{
if (i == 1)
CreateFloor(StartZ, true);
else
CreateFloor(StartZ, false);
StartZ = ZDist * i;
}
}
private static void CreateFloor(double StartZ, bool IsCreateColumn)
{
double XDist = 6096, YDist = 4572;
double EndX = 0, StartX = 0, StartY = 0, EndY = 0;
for (int j = 1; j <= 5; j++)
{
EndX = 0; StartX = 0;
for (int i = 1; i <= 10; i++)
{
EndX = XDist * i;
Point point = new Point(StartX, StartY, StartZ);
Point point2 = new Point(EndX, StartY, StartZ);
InsertBeam(point, point2);
if (IsCreateColumn)
{
if (i == 1)
InsertColumn(point);
InsertColumn(point2);
}
StartX = EndX;
_model.CommitChanges();
}
StartY = YDist * j;
}
StartX = 0;
double StartXMid = 0;
for (int j = 1; j <= 11; j++)
{
EndY = 0; StartY = 0;
for (int i = 1; i <= 4; i++)
{
EndY = YDist * i;
Point point = new Point(StartX, StartY, StartZ);
Point point2 = new Point(StartX, EndY, StartZ);
InsertBeam(point, point2);
point = new Point(StartXMid, StartY, StartZ);
point2 = new Point(StartXMid, EndY, StartZ);
InsertBeam(point, point2);
StartY = EndY;
}
StartX = XDist * j;
StartXMid = StartX - (XDist / 2);
}
}
private static void InsertBeam(Point StartP, Point EndP)
{
Beam beam = new Beam();
beam.StartPoint = StartP;
beam.EndPoint = EndP;
beam.Name = "BEAM";
beam.Profile.ProfileString = "W16X40";
beam.Material.MaterialString = "A992";
beam.Finish = "PAINT";
beam.Class = "3";
beam.StartPointOffset = new Offset();
beam.EndPointOffset = new Offset();
beam.Insert();
//Thread.Sleep(50);
_model.CommitChanges();
}
private static void InsertColumn(Point StartP)
{
Point EndP = new Point(StartP.X, StartP.Y, StartP.Z + (ZDist * (NoOfFloor - 1)));
Beam beam = new Beam();
beam.StartPoint = new Point(StartP.X, StartP.Y, StartP.Z - 457.2);
beam.EndPoint = EndP;
beam.Name = "COLUMN";
beam.Profile.ProfileString = "W16X40";
beam.Material.MaterialString = "A992";
beam.Finish = "PAINT";
beam.Class = "12";
beam.StartPointOffset = new Offset();
beam.EndPointOffset = new Offset();
beam.Position.Depth = Position.DepthEnum.MIDDLE;
beam.Position.Plane = Position.PlaneEnum.MIDDLE;
beam.Position.Rotation = Position.RotationEnum.FRONT;
beam.Insert();
//Thread.Sleep(50);
_model.CommitChanges();
}
}
}