使用Grasshopper:如果我将domain传递给Python组件,则python将其视为一个时间间隔。我可以对其进行操作,如下所示:
print x
x.Grow(x[0]-y)
x.Grow(x[1]+y)
print x
print type(x)
print dir(x)
哪些印刷品:
20.3596657850938,87.5596657850938
19.3596657850938,88.5596657850938
<type 'Interval'>
['CompareTo', 'EpsilonEquals', 'Equals', 'FromIntersection', 'FromUnion', 'GetHashCode', 'GetObjectData', 'GetType', 'Grow', 'IncludesInterval', 'IncludesParameter', 'IsDecreasing', 'IsIncreasing', 'IsSingleton', 'IsValid', 'Item', 'Length', 'MakeIncreasing', 'Max', 'MemberwiseClone', 'Mid', 'Min', 'NormalizedIntervalAt', 'NormalizedParameterAt', 'ParameterAt', 'ParameterIntervalAt', 'ReferenceEquals', 'Reverse', 'Swap', 'T0', 'T1', 'ToString', 'Unset', '__add__', '__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__radd__', '__reduce__', '__reduce_ex__', '__repr__', '__rsub__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__sub__', '__subclasshook__']
但是,我不知道如何构造一个新的。它们似乎非常有用,我想更多地使用它们。
我尝试导入interval模块(Runtime error (ImportException): No module named interval
)。我尝试将列表强制转换为时间间隔:Interval([1,2])
→Runtime error (UnboundNameException): name 'Interval' is not defined
。
我不知道间隔是属于Python,Iron Python还是蚱hopper。
如何设置新的间隔?
答案 0 :(得分:1)
在一些帮助下,我最终得到了
print "x is sent in as a domain from the input to this function"
print x, type(x)
print x.GetType().FullName
print x.GetType().Assembly.Location
print "\nThere seem to be two types of intervals, Rhino and grasshopper. Now sure why you'd use a Grasshopper interval, but here it is anyway:"
import Grasshopper as gh
y = gh.Kernel.Types.GH_Interval()
print y, type(y)
print y.GetType().FullName
print y.GetType().Assembly.Location
print "\nTo make a Rhino interval get it from the Rhino.Geometry module"
import Rhino.Geometry.Interval as interval
z = interval(0,1)
print z, type(z)
print z.GetType().FullName
print z.GetType().Assembly.Location
print "\nz is the same as x:", z == x
给出:
x is sent in as a domain from the input to this function
0,1 <type 'Interval'>
Rhino.Geometry.Interval
C:\Program Files\Rhinoceros 5 (64-bit)\System\RhinoCommon.dll
There seem to be two types of intervals, Rhino and grasshopper. Now sure why you'd use a Grasshopper interval, but here it is anyway:
0.0 To 0.0 <type 'GH_Interval'>
Grasshopper.Kernel.Types.GH_Interval
C:\Program Files\Common Files\McNeel\Rhinoceros\5.0\Plug-ins\Grasshopper (b45a29b1-4343-4035-989e-044e8580d9cf)\0.9.76.0\Grasshopper.dll
To make a Rhino interval get it from the Rhino.Geometry module
0,1 <type 'Interval'>
Rhino.Geometry.Interval
C:\Program Files\Rhinoceros 5 (64-bit)\System\RhinoCommon.dll
z is the same as x: True
如果我们解压缩该文件:IronPython的type()
函数实际上返回一个包装.NET类型的PythonType。 .GetType()
直接获取.NET类型。因此type(x)
给出的<type 'Interval'>
并不是很有帮助,而x.GetType().FullName
给出的Rhino.Geometry.Interval
则告诉我如何实现它。
Rhino docs here对此进行了介绍,它具有许多有用的属性和方法。