2016-02-08 9 views
5

हैलो मैं निम्नलिखित कोड है:Gettings stairsruns और इस तरह की जानकारी युक्त तत्वों से सीढ़ियों के बारे में जानकारी

public static void HandleStairs(Document doc) 
     List<TransitionPoint> ret = new List<TransitionPoint>(); 
     FilteredElementCollector collector = new FilteredElementCollector(doc); 
     ICollection<Element> stairs = collector.OfCategory(BuiltInCategory.OST_Stairs).ToElements(); 
      foreach (var stair in stairs) 
      { 
       var st= stair as Stairs; 
       if(st!=null) 
       { 
         %code that is never executed 
       } 
      } 

     return ret; 
    } 

अब समस्या कोई फर्क नहीं पड़ता यह प्रतीत होता है क्या सीढ़ियों हमेशा अशक्त कर रहे हैं, मैंने सुना है कि है कि एक और प्रोग्रामर था एक ही समस्या है।

सीढ़ियों के चर को स्टैरिलिक गुणों के साथ कई वस्तुएं मिलती हैं (सीढ़ियों का नाम दिया जा रहा है, risers और प्लेटफॉर्म ext।) लेकिन वास्तव में एक सीढ़ी पर कास्ट स्वीकार करने के लिए प्रकट नहीं होता है। किसी को पता है कि वास्तव में सीढ़ियों में इस कास्ट करने के लिए

ध्यान दें कि सीढ़ियों निम्नलिखित गुणों के साथ एक तत्व है (एक दस्तावेज़ में या अन्यथा प्राप्त सब सीढ़ियों?):

Riser to Tread Connection 
Monolithic Material 
Apply Nosing Profile 
Stringer Material 
Text Size 
Begin with Riser 
Stringer Carriage Height 
URL 
Open Stringer Offset 
Right Stringer 
Riser Type 
Cost 
Left Stringer 
Underside of Winder 
Stringer Height 
Nosing Profile 
Manufacturer 
Middle Stringers 
Keynote 
Riser Material 
Minimum Tread Depth 
Text Font 
Monolithic Stairs 
Maximum Riser Height 
Landing Carriage Height 
Break Symbol in Plan 
Landing Overlap 
Extend Below Base 
Nosing Length 
Assembly Description 
End with Riser 
Description 
Function 
Type Image 
Type Comments 
Stringer Thickness 
Assembly Code 
Calculation Rules 
Trim Stringers at Top 
Model 
Tread Thickness 
Tread Material 
Riser Thickness 

मैं ज्यादातर पाने के लिए सीढ़ी वस्तुओं की जरूरत है रन सीढ़ियों के साथ assosiated रन, या वास्तव में मुझे रनों का पालन करने के पथ की जरूरत है।

var tesselated = new List<XYZ>(); 
var stairPath = run.GetStairsPath(); 
    foreach (Curve curve in stairPath) 
    { 
     tesselated.AddRange(curve.Tessellate()); 
    } 

क्योंकि मैं पदों किसी भी सीढ़ियों के निर्माण की ज्यामिति से जुड़ी लिए XYZ स्थानों की जरूरत है:

यह उम्मीद है कि निम्न करने के लिए इस्तेमाल किया जा सकता।

+0

सीढ़ियों क्या है ', क्या यह जो भी 'doc.GetElement()' रिटर्न से प्राप्त होता है? – CodingGorilla

+0

सीढ़ियां एक ऐसी कक्षा है जो रिवाइट एपीआई के भीतर से आने वाले तत्वों से प्राप्त होती है। getElement (सीढ़ी) सीढ़ियों के ऑब्जेक्ट के गुणों के साथ एक तत्व देता है। – Thijser

उत्तर

0

as ऑपरेटर रिटर्न null अगर डाली विफल रहता है, तो जो कुछ भी doc.GetElement(stairId) रिटर्न प्रकार Stairs या उसके उप-प्रकारों में से एक का नहीं है।

मैं doc अनुमान लगा रहा हूँ 'भंडारण' दस्तावेज़ किसी तरह तो आप शायद Stairs का एक नया उदाहरण बना सकते हैं और जानकारी आप जो कुछ भी doc.GetElement(stairId) रिटर्न से प्राप्त के साथ इसे भरने की जरूरत है।

+0

मुझे लगता है कि मेरा मुख्य प्रश्न यह है कि मैं सीढ़ियों में सीढ़ियों का वर्णन करने वाला तत्व कैसे बना सकता हूं। – Thijser

4

सबसे पहले, आपको बिल्कुल यह पता लगाना होगा कि आप किस प्रकार के तत्व के बारे में बात कर रहे हैं। अन्यथा, यह चर्चा पूरी तरह से व्यर्थ है।

https://github.com/jeremytammik/RevitLookup

आप नहीं जानते कि क्या RevitLookup है, तो आप पूरी तरह से सब कुछ आप Revit के साथ कर रहे हैं बंद कर देना चाहिए: एक बहुत ही आसान तरीका है कि निर्धारित करने के लिए RevitLookup का उपयोग कर तत्व 'सीढ़ी की तरह' जा सकता है अभी एपीआई और शुरू कर दिया सामग्री हो रही Revit एपीआई के माध्यम से काम कर रहा है, विशेष रूप से स्थापित करने और RevitLookup उपयोग करने के लिए शुरू करने से ताजा शुरू:

http://thebuildingcoder.typepad.com/blog/about-the-author.html#2

फ़िल्टर्ड तत्व कलेक्टर आपको बताएंगे कि 'सीढ़ियाँ' श्रेणी के सभी तत्वों को प्राप्त करता है। यह 'सीढ़ी जैसी वस्तु' डायरेक्टशिप हो सकती है, इस मामले में आप इसे 'सीढ़ियों' श्रेणी असाइन कर सकते हैं। फिर इसे उपरोक्त आपके फ़िल्टर किए गए तत्व कलेक्टर द्वारा पुनर्प्राप्त किया जाएगा।

:

यहाँ एक 'सीढ़ी की तरह' extruded छत है, जो है और हमेशा 'ऐसे में' श्रेणी के साथ एक छत बना रहेगा, और इस प्रकार आपकी फ़िल्टर तत्व कलेक्टर द्वारा कभी नहीं पहचाना जा सकता है का एक उदाहरण है http://thebuildingcoder.typepad.com/blog/2014/09/events-again-and-creating-an-extrusion-roof.html#7

भ्रमित उत्तर के लिए खेद है, लेकिन मुझे कहना होगा कि आपका प्रश्न भी बहुत भ्रमित है। पहले कभी ऐसा कुछ नहीं सुना। आशा है कि ये आपकी मदद करेगा।

+0

मैंने अपने प्रश्न को जितना संभव हो उतना अपडेट करने की कोशिश की, मेरे पास उपर्युक्त गुणों के साथ एक तत्व है (या मैं अन्य गुणों के लिए पूछ सकता हूं) और यह कहना चाहूंगा कि इसमें क्या चल रहा है, सीढ़ियों के वर्ग के पास एक तरीका है वह रन जो मैं उपयोग करना चाहता हूं। – Thijser

1

जो आपने किया है वह उचित दिखता है, हालांकि अन्य लोगों ने बताया है, जाहिर है कि आप किसी तत्व को वापस ले रहे हैं जो सीढ़ी तत्व नहीं है।

मेरा सुझाव है - क्रम में सुनिश्चित करें कि आप आप क्या चाहते हैं वापस पाने के बनाने के लिए, कि आप का उपयोग करें:

.OfClass (typeof (सीढ़ियाँ))

FilteredElementCollector साथ

। इसके साथ, आप शायद WhereElementIsNotElementType() और OfCategory() विधियों को छोड़ सकते हैं, क्योंकि यह उपरोक्त कथन में निहित है।

इस तरह - जो कुछ भी आपको वापस मिलता है उसे कास्ट-सक्षम होना चाहिए।

संबंधित मुद्दे