Hi,
Today I tried to repeat a python script by Jose Sanchez on Vimeo https://vimeo.com/29321808 and I found a bug in rhino script. The script actually works with any numbers except 50. It is about a tangent line distribution on a curve. It was fine with 10,20,40,49,51,150 but not with 50. Is it possible?
The error message was the following:
Message:
Could not convert None to a Vector3d
Traceback:
** line 398, in coerce3dvector, “C:\Users\An\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rhinoscript\utility.py”**
** line 467, in VectorUnitize, “C:\Users\An\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\settings\lib\rhinoscript\pointvector.py”**
** line 20, in tanPoints, “C:\Users\An\AppData\Roaming\McNeel\Rhinoceros\5.0\scripts\Rhino Python Tutorial 11 - TangentsCrv_Parameters.py”**
** line 31, in , “C:\Users\An\AppData\Roaming\McNeel\Rhinoceros\5.0\scripts\Rhino Python Tutorial 11 - TangentsCrv_Parameters.py”**
import rhinoscriptsyntax as rs
class TanLines:
def __init__(self, _curve, _numOfDivs):
self.curve = _curve
self.numOfDivs = _numOfDivs
def tanPoints(self):
# print("check")
doms = rs.CurveDomain(self.curve)
# print (doms)
minDom = doms[0]
maxDom = doms[1]
for i in range (0,self.numOfDivs +1):
param = (maxDom - minDom)/self.numOfDivs * i
tan = rs.CurveTangent(self.curve, param) #3D Vector
tan = rs.VectorUnitize(tan)
tan = rs.VectorScale(tan, 3)
pt = rs.EvaluateCurve(self.curve, param)
rs.AddPoint(pt)
tanPt = rs.VectorAdd(tan, pt)
rs.AddLine(pt,tanPt)
curve = rs.GetObject("pick curve", 4)
obj01 = TanLines(curve,50)
obj01.tanPoints()