Пишу скрипт который объединяет все вершины объекта имеющие одинаковые координат.
Пока есть только это, выдаёт ошибку.
function colapse obj=
(
For index = 1 to obj.NumVerts do
(
For index2 = 1 to obj.NumVerts do
(
if obj.verts[Index] == obj.verts[Index2] then
(
obj.EditablePoly.collapse index index2
)
Выдели все вершины объекта (EditablePoly) и на панели Modify в свитке Edit Vertices нажми кнопку Weld (установи Weld Threshold = 0.001) Или тебя не устраивает как работает Weld?
Если использовать твой алгоритм, тогда попробуй так:Вариант2
function colapse obj=
(
if(classof obj==Editable_Poly)then
(
For index = 1 to obj.NumVerts do
(
For index2 = 1 to obj.NumVerts do
(
if(index<=obj.NumVerts and index2<=obj.NumVerts)then
(
if length(obj.verts[index].pos-obj.verts[index2].pos)<=0.001 then
(
polyOp.collapseVerts obj #{index, index2}
)
)
)
)
)
)
Во время соединения вершин в цикле с помощью collapseVerts количество вершин объекта уменьшается и номера вершин меняются автоматически. Поэтому с одного раза не удается соединить все вершины. Для варианта2 нужно использовать функцию colapse несколько раз. Это можно сделать с помощью While и проверять произошло ли соединения или нет. Вариант2 является медленным и неэффективным из-за большого количества операций.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
Ofigelof
Пока есть только это, выдаёт ошибку.
igorznag
Ofigelof
igorznag
function colapse obj= ( if(classof obj==Editable_Poly)then ( obj.weldThreshold=0.001 polyOp.weldVertsByThreshold obj #{1..obj.numVerts} ) )Если использовать твой алгоритм, тогда попробуй так:Вариант2function colapse obj= ( if(classof obj==Editable_Poly)then ( For index = 1 to obj.NumVerts do ( For index2 = 1 to obj.NumVerts do ( if(index<=obj.NumVerts and index2<=obj.NumVerts)then ( if length(obj.verts[index].pos-obj.verts[index2].pos)<=0.001 then ( polyOp.collapseVerts obj #{index, index2} ) ) ) ) ) )Во время соединения вершин в цикле с помощью collapseVerts количество вершин объекта уменьшается и номера вершин меняются автоматически. Поэтому с одного раза не удается соединить все вершины. Для варианта2 нужно использовать функцию colapse несколько раз. Это можно сделать с помощью While и проверять произошло ли соединения или нет. Вариант2 является медленным и неэффективным из-за большого количества операций.