Длина и ширина пола

Автор Тема: Длина и ширина пола  (Прочитано 1792 раз)

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

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

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Длина и ширина пола
« : 26-04-2017, 13:41:46 »
Добрый день!
Как получить длину и ширину пола?
Пытаюсь получить через Curve:
Код - C# [Выбрать]
  1. ICollection<ElementId> floorIds;
  2. using (Transaction tr = new Transaction(doc, "Temporary delete")) {
  3.     tr.Start();
  4.     floorIds = doc.Delete(el.Id);
  5.     tr.RollBack();
  6. }
  7. List<ModelLine> mLines = new List<ModelLine>();
  8. foreach (ElementId id in floorIds) {
  9.     Element mLine = doc.GetElement(id) as ModelLine;
  10.     if (null != mLine) {
  11.         LocationCurve lCurve = mLine.Location as LocationCurve;
  12.         double len = lCurve.Curve.Length;
  13.     }
  14. }
  15.  

Но получаю неверные значения.
Есть ли альтернативный вариант?

Спасибо.

Отмечено как Решение shss 26-04-2017, 15:29:23

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

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Re: Длина и ширина пола
« Ответ #1 : 26-04-2017, 15:29:17 »
Реализовал, через поиск поверхностей:
Код - C# [Выбрать]
  1. Options opt = new Options();
  2. opt.ComputeReferences = true;
  3. GeometryElement geoElement = (el as Floor).get_Geometry(opt);
  4. foreach (GeometryObject obj in geoElement) {
  5.     Solid solid = obj as Solid;
  6.     if (null != solid) {
  7.         foreach (Face face in solid.Faces) {
  8.             PlanarFace pf = face as PlanarFace;
  9.             if (null != pf) {
  10.                 if (IsVertical(pf.FaceNormal, _tolerance) && pf.FaceNormal.Z < 0) {
  11.                      foreach (Edge edge in pf.EdgeLoops) {
  12.                          foreach (EdgeArray edgeArray in pf.EdgeLoops) {
  13.                              foreach (Edge edge in edgeArray) {
  14.                                 //edge.ApproximateLength; - необходимая длина поверхности
  15.                              }
  16.                          }
  17.                      }
  18.                 }
  19.            }
  20.       }
  21. }
  22.  
« Последнее редактирование: 26-04-2017, 20:05:35 от shss »