Skip to content

Instantly share code, notes, and snippets.

@jbsarrodie
Created September 14, 2018 18:57
Show Gist options
  • Select an option

  • Save jbsarrodie/3cfe6ae90b29696c55550ce3d4b3a577 to your computer and use it in GitHub Desktop.

Select an option

Save jbsarrodie/3cfe6ae90b29696c55550ce3d4b3a577 to your computer and use it in GitHub Desktop.
#jArchi script to remove bendpoints on selected relationships
// RemoveBentpoints
//
// Requires jArchi - https://www.archimatetool.com/blog/2018/07/02/jarchi/
//
// This script takes a selection of visual objects as input, filter it to keep only relationships and remove all their bendpoints
//
// (c) 2018 Jean-Baptiste Sarrodie
$(selection).filter("relationship").filter(function(o) {return o.view}).each(function(o) {
var view = o.view;
var rel = o.concept;
var source = o.source;
var target = o.target;
o.delete();
view.add(rel, source, target);
})
@smileham

Copy link
Copy Markdown

Very handy! Thanks for sharing!

@timhale7

Copy link
Copy Markdown

any advice on how to access the bendpoint attributes? I'd like to create a variant of this script that reverses the direction of the relationship (where allowed) and preserve the endpoints that already established.

@markbacker

markbacker commented Mar 26, 2021

Copy link
Copy Markdown

This is indeed a very handy script. I use it a lot.

With the new jArchi scripting plugin with GraalVM, it is not working anymore. The filtering function gives a conversion error.

Here a solution that works in both Nashorn and GraalVM :
Replace the first line
$(selection).filter("relationship").filter(function(o) {return o.view}).each(function(o) {
with
$(selection).filter("relationship").filter(function (o) {return (o.id != o.concept.id) }).each(function (o) {

@InceptusSolutions

InceptusSolutions commented Aug 17, 2022

Copy link
Copy Markdown

Similar to last comment but I have replaced

$(selection).filter("relationship").filter(function(o) {return o.view}).each(function(o) {

with

$(selection).filter("relationship").filter(function(o) {return o.view!=undefined}).each(function(o) {

which seemed simpler.
Also made a couple more changes to preserve the label expression

var labelExpr=o.labelExpression;

newo=view.add(rel, source, target);
newo.labelExpression=labelExpr;

@markbacker

Copy link
Copy Markdown

With the relative new method deleteAllBendpoints() you can keep the selected relations. No need to restore anything.

Combined with your line this script only removes the bendpoints of the selected relations:

$(selection).filter("relationship").filter(function(o) {return o.view!=undefined}).each(function(o) {
  o.deleteAllBendpoints();
})

@InceptusSolutions

Copy link
Copy Markdown

Well that's simpler.
I've been using the script a while and never noticed it had been incorporated into the language.
Thanks
(off to update some scripts now)

@cadmageren

Copy link
Copy Markdown

Great work!! Very helpful

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment