Как мне ссылаться на сетки в Rhino Python для операции логической разности?Python

Программы на Python
Anonymous
Как мне ссылаться на сетки в Rhino Python для операции логической разности?

Сообщение Anonymous »

У меня есть 2 сетки, и я могу вручную выполнить логическую разницу для 2 в графическом интерфейсе, что даст желаемый результат. Теперь мне нравится выполнять ту же самую операцию с теми же данными в скрипте Python:

Код: Выделить всё

def BooleanDifference():
filter = Rhino.DocObjects.ObjectType.AnyObject

rc, mesh1 = Rhino.Input.RhinoGet.GetOneObject("Select mesh to subtract from", False, filter)
if rc != Rhino.Commands.Result.Success: return rc
if not mesh1: return Rhino.Commands.Result.Failure

rc, mesh2 = Rhino.Input.RhinoGet.GetOneObject("Select mesh to subtract", False, filter)
if rc != Rhino.Commands.Result.Success: return rc
if not mesh2: return Rhino.Commands.Result.Failure

tolerance = scriptcontext.doc.ModelAbsoluteTolerance
rc, dub = Rhino.Geometry.Mesh.CreateBooleanDifference(mesh1, mesh2, tolerance)
if rc != Rhino.Commands.Result.Success: return rc
if not dub: return Rhino.Commands.Result.Failure

scriptcontext.doc.Views.Redraw()
return Rhino.Commands.Result.Success
Функция CreateBooleanDifference отказывается выполняться, предположительно потому, что мне не удалось правильно захватить или привести тип ссылки на объект сетки в IEnumerables, прежде чем передать их в функцию различия (NB: выбранные объекты в первую очередь являются допустимыми твердотельными сетками).
Сообщение об ошибке:

Код: Выделить всё

TypeError: Rhino.DocObjects.ObjRef value cannot be converted to System.Collections.Generic.IEnumerable`1[Rhino.Geometry.Mesh] in method Rhino.Geometry.Mesh[] CreateBooleanDifference(System.Collections.Generic.IEnumerable`1[Rhino.Geometry.Mesh], System.Collections.Generic.IEnumerable`1[Rhino.Geometry.Mesh], Rhino.Geometry.MeshBooleanOptions, Rhino.Commands.Result ByRef)
И как мне это сделать?

Подробнее здесь: https://stackoverflow.com/questions/786 ... -operation

Вернуться в «Python»