Как построить интервал в Python в Grasshopper - PullRequest
2 голосов
/ 24 мая 2019

Использование Grasshopper : Если я передам домен в компонент Python, python увидит его как Interval. Я могу сделать операцию на нем, как показано ниже:

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]) & rarr; Runtime error (UnboundNameException): name 'Interval' is not defined.

Я не знаю, принадлежит ли интервал к Python, Iron Python или кузнечику.

Как мне сделать новый интервал?

1 Ответ

1 голос
/ 27 мая 2019

С некоторой помощью я получил:

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

Если мы распакуем это: функция type() IronPython фактически возвращает PythonType, обертывающий.Чистый тип..GetType() получает тип .NET напрямую.Так что type(x) дает <type 'Interval'>, что не очень полезно, тогда как x.GetType().FullName дает Rhino.Geometry.Interval, который говорит мне точное, как к нему добраться.

Это описано в документах Rhino здесь, и имеет множество полезных свойств и методов.

...