-
-
Notifications
You must be signed in to change notification settings - Fork 102
/
mtextoperations.lua
109 lines (101 loc) · 3.59 KB
/
mtextoperations.lua
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
MTextOperations = {
name = "MTextOperations",
command_line = "MTEXT",
context_transitions = {
enterTextValue = {"enterInsertionPoint", "enterHeight", "enterAngle"},
enterInsertionPoint = {"enterTextValue", "enterHeight", "enterAngle"},
enterHeight = {"enterTextValue", "enterInsertionPoint", "enterAngle"},
enterAngle = {"enterTextValue", "enterInsertionPoint", "enterHeight"}
}
}
MTextOperations.__index = MTextOperations
setmetatable(MTextOperations, {
__index = CreateOperations,
__call = function (o, ...)
local self = setmetatable({}, o)
self:_init(...)
return self
end,
})
function MTextOperations:_init()
CreateOperations._init(self, lc.builder.MTextBuilder, "enterTextValue")
message("Enter mtext value")
self.builder:setTextValue("MText")
mainWindow:cliCommand():commandActive(true)
end
function MTextOperations:enterTextValue(eventName, data)
if(eventName == "mouseMove") then
self.builder:setInsertionPoint(data["position"])
elseif(eventName == "text") then
self.builder:setTextValue(data["text"])
self.textValue = data["text"]
self:determineNextStep()
end
end
function MTextOperations:enterInsertionPoint(eventName, data)
if(eventName == "mouseMove") then
self.builder:setInsertionPoint(data["position"])
elseif(eventName == "point") then
self.builder:setInsertionPoint(data["position"])
if self.byTextDialog ~= nil and self.byTextDialog then
self:createEntity()
else
self.insertionPoint = data["position"]
self:determineNextStep()
end
end
end
function MTextOperations:enterHeight(eventName, data)
if(eventName == "mouseMove") then
local dist = self.builder:insertionPoint():distanceTo(data["position"])
self.builder:setHeight(dist)
elseif(eventName == "point") then
local dist = self.builder:insertionPoint():distanceTo(data["position"])
self.builder:setHeight(dist)
self.height = dist
self:determineNextStep()
elseif(eventName == "number") then
self.builder:setHeight(data["number"])
self.height = data["number"]
self:determineNextStep()
end
end
function MTextOperations:enterAngle(eventName, data)
if(eventName == "mouseMove") then
local ang = self.builder:insertionPoint():distanceTo(data["position"]) * 0.05
self.builder:setAngle(ang)
elseif(eventName == "point") then
local ang = self.builder:insertionPoint():distanceTo(data["position"]) * 0.05
self.builder:setAngle(ang)
self.angle = ang
self:determineNextStep()
elseif(eventName == "number") then
self.builder:setAngle(data["number"] * 3.1416/180)
self.angle = self.builder:angle()
self:determineNextStep()
end
end
function MTextOperations:copyEntity(textEntity)
self.builder:copy(textEntity)
self.byTextDialog = true
self.step = "enterInsertionPoint"
message("Enter insertion point")
end
function MTextOperations:determineNextStep()
if(self.textValue == nil) then
message("Enter text value")
self.step = "enterTextValue"
elseif(self.insertionPoint == nil) then
message("Enter insertion point")
self.step = "enterInsertionPoint"
elseif(self.height == nil) then
message("Enter height of text")
self.step = "enterHeight"
elseif(self.angle == nil) then
message("Enter angle of text (in degrees)")
self.step = "enterAngle"
else
message("Done")
self:createEntity()
end
end