 # Distance between two points over X and Y axes

Hi everybody, first timer poster here!

I am looking for a script to help me improve a tedious task at my work.

What I am currently doing is measuring the distance between a base point and an areacentroid point over the X and Y axes (In top view) using Dims in Rhino, then manually inputting those values into Excel.

What I would like the script to do is let me input a number and store it in an array as (1)

Then, allow me to select a point to serve as basepoint and then another point as target and store the distance over X axis as (2) and Y axis as (0)

The desired outcome of the script is: I insert an integer like 5, the script measures X = 350 and Y = 500. The array is 500,5,350. Then it splits those values up and adds them to my clipboard with vbTab inbetween so i can paste those values into excel.

I have been reading into the rhinoscript guide on developer.rhino3d.com but I am a total rookie and I can’t figure this problem out… If anybody could help me out or point me in the right direction as to how I can measure the distance between two points over the axes like that it would help me out a ton.

``````import rhinoscriptsyntax as rs
import csv
def CSVwrite():
outputs = []
while True:
n = rs.GetInteger("Number")
if n is None: break
b = rs.GetPoint("Base Point")
if b is None: break
t = rs.GetPoint("Target Point")
if t is None: break
outputs.append([t-b, n, t-b])
if len(outputs) == 0: return
filter = "CSV File (*.csv)|*.csv|*.txt|All Files (*.*)|*.*||"
filename = rs.SaveFileName("Save as", filter)
if(filename is None): return
with open(filename, "wb") as csvfile:
csvwriter = csv.writer(csvfile,  delimiter=',')
csvwriter.writerows(outputs)
print "Outputs written sucessfully to file"
if( __name__ == "__main__" ):
CSVwrite()
``````

CSVWrite.py (773 Bytes)

@Mahdiyar, should’t this be absolute values eg. `abs(t - b)` ?

Below copies to clipboard using tab seperator:

``````import rhinoscriptsyntax as rs

def DoSomething():

number = rs.GetInteger("Number")
if number is None: return

pt0 = rs.GetPoint("Base point")
if not pt0: return

pt1 = rs.GetPoint("Target point")
if not pt1: return

dx = abs(pt0.X - pt1.X)
dy = abs(pt0.Y - pt1.Y)

text = "{0:.5f}\t{1}\t{2:.5f}".format(dy, number, dx)
print text

rs.ClipboardText(text)

DoSomething()
``````

_
c.

This solved the problem I was having perfectly, thanks so much!! Python is wild