2017-07-10 2 views
0

Je suis aux prises avec ce problème depuis un bon bout de temps. Comme le dit le titre, je souhaite dimensionner d'un côté d'un mur, des deux côtés des ouvertures (ouvertures de porte), puis terminer à l'autre extrémité du mur (verticalement et horizontalement). Je tiens également à dimensionner à toutes les familles hébergées dans le mur, mais j'ai été en mesure d'accomplir cela en utilisant la classe d'aide magique de ScottWilson. Trouvé ici: http://thebuildingcoder.typepad.com/blog/2016/04/stable-reference-string-magic-voodoo.htmlCréer Dimensions du bord du mur, aux côtés des ouvertures, à l'autre bord du mur

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(); 
     } 

Le problème réside dans la détermination des références stables appropriées aux surfaces murales. Je suis capable de trouver tous les visages sur un mur, mais cela me donne plus de 100 visages à trier.

Si quelqu'un peut m'aider ce serait grandement apprécié! Remarque: La méthode la plus proche de gotten consiste à utiliser une trace de rayon dans mon panneau, puis à utiliser une méthode d'intersection de référence pour déterminer les références. Mais je suis vraiment aux prises avec la mise en œuvre: http://thebuildingcoder.typepad.com/blog/2015/12/retrieving-wall-openings-and-sorting-points.html

Répondre