Solid из Curve

Автор Тема: Solid из Curve  (Прочитано 438 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн enotАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 102
  • Карма: 1
Solid из Curve
« : 09-11-2018, 15:00:08 »
Возможно ли выдавить Solid из Curve ?



Отмечено как Решение enot 09-11-2018, 15:05:50

Оффлайн Александр Игнатович

  • Administrator
  • ****
  • Сообщений: 322
  • Карма: 104
  • Skype: alexandr.ignatovich.itc
Re: Solid из Curve
« Ответ #1 : 09-11-2018, 15:02:08 »
Из кривой нельзя, из замкнутого контура можно. GeometryCreationUtilities.CreateExtrusionGeometry

Оффлайн enotАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 102
  • Карма: 1
Re: Solid из Curve
« Ответ #2 : 09-11-2018, 15:05:42 »
Face или Surface создать из линии тоже невозможно?

Оффлайн enotАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 102
  • Карма: 1
Re: Solid из Curve
« Ответ #3 : 09-11-2018, 15:12:21 »
Из кривой нельзя, из замкнутого контура можно
Линии в loopcurve замкнуты (форма линий образуют простой прямоугольник) и метод IsOpen дает False , но при выдавливании почему то выходит ошибка, что линии не замкнуты ... Отсюда вопрос , возможно ли создать из этих линий PolyCurve - я такого метода не нашел (т.е. объединить в одну) ?

Оффлайн Александр Игнатович

  • Administrator
  • ****
  • Сообщений: 322
  • Карма: 104
  • Skype: alexandr.ignatovich.itc
Re: Solid из Curve
« Ответ #4 : 09-11-2018, 15:35:50 »
Проверяйте, чтобы конец первой линии совпадал с началом второй, конец второй - с началом третьей и т.д., тогда проблем не будет

Оффлайн Александр Игнатович

  • Administrator
  • ****
  • Сообщений: 322
  • Карма: 104
  • Skype: alexandr.ignatovich.itc
Re: Solid из Curve
« Ответ #5 : 09-11-2018, 15:39:49 »
Пример (на Revit Python Shell):
Код - Python [Выбрать]
  1. from System.Collections.Generic import *
  2.  
  3. curves = List[Curve]()
  4.  
  5. curves.Add(Line.CreateBound(XYZ.Zero, XYZ.BasisX))
  6. curves.Add(Line.CreateBound(XYZ.BasisX, XYZ.BasisX + XYZ.BasisY))
  7. curves.Add(Line.CreateBound(XYZ.BasisX + XYZ.BasisY, XYZ.BasisY))
  8. curves.Add(Line.CreateBound(XYZ.BasisY, XYZ.Zero))
  9.  
  10. profiles = List[CurveLoop]()
  11. profiles.Add(CurveLoop.Create(curves))
  12.  
  13. solid = GeometryCreationUtilities.CreateExtrusionGeometry(profiles, XYZ.BasisZ, 1)
  14.  
  15. print solid.Volume
« Последнее редактирование: 09-11-2018, 17:57:13 от Александр Ривилис »