Здравствуйте, я генерирую кинетический код JavaScript из инструмента Sparx «enterprise architect» из VB Script. Проблема, с которой я столкнулся, - 1) Я могу сгенерировать код из модели здесь. У меня нет проблем. Но я хотел бы сгенерировать вывод в последовательности слева от модели до нижнего правого. Теперь, как генерируется мой вывод, я добавляю новый компонент, который генерирует первый компонент, а затем другой. генерация кода из архитектуры
Вот моя модель здесь я генерируя вывод, как: 1) Birt 2) ИГПК ..... Но я хочу в последовательности, как 1) GS-IS 2) Promics 3) FMEA 4) ИГПК ...
option explicit
!INC Local Scripts.EAConstants-VBScript
'
sub main
if (Repository.GetTreeSelectedItemType() = otDiagram) then
' Show the script output window
Repository.EnsureOutputVisible "Script"
dim theDiagram as EA.Diagram
set theDiagram = Repository.GetTreeSelectedObject()
dim doOffsetLeft, doOffsetRight, doOffsetTop, doOffsetBottom 'As Integer
dim scaleX, scaleY 'As Integer
dim inputpicSizeX, inputpicSizeY, newpicSizeX1, newpicSizeY2 'As Integer
dim decreasex, newdecreasex, decreasey, newdecreasey ' as Integer
dim connectLink 'As String
scalex = theDiagram.cx
scaley = theDiagram.cy
connectLink=""
'doOffsetLeft = 35
'doOffsetTop = 9
Session.Output("scaleX: " + CStr(scaleX) + "scaleY: " + CStr(scaleY)) 'this have the whole pick size'
connectLink=InputBox("Connect URL for tool list?", "Input required", connectLink)
' next have to take input box and have to calculate % '
newpicSizeX1 = CInt(InputBox("Exported image width (in pixels)?", "Input required", inputpicSizeX))
newpicSizeY2 = CInt(InputBox("Exported image height (in pixels)?", "Input required", inputpicSizeY))
Session.Output("NewscaleX: " + CStr(newpicSizeX1) + "NewscaleY: " + CStr(newpicSizeY2)) 'new scale stored here given by user'
'calculation of % x'
decreasex = scalex - newpicSizex1
newdecreasex = (decreasex/scalex) * 100
'calculation of % y'
decreasey = scaley - newpicSizeY2
newdecreasey = (decreasey/ scaley) * 100
Session.Output("%decreasex: " + CStr(newdecreasex) + " %decreasey: " + CStr(newdecreasey))'new % output'
dim diagramObjects as EA.Collection
Set diagramObjects = theDiagram.DiagramObjects
dim diagramObject As EA.DiagramObject
dim x1
dim y1
dim x2
dim y2
dim width
dim height
dim seqCnt
dim found
dim findIdx
seqCnt = 0
found = true
while (found)
seqCnt = seqCnt + 1
findIdx = 0
found = false
while ((Not found) and (findIdx < diagramObjects.Count))
Set diagramObject = diagramObjects.GetAt(findIdx)
if (diagramObject.Sequence = seqCnt) Then
dim doLeft, doRight, doTop, doBottom 'As Integer
dim element AS EA.Element
set element = Repository.GetElementByID(diagramObject.ElementID)
x1 = CInt(diagramObject.left * ((100 - newdecreasex)/100)) - 28
y1 = CInt(-1 * diagramObject.top * ((100 - newdecreasey)/100)) - 42
x2 = 1 * CInt(diagramObject.right * ((100 - newdecreasex)/100)) - 28
y2 = CInt(-1 * diagramObject.bottom * ((100 - newdecreasey)/100)) -45
width = x2 - x1
height = -1 * (y1 - y2)
if (element.Type = "ActivityPartition") Then
dim ElementName
ElementName = Replace(element.Name, " ", "")
'for drawing rectangle outer boundry
Session.Output("var " & ElementName & " = new Kinetic.Rect({")
'Session.Output("X:" & X1 & "," "Y:" & y1 & "," "Width:" & width & "," "Height:" & height & "," "Stroke Width:2})")
Session.Output("x : " & X1 & ",")
Session.Output("y : " & y1 & ",")
Session.Output("width : " & width & ",")
Session.Output("height : " & height & ",")
Session.Output("strokeWidth : 2 " & ",")
Session.Output("stroke : 'Black'" & "," & "});")
'layer.add(EngineeringData);
Session.Output("layer.add(" & ElementName & ");")
'for drawing outer boundry line
dim ElementLine
dim linewidth
dim ywidth
'ElementLine = join(ElementName,"line")
ElementLine = (Elementname & "line")
'Session.Output (ElementLine)
ywidth = (y1+20) 'line should come down so adding 20
linewidth= (width+X1) ' till where the line has to end so width + x1 value
'for drawing line
Session.Output("var " & ElementLine & " = new Kinetic.Line({")
'Session.Output("X:" & X1 & "," "Y:" & y1 & "," "Width:" & width & "," "Height:" & height & "," "Stroke Width:2})")
Session.Output("points : " & "[" & X1 & "," & ywidth & "," & linewidth & "," & ywidth & "],")
Session.Output("stroke : 'black' " & ",")
Session.Output("strokeWidth : 2 " & ",")
Session.Output("tension : 0 " & ",")
Session.Output("linecap : 'round'" & "," & "});")
Session.Output("layer.add(" & ElementLine & ");")
'for drawing message text
dim Elementtext
Elementtext = (Elementname & "text")
dim ActivityName
ActivityName = element.Name
'Session.Output(Elementtext)
Session.Output("var " & Elementtext & " = new Kinetic.Text({")
'Session.Output("X:" & X1 & "," "Y:" & y1 & "," "Width:" & width & "," "Height:" & height & "," "Stroke Width:2})")
Session.Output("x : " & X1 & ",")
Session.Output("y : " & y1 & ",")
Session.Output("width : " & width & ",")
Session.Output("height : " & height & ",")
Session.Output("text : " & "'" & ActivityName & "'" & ",")
Session.Output("fontSize : 17 " & ",")
Session.Output("fontFamily : 'Calibri' " & ",")
Session.Output("fill : 'black' " & ",")
Session.Output("align : 'center'" & "," & "});")
'layer.add(EngineeringData);
Session.Output("layer.add(" & Elementtext & ");")
end if
' diagramObjects.DeleteAt findIdx,true
found = true
end if
findIdx = findIdx + 1
wend
wend
else
' Error message
Session.Prompt "This script does not support items of this type.", promptOK
end if
end sub
function TVGetElementTaggedValue(theElement, taggedValueName, defaultValueMissing, defaultValueEmpty)
if not theElement is nothing and Len(taggedValueName) > 0 then
dim taggedValue as EA.TaggedValue
set taggedValue = theElement.TaggedValues.GetByName(taggedValueName)
if taggedValue is nothing then
TVGetElementTaggedValue = defaultValueMissing
' Dump warning
'Session.Output(theElement.Name & " " & taggedValueName & " TAG Missing")
else
if taggedValue.Value = "" then
TVGetElementTaggedValue = defaultValueEmpty
' Dump warning
'Session.Output(theElement.Name & " " & taggedValueName & " Value Missing")
else
TVGetElementTaggedValue = taggedValue.Value
end if
end if
end if
end function
main
Я не могу понять, почему заказ важен. Я генерирую код, тогда это пакет, и в итоге у вас есть код - или нет. –
Порядок очень важен для меня, потому что я генерирую код Kinetic Javascript из сценария VB. Прямо сейчас я получаю вывод, что нет никаких проблем, но я хочу, чтобы слева направо от диаграммы. – Rickey
Если вы создаете код из VB (и не используете этот неудобный язык сценариев из Sparx), вы можете использовать порядок элементов в дереве проектов. IIRC это свойство Pos. Обратите внимание, что порядок лежит в основе очень грубых заказов. Я объяснил это на форуме Sparx один раз. Лучше всего заставить команду вручную перемещать один элемент вверх/вниз. –