New Feature: Perspective Piping

What would it take to move segments by arrow keys instead of mouse dragging? When I have to do a pixel perfect project I’d prefer to use arrow keys.

3 Likes

@mperkins
A magnetic grid would be wonderfull !

1 Like

I’ll file an enhancement ticket for that, shouldn’t be too hard to implement

I’ll file an enhancement ticket for that too

Would it be possible to add functionality to bring the pipes to front? I have some objects I would like to run the pipes through.

Hi Hans, pipes aren’t components so they aren’t part of the Perspective component z-ordering. It’d be possible to enhance it to do that- but it’d be tricky both from a coding and from a user’s intuition standpoint. One workaround would be to add a child Coordinate Container with your pipes that you want to run in front of other components.

Say if you view consisted of

  • Parent Coordinate container
    • Child Component you want behind the pipes - say a Motor Symbol
    • Child Coordinate Container
      • Pipes you want in front of the Motor Symbol

Your suggested workaround did the trick for me, thank you :slight_smile:

Is there a way to force two pipe ends to join? I am having an issue where part of my pipe will not join. See example below:
image

Unfortunately this is not possible with Perspective Piping. Due to Perspective’s props structure, a tree data structure was chosen to represent the pipes wherein a descendent cannot connect to its ancestor. You can see this in the Coordinate Container’s props.pipes, you’ll see that pipes have one origin, each origin can have a number of connections, and those connections can have any number of connections, and so forth… but a connection can’t connect back to a prior connection (an ancestor)- these connections are discrete points that only ever hold more connections.

Technically it’s possible to engineer a solution where we could do so, but from a Designer’s perspective- particularly without a CS background it’d be very confusing- also very fragile to manipulate such a data structure directly within Perspective’s Property Editor so the straight forward tree approach was chosen.

When engineering these features there’s a balance between what is intuitive to the end users, what’s practical using our data model, and what functionality user’s need.

1 Like

Thank you, good to know.

Is it possible to create custom component anchors? It's really nice to have the "natural" component anchors and would be great if we could set these on embeddedViews, containers and other components

1 Like

Hey Nader, is this something available to the public? I don't actually have a project in mind, but just curious

Edit: @victordcq :slight_smile: Thanks @lrose

Guessing you would need to get in touch with @victordcq.

1 Like

Hi @nminchin
Unfortunately not

If only you could add id's to the svg groups it would have been easy enough to make it for free.
But the name property given in the designer doesnt do anything at all. So it required quite a bit of work, which i cant make for free sorry...

I have no idea if the recent updates for the svg import now allow id's though? Damn i should have asked about this when they asked for the svg update ideas xd

I think you misunderstood what I meant by available to the public - I meant available at all, paid or otherwise :slight_smile:

1 Like

Sooo i updated to the latest nightly and it seems that svg groups finnaly have id's and names! This make a click script a lot easier :smiley:

2 Likes

welp... i just had to try it out didnt it :crazy_face:

Required version 8.1.22

Behold! JS INJECTED SVG CLICKER
jsInjectedSvgClicker.zip (3.6 KB)

edit: I made the value of the binding become the name it writes to in the view.custom props

Be sure to set the custom prop back to null after handling your event so you can trigger the onchange events on the prop :wink:

It should only detect things inside this view. Haven't fully tested it though.

4 Likes

you mean custom anchors for Piping?

It's undocumented, but if you add class ia_drawingComponent__pipingAnchor to an SVG Drawing Element, it'll act like an anchor.

In my example I converted a Sensor Symbol component to a drawing, it has some of these anchors already built in. I then modified the anchor element, and toggled piping draw mode on and off to move it (unfortunately the code doesn't detect this change as it's happening)


3 Likes

Hi @mperkins

I'd like to show you what is actual the difference in the performance of using Perspective native pipelines tools and SVG drawing and importing for a big page. Here I start to use the Perspective pipeline for my P&ID but in the end, the Runtime Performance is very bad that rejected by the client.

Perspective Pipeline:

  • Take 3 days to draw the pipeline as the Designer's UI is getting too sluggish as I draw more pipelines. - Runtime Performance is very bad as it cause even objects which are not part of the page is getting slow. UI is not usable (as shown in the video the top menu is slow in this case)
  • Moving Components in the designer is not possible as UI is very laggy.
    Note: Even Converting the pipeline to SVG drawing by Perspective (v8.1.22) does not help at all. it seems the conversion method creates too much extra metadata that makes UI very slow.

SVG drawing in Inkscape and import it into the Perspective and put it as background:

  • Take 5 hours to draw the pipeline.
  • Runtime Performance is good and the user can work with UI.

For me using Perspective is fun and enjoyable if at least we get the same performance as normal SVG. Back and forth between Inkscape and Perspective is annoying but until fixing the performance of the pipeline this is my workflow.

3 Likes