Author Topic: MDG - alternate image support in a stereotype  (Read 2836 times)

Guillaume

  • EA Practitioner
  • ***
  • Posts: 1351
  • Karma: +42/-2
    • View Profile
    • www.umlchannel.com
MDG - alternate image support in a stereotype
« on: February 06, 2020, 09:33:48 pm »
Hi,
I found a number of threads on this topic.
I have stereotyped Archimate elements defined within an MDG - for the stereotyped "communication network object", I want show in a diagram the default Archimate view, and within another diagram an Image (e.g. network switch).
All my images are in the Image Library and they're exported in the MDG.

I applied the following shapescript (based on previous threads):

Code: [Select]
shape main{
Image("NetSwitch",0,0,100,100);
}

Result: the image is shown but I cannot access any longer the Archimate default view.
I looked at the help section https://www.sparxsystems.com/enterprise_architect_user_guide/15.1/model_domains/stereotypeswithalternateima.html but it doesn't say much.

Is there a way to define 2 views on a stereotyped element e.g. Archimate or Image?
Note: if I create an element in EA, I can set an alternate image for that element in a diagram, however it keeps its original view on other diagrams.

Guillaume

Blog: www.umlchannel.com | Free utilities addin: www.eautils.com


qwerty

  • EA Guru
  • *****
  • Posts: 13584
  • Karma: +396/-301
  • I'm no guru at all
    • View Profile
Re: MDG - alternate image support in a stereotype
« Reply #1 on: February 06, 2020, 10:24:37 pm »
You can, when you use
Code: [Select]
if(HasProperty('rectanglenotation','0')) the menu will show the "Use Rectangle Notation". The default would be rectangular notation and you could turn it off. From 15.1 on (not tested, only heard of) it should be the other (logical) way around.

A better way is to use a tagged value to allow showing the image or the native notation. So you can choose from the TV window what to display.

q.
« Last Edit: February 06, 2020, 10:26:35 pm by qwerty »

Guillaume

  • EA Practitioner
  • ***
  • Posts: 1351
  • Karma: +42/-2
    • View Profile
    • www.umlchannel.com
Re: MDG - alternate image support in a stereotype
« Reply #2 on: February 07, 2020, 03:15:17 am »
Thanks for the advice, I managed to get it to work for all the elements that don't have a predefined rectangle notation with the following:

Code: [Select]
shape main{
if(HasProperty('rectanglenotation','0'))
{
Image("Switch",0,0,100,100);
return;
}
else
{
DrawNativeShape();
return;
}
}

However I'm having issues with Archimate elements that have an existing rectangle notation behaviour such as Archimate Application components.
The Image displays well with the rectangle notation activated, but by default I get the following:


2 components icons in the top right corner are displayed.

Note: in some cases the Archimate icon remains displayed with image:

Is there a way to remove it?

Any idea?


« Last Edit: February 07, 2020, 03:19:44 am by Guillaume »
Guillaume

Blog: www.umlchannel.com | Free utilities addin: www.eautils.com


qwerty

  • EA Guru
  • *****
  • Posts: 13584
  • Karma: +396/-301
  • I'm no guru at all
    • View Profile
Re: MDG - alternate image support in a stereotype
« Reply #3 on: February 07, 2020, 03:54:33 am »
So I guess you're on V15. In that case I'd advise to contact Sparx' support.

q.

Sunshine

  • EA Practitioner
  • ***
  • Posts: 1309
  • Karma: +120/-10
  • Its the results that count
    • View Profile
Re: MDG - alternate image support in a stereotype
« Reply #4 on: February 08, 2020, 07:53:16 am »
You need to put the condition in the decoration code too to prevent the decoration showing but because your using the DrawNativeShape() method you just get whats already there. Another approach is to put a stereotype on the diagram and write the whole script and not use DrawNativeShape().
Here is an example of an application component script for ArchiMate that changes the shape to circle if the stereotype of the diagram is "BubbleChart".
As you can see I don't use DrawNativeShape() method as I need to put the condition in both main and decoration code fragments.

Code: [Select]
shape main
{
layouttype="border";
if(hasproperty("diagram.stereotype","BubbleChart"))
{
defsize(100,100);
ellipse(0,0,100,100);
addsubshape("padding","n");
addsubshape("bubblename","center");
}
else
{
defsize(90,70); //
rectangle(0,0,100,100);
addsubshape("padding","n");
if(hasproperty("rectanglenotation","0"))
{
addsubshape("port","w");
}
addsubshape("name","center");
}

shape bubblename
{
h_align="center";
println("#name#");
}

shape port
{
preferredwidth=20;
scalable=false;
rectangle(-10,-10,10,0);
rectangle(-10,10,10,20);
}

shape padding
{
preferredheight=15;
}

shape name
{
h_align="center";
print("#name#");
}

}

decoration component
{
orientation="ne";
if(hasproperty("diagram.stereotype", "BubbleChart"))
{
return;
}

if(hasproperty("rectanglenotation","0"))
{
return;
}
else
{
rectangle(0,0,60,100);
rectangle(-10,10,10,30);
rectangle(-10,50,10,70);
}
}

decoration composite
{
orientation="SE";
if(hasproperty("diagram.stereotype", "BubbleChart"))
{
return;
}

if(hasproperty("iscomposite","true"))
{
ellipse(0,40,40,60);
ellipse(60,40,100,60);
moveto(30,50);
lineto(70,50);
}
}
« Last Edit: February 12, 2020, 05:03:09 pm by Sunshine »
Happy to help
:)

Guillaume

  • EA Practitioner
  • ***
  • Posts: 1351
  • Karma: +42/-2
    • View Profile
    • www.umlchannel.com
Re: MDG - alternate image support in a stereotype
« Reply #5 on: February 12, 2020, 12:17:11 am »
Thank you for the advice. It's helped me!
Guillaume

Blog: www.umlchannel.com | Free utilities addin: www.eautils.com