ребят помогите. проблема следующая: после того как прочертил линии методом add_line внутри группы, не получается методом add_curve внутри группы объединить в одну полилинию. Однако если группу разделить методом explode и после добавить полилинию то она становится полилинией как и надо. В чем проблема уже не знаю, все перепробывал. Help
так работает, а если я создам много поверхностей через цикл, то add_curve уже не работает е объединяется в полилинию, отладчик ошибок в коде не видит. уже и не знаю в какую сторону думать могу вот привести код:
Код:
s = 0 while s < q i = 0 while i <= q/6 entities.add_face(mass[s][0][i], mass[s+1][0][i], mass[s+1][0][i+1]) entities.add_face(mass[s][0][i], mass[s][0][i+1], mass[s+1][0][i+1]) if (i > 0) edge = entities.add_line(mass[s][0][i], mass[s+1][0][i]) #Нижняя горизонтальная edge.soft = edge.smooth = true else mass_spiral_1.push(mass[s][0][i]) end edge = entities.add_line(mass[s][0][i], mass[s+1][0][i+1]) #Наискосок edge.soft = edge.smooth = true edge = entities.add_line(mass[s][0][i+1], mass[s+1][0][i+1]) #Верхняя горизонтальная if (i < q/6) edge.soft = edge.smooth = true end if (s > 0) edge = entities.add_line(mass[s][0][i], mass[s][0][i+1]) #Левая вертикальная edge.soft = edge.smooth = true else mass_spiral_5.push(mass[s][0][i]) end if (s < q - 1) edge = entities.add_line(mass[s+1][0][i], mass[s+1][0][i+1]) #Правая вертикальная edge.soft = edge.smooth = true else mass_spiral_6.push(mass[s+1][0][i]) end i += 1 end mass_spiral_2.push(mass[s][0][i]) mass_spiral_3.push(mass[s][2][0]) entities.add_face(mass[s][0][i], mass[s+1][0][i], mass[s+1][2][0]) entities.add_face(mass[s][0][i], mass[s][2][0], mass[s+1][2][0]) edge = entities.add_line(mass[s][0][i], mass[s+1][2][0]) #Наискосок edge.soft = edge.smooth = true edge = entities.add_line(mass[s][0][i], mass[s][2][0]) #Левая вертикальная if (s > 0) edge.soft = edge.smooth = true end edge = entities.add_line(mass[s+1][0][i], mass[s+1][2][0]) #Правая вертикальная if (s < q - 1) edge.soft = edge.smooth = true end i = 0 while i <= q/6 entities.add_face(mass[s][2][i], mass[s+1][2][i], mass[s+1][2][i+1]) entities.add_face(mass[s][2][i+1], mass[s][2][i], mass[s+1][2][i+1]) edge = entities.add_line(mass[s][2][i], mass[s+1][2][i]) #Нижняя горизонтальная if (i > 0) edge.soft = edge.smooth = true end edge = entities.add_line(mass[s][2][i], mass[s+1][2][i+1]) #Наискосок edge.soft = edge.smooth = true if (i < q/6) edge = entities.add_line(mass[s][2][i+1], mass[s+1][2][i+1]) #Верхняя горизонтальная edge.soft = edge.smooth = true else mass_spiral_4.push(mass[s][2][i+1]) end edge = entities.add_line(mass[s][2][i], mass[s][2][i+1]) #Левая вертикальная if (s > 0) edge.soft = edge.smooth = true else mass_spiral_7.push(mass[s][2][i]) end if (s < q - 1) edge = entities.add_line(mass[s+1][2][i], mass[s+1][2][i+1]) #Правая вертикальная edge.soft = edge.smooth = true else mass_spiral_8.push(mass[s+1][2][i]) end i += 1 end i = 0 s += 1 Sketchup.status_text = "Построено поверхностей (" + (s*(q*2.to_f/3 + 3.to_f*2)).to_i.to_s + "/" + num_face.to_i.to_s + ") " + (s*(q*2.to_f/3 + 3.to_f*2)*100/num_face).to_i.to_s + "%" end
Это конечно ничего не даст, однако если в последних 8 add_curve'ах entities заменить на Sketchup.active_model.entities, и перед этим разделить группу методом explode, то нужные мне линии объединяютя. Где косяк не знаю уже все перепробывал((((((
Это конечно ничего не даст, однако если в последних 8 add_curve'ах entities заменить на Sketchup.active_model.entities, и перед этим разделить группу методом explode, то нужные мне линии объединяютя. Где косяк не знаю уже все перепробывал((((((
ну попробуй для начала так
entities = Sketchup.active_model.entities group = entities.add_group ents = group.entities
ents.add_line(mass[s][0][i], mass[s+1][0][i+1]
И потом что то много циклов, думаю их стоит как то закончит
entities = Sketchup.active_model.entities group = entities.add_group ents = group.entities такое вначале естественно есть, model.commit_operation не помогает, когда внутри группы, тогда почему-то не объединяется, что за печаль такая(
Имеется две группы надо из одной вычесть другую. Типа аналог interset faces в меню правой кноки мыши и последующим удалении лишних поверхностей. Как это сделать из ruby/ Я новичок сильно не пинайте)
Это довольно сложно сделать. Есть скрипт BoolTools- он это именно и делает - но делает это не совсем корректно. То есть средствами руби этого сложно добиться.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения