Community Tip - When posting, your subject should be specific and summarize your question. Here are some additional tips on asking a great question. X
Hi there,
I need to draw vertical lines along the alignment ( the red lines along the black line) a line each 50 m
How to draw it through this drawing
Thanks in advance
Solved! Go to Solution.
OK, here's the file.
I added grid lines so its easier to manually scale the plot for equal scale in x and y-direction.
The picture shows a grid of 500x500, markers every 200 along the length of the path and the markers lengths are 1000.
I adjusted the program to deliver more accurate results (the old version would increase the points until the distance exceeds a multiple of, lets say 200 in our example and so often the value was about 2,5 too large.
The way the adjustment was made is rather bold and crude and is tailored to this specific set of data only.
Could be sure done better but I ran out of coffee 😉
The direction of the markers also could be done better, not only considering the previous point but also the next one to have a better approximation of the slope and its normal.
Additionally I could not be bothered to apply Lucs routines to place text in the plot.
I provided the link to his functions in a recent reply here, though, in case you are about to give it a try yourself.
Prime 9 file attached
@YA_10963798 wrote:
Hi there,
I need to draw vertical lines along the alignment ( the red lines along the black line) a line each 50 m
'vertical' ??
In the sense of parallel to the ordinate axis ("y"-axis)? Similar to grid lines?
Your sketch does not look that way, though!?
And why are the smaller values to the right?
You would have to specify at which abscissa value the first line should be.
Your vector A^<1> is running from 115515.997 to 122069.455. If the units A^<1> are meant to be meter this means about 131 vertical lines.
You could use the vertical markers which Prime offers (I don't know if their number is limited) but you would have to manually set up each one separately. Or you could write a small program to create a data structure which shows as a couple of vertical lines.
You could use one of the grid functions which are posted here from time to time. You would not only have to provide the limits of the x limits for these functions but also the y limits the lines should run from and to.
Or does 'vertical' mean perpendicular to the graphed black line? Again your sketch does not look that way - at least not at the left side.
Are the 50m 100m etc x-axis values (values of A1^<1>) or something else? If the latter, you would have to state which meter value would correspond to which value in A^<1>.
At the top of the sheet you say "intervals" should be 50, so that may be the number of lines you want to draw.
But in your question you write you want "a line each 50 meter".
Where does
stem from? Because I also can calculate a different value
At least that's what I get when I use the Excel data file which you posted in earlier threads.
So there are a lot of questions open - at least for me.
As an example here is a plot with 51 vertical lines, making up 50 intervals of 131,069 length.
Absolutely not sure if this is it what you are looking for.
Hi Werner,
Yes, I shoudn't use the word vertical ...the lines should be lying on the alignment line ...and the number of the lines can be calculated by dividing the alignment length (7548m) by 50 m so there will be 151 line should be drawn. and Is it possible for the plot to write down the distance like in the first one 0+00 in the second 50 m , third 100 like my paint
Are they x or y points I think they are both right >> because we are taking A as reference to draw them
@YA_10963798 wrote:
Hi Werner,
Yes, I shoudn't use the word vertical ...the lines should be lying on the alignment line ...and the number of the lines can be calculated by dividing the alignment length (7548m) by 50 m so there will be 151 line should be drawn. and Is it possible for the plot to write down the distance like in the first one 0+00 in the second 50 m , third 100 like my paint
Are they x or y points I think they are both right >> because we are taking A as reference to draw them
Sorry, still unclear to me 😞
Whats an "alignment line" where the lines should be "lying on"?
I still won't know which direction the lines to be drawn should have. Should they be even straight lines? Doesn't look so from your sketch.
And again my question where the value 7548m would stem from??
Or are we talking about something like contour lines / layer lines (not sure about the correct English word for it) as can be seen on a hiking map?? Then my question would be where we should get the information about points of equal height.
Concerning your question about writing the numbers in the plot. Prime provides no means for doing so. But @LucMeekes had once posted a utility function which enabled us to use text in plots by creating the necessary data structure for a plot. Quite elaborate.
@ttokoro seemed to like that function and now and then he reposted Luc's work.
EDIT: Just happened to find Luc's thread: Solved: Toolbox: Text plotting - PTC Community
Ah!, I was able at least to answer one of my questions myself
So we are talking about the straightened length of that street or river or whatever it may be, right?
And probably you 'just' want a small marker every 50 meter along the way.
Drawing that marker perpendicular to the 'street' would mean some effort, may be perpendicular to the last line segment would suffice? What should be the length of this marker?
And a most important question: Where should the first marker for 0 meter should be placed? Given from your sketches so far it looks like you want it to be somewhere at the right of the plot. Maybe at the last value in A??
EDIT: Just noted that the values in A are in reverse order anyway, so the first entry in A is the rightmost point.
yes exactly it should be straightend line ...
Yes small marker will be enough ... its length can be 45 m .... I don't know how that will look like ...but if it doesn't look good a small line will be okay
I think it will be better if we start from the left although I draw it the opposite ..It should start from A 1
thanks in advance
I'm still not quite sure I know what a "vertical" line is. I clearly need a cup of tea to refresh my thinking head.
However, is this kind of thing nearer the mark?
BTW, Werner, I was going by Yusra's statement at the top of her worksheet about the intervals being 50 m, so that's why I chose the interval length as opposed to the number of intervals,
Stuart
Nice this looks really good >> I will try it right away
Corrected the end point - think ...
Stuart
Did you define nmarkers ? or it is just what you wrote inside the metreage function.. ?
and what does yscl=20% mean ?
@YA_10963798 wrote:
Did you define nmarkers ? or it is just what you wrote inside the metreage function.. ?
and what does yscl=20% mean ?
Yes, I prior defined nmarkers - see https://community.ptc.com/t5/Mathcad/Drawing-a-vertical-line-in-plot/m-p/981468/highlight/true#M214781
However, you don't need it. Just type in 50 m, 100 m, 200 m, whatever takes your fancy for intervals.
yscl<-20 % means a vertical line scaling of 20 % (of ylen). You could equally well have put 0.2
Stuart
Does your solution consider the straightened length of the curve or rather the distance in x-direction when in comes to the distance of the markers?
I redefined it ... it works ..
Thank you so much for the reply ....as always a professional reply ....
Here is an intermediate result - a red point every 50 (meter).
That's a lot of points, I guess and will make for a rather unclear display if line segments and numbers are applied as well.
I see .. it will look like we are drawing the lines in each point of A... In this case no problem we can go with 200 instead of 50..
@YA_10963798 wrote:
I see .. it will look like we are drawing the lines in each point of A...
Correct. Here the line lengthchosen is 400 (45 would be too small, I think)
Looks better with a marker every 200 (meter) with a length of 1000 (meter):
File still under construction 😉
OK, here's the file.
I added grid lines so its easier to manually scale the plot for equal scale in x and y-direction.
The picture shows a grid of 500x500, markers every 200 along the length of the path and the markers lengths are 1000.
I adjusted the program to deliver more accurate results (the old version would increase the points until the distance exceeds a multiple of, lets say 200 in our example and so often the value was about 2,5 too large.
The way the adjustment was made is rather bold and crude and is tailored to this specific set of data only.
Could be sure done better but I ran out of coffee 😉
The direction of the markers also could be done better, not only considering the previous point but also the next one to have a better approximation of the slope and its normal.
Additionally I could not be bothered to apply Lucs routines to place text in the plot.
I provided the link to his functions in a recent reply here, though, in case you are about to give it a try yourself.
Prime 9 file attached
That is really brilliant thank you so much .
Had some (much!) coffee, added text:
Functions used by courtesy of Luc who was genorous enough to share them with us.
You can set the font size, italic, bold and also decide how many labels you want to see.
You could decide to show every label, but you would have to use a quite tiny font size. So I settled for showing just every second value.
Of course you can play around, make the marker shorter (600), draw a marker ever 100 meter but only show the label of every fifth of them:
Prime 9 file attached
I thought I might try my hand at the number plotting, but I've just popped in to have a look at the state of play, and you've saved me the effort! 😁
However, if things get a little cramped width-wise, then it might be nice to rotate the text as well.
Where ...
I created SIValueOf and repeat before realizing that I didn't need them, but waste not, want not.
Stuart
I have to admit that when it comes to Mathcad or Prime, I am easily put off by large amounts of images alone. Being lazy by nature, the idea of having to type is also extremely daunting. 😉 😈
But I am sure that these are quite nice and useful functions even though I am not sure if they conform to Luc's concept, where you could exchange the very same data type between the various modifiers like Bold(Italic(...)).
Not sure if we could use your Rot the same way like Bold(Rot(Italic(...))).
I guess it would be beneficial to add an angle of rotation (or a direction vector, again a 2x1 vector) as additional function argument to the function Monospaced(...) and its proportional pendent. Maybe also an alignment argument, a 2x1 vector for horizontal and vertical alignment (left, center, right).
@Werner_E wrote:
I have to admit that when it comes to Mathcad or Prime, I am easily put off by large amounts of images alone. Being lazy by nature, the idea of having to type is also extremely daunting. 😉 😈
Your UN Certificate of Contribution to Decreasing Global Warming is winging its way to you ... 😊
@Werner_E wrote:
But I am sure that these are quite nice and useful functions even though I am not sure if they conform to Luc's concept, where you could exchange the very same data type between the various modifiers like Bold(Italic(...)).
Not sure if we could use your Rot the same way like Bold(Rot(Italic(...))).
I guess it would be beneficial to add an angle of rotation (or a direction vector, again a 2x1 vector) as additional function argument to the function Monospaced(...) and its proportional pendent. Maybe also an alignment argument, a 2x1 vector for horizontal and vertical alignment (left, center, right).
To be honest, and with due apologies to Luc, I didn't do much more than glance at the simple examples of Monospaced and Proportional. Indeed, having now looked at the thread semi-properly, I still don't recall having seen it, let alone commenting on it.
Not only that, I hadn't even begun to address the problem of plotting the meterages before I realised that 150+ lines would make it a tad difficult to see the numbers. A quick glance at the format of the "strings" showed that it was amenable to a bit of rotation matrixing, cobbled together Rot, and that's as far as I took it.
Stuart
I've just had another look at Luc's worksheet (the ORIGIN-independent one). It might be as you say, just hide the rotation in there somewhere, perhaps even express the functions as matrix multiplications for translation and scaling as well.
I moved the scalar s and p handler to Proportional and Monospaced.
Stuart
Hi Werner
Can you tell me what do these mean? and are they written manually ? if so how to decide the numbers
@YA_10963798 wrote:
Hi Werner
Can you tell me what do these mean? and are they written manually ? if so how to decide the numbers
They're the coordinates for the points to link to draw each character. And, yes, AFAIA, Luc typed them in individually. Here's one example:
I'm glad it's not just lazy people like me running the show! 😱
Stuart
@YA_10963798 wrote:
Hi Werner
Can you tell me what do these mean? and are they written manually ? if so how to decide the numbers
As Stuart already explained what you show are the coordinates of the characters which Luc seemed to have typed in by hand back then.
left column are x-coordinates, right column y-coordinates.
points separated by NaN's are not connected.
The characters in ASCII.1 are exactly the ones shown in the string above, starting with the space, followed by the exclamation mark, etc.
Her for example the hashtag:
Provided you don't mind a lack of numbers and the vertical lines stretching across the full y-range of A, here's one possibility.
Adjusting the y-range to some fixed proportion and centreing on the line should be straightforward.
Alternatively, do you want the metreage markers to be normal to the line?
Stuart
Hah! Just seen that Werner's already made similar points.
Also, have you upgraded to Mathcad Prime 10 yet?
Also, have you upgraded to Mathcad Prime 10 yet?
I could open the file with P9, so the answer possibly is 'no, not yet'.
Note that in Stuarts function the argument 'intervals' means the length of an interval, the horizontal distance of two vertical lines.
In my function the argument "intvls" means the number of intervals (which better is chosen as an integer) and so intvls+1 vertical lines are drawn.
Hi Stuart,
I haven't yet ... when I opened prime 10 in my friend's Laptop it shows this error .... This is a premium feature to use upgrade to full license >> so I asked you and Werner in the other post...If this is only because he doesn't have license...otherwise it will work? nothing to do with the prime version.
Werner says it is because the license>> so , I'm planning to do it today
for this question>>do you want the metreage markers to be normal to the line?
No, all I need is to show that there is a line drawn each 50 m along the alignment >> it should look like my drawing here :