Mam kilka ramp, które chciałbym znać punkt początkowy i końcowy (aw przypadku wielu punktów początku/końca chciałbym wiedzieć, jak się łączą). Obecnie dostać je jakoJak znaleźć początek/koniec rampy w rewitalizacji, być może ze szkicami?
List<TransitionPoint> ret = new List<TransitionPoint>();
FilteredElementCollector collector = new FilteredElementCollector(doc);
ICollection<Element> ramps = collector.OfCategory(BuiltInCategory.OST_Ramps).ToElements();
foreach (var ramp in ramps)
{
//what goes here?
}
Rampy te zawierają następujące właściwości:
Type Comments
Ramp Max Slope (1/x)
Category
URL
Design Option
Type Name
Ramp Material
Function
Manufacturer
Family Name
Model
Keynote
Type Image
Text Size
Shape
Text Font
Maximum Incline Length
Assembly Description
Assembly Code
Type Mark
Category
Thickness
Cost
Description
Teraz, jeśli te, gdzie schody użyłbym ICollection stairs = collector.OfCategory(BuiltInCategory.OST_Stairs).OfClass(typeof(Stairs)).ToElements();
i wtedy mogę oddania obiektów do Schody jednak nie robi nie wydaje się być symulastem klasowym do Schodów, który pozwoliłby mi adresować: Stairs.GetStairsRuns().
Ktoś wie, jak uzyskać coś w stylu RampRun lub inaczej znajdź początek i koniec rampy?
Próbowałem również następujące sollution ale to nie działa albo
public static void MapRunsToRamps(Document doc)
{
var rule = ParameterFilterRuleFactory.CreateNotEqualsRule(new ElementId(BuiltInParameter.HOST_ID_PARAM), "null", true);
ElementParameterFilter filter = new ElementParameterFilter(rule);
FilteredElementCollector collector = new FilteredElementCollector(doc);
List<Element> rampsRuns = collector.WherePasses(filter).ToElements().ToList<Element>();
foreach (Element e in rampsRuns)
{
var hostpara = e.get_Parameter(BuiltInParameter.HOST_ID_PARAM);
if (hostpara != null)
{
var host = doc.GetElement(new ElementId(hostpara.AsInteger()));
if (host.Category.Equals(BuiltInCategory.OST_Ramps))
{
//breakpoint that is never activated
}
}
}
}
ten znajdzie mnóstwo obiektów prostu żaden z rampą jako gospodarz.
Oto przykład rampy i lokalizacji, którą próbuję znaleźć oznaczone czerwonymi strzałkami.
ten https://forums.autodesk.com/t5/revit-api/how-do-we-get-the-x-y-z-cordinates-for-stairs-ramps/td-p/2575349 sugeruje, że możemy użyć lokalizacji locationcurve, w jaki sposób?
edit: Nie wydają się być szkice, na podstawie których moglibyśmy znaleźć rampy, pytanie brzmi, czy mam szkic powiedzieć z
var rampCategoryfilter = new ElementCategoryFilter(BuiltInCategory.OST_StairsSketchRunLines);
var rampsRuns = new FilteredElementCollector(doc).WherePasses(rampCategoryfilter);
wtedy mogę rzeczywiście dostać lokalizacje ale co Nie mam też rampy, do której również należy, żadnego pomysłu, jak ją znaleźć?
Z której wersji Revit korzystasz? –
Pracuję nad wersją 2015-2016 i 2017 – Thijser
Spójrz na to: https://knowledge.autodesk.com/de/support/revit-products/learn-explore/caas/CloudHelp/cloudhelp/2014/DEU/ Revit/files/GUID-D5F9820D-B548-4600-8739-8029AD3B3B8B-htm.html (sprawdź metodę GetStairLandings) –