Создайте размеры от края стены, до боковых сторон отверстий, до другого края стены
Я боролся с этой проблемой время от времени в течение большей части года. Как следует из названия, я хочу провести измерение от одной стороны стены до обеих сторон проемов (дверных проемов), а затем заканчиваться на другом конце стены (вертикально и горизонтально). Я также хотел бы измерить все семьи, размещенные в стене, но я смог сделать это, используя класс волшебного помощника Скотта Уилсона. Найдено здесь: http://thebuildingcoder.typepad.com/blog/2016/04/stable-reference-string-magic-voodoo.html
foreach (ElementId ele in selSet) {
FamilyInstance fi = doc.GetElement(ele) as FamilyInstance;
Reference reference = ScottWilsonVoodooMagic.GetSpecialFamilyReference(fi,ScottWilsonVoodooMagic.SpecialReferenceType.CenterLR,doc);
refs.Append(reference);
pts[i] = ( fi.Location as LocationPoint ).Point;
i++;
}
XYZ offset = new XYZ(0,0,4);
Line line = Line.CreateBound( pts[0]+offset, pts[selSet.Count - 1]+offset );
using( Transaction t = new Transaction( doc ) )
{
t.Start( "dimension embeds" );
Dimension dim = doc.Create.NewDimension(doc.ActiveView, line, refs );
t.Commit();
}
Проблема заключается в определении соответствующих устойчивых ссылок на грани стен. Я могу найти все лица на стене, но это дает мне более 100 лиц, чтобы разобраться.
Если кто-нибудь может помочь мне, это будет очень цениться!
Примечание: самое близкое из полученных - использование трассировки лучей через мою панель, затем использование метода пересечения ссылок для определения ссылок. Но я действительно борюсь с реализацией: http://thebuildingcoder.typepad.com/blog/2015/12/retrieving-wall-openings-and-sorting-points.html
1 ответ
Эти два сообщения должны предоставить более чем достаточно для решения всех ваших проблем:
По сути, вам нужно получить ссылки на грани или ребра, к которым вы хотите прикрепить размеры. Эти ссылки могут быть получены несколькими способами. Два общих и простых подхода:
- Получить геометрию элемента, используя опцию
ComputeReferences
установите в true и извлеките требуемое лицо. - Снимите луч через модель, чтобы определить необходимый элемент и его лицо, используя
2017 ReferenceIntersector Class
,