2017-03-06 49 views
0

我想確定所有通用型號,即面板和零件。我選擇了一種方法來實現這一點。但我能看到的唯一問題是,在修復牆時,它不會覆蓋維度。部件或一般型號附加的尺寸Revit

私有靜態無效CreateDimension(XYZ開始,XYZ結束,觀景,字符串文本,XYZ目錄,雙膠紙) { 嘗試 {如果(!start.IsEqual(完)){ 使用 (交易t =新的交易(AppMain.Settings.ActiveDoc,「添加維度」)) t.Start();

    Curve c = Line.CreateBound(start, end); 

        XYZ normal = dir.Multiply(offset); 

        Line tranformed = c.CreateTransformed(Transform.CreateTranslation(normal)) as Line; 

        if (null != tranformed) 
        { 
         XYZ ai = start; 
         XYZ ao = tranformed.GetEndPoint(0); 
         Line lineA = Line.CreateBound(ai, ao); 
         DetailCurve modelcurveA = AppMain.Settings.ActiveDoc.Create.NewDetailCurve(view, lineA); 

         XYZ bi = end; 
         XYZ bo = tranformed.GetEndPoint(1); 
         Line lineB = Autodesk.Revit.DB.Line.CreateBound(bi, bo); 
         DetailCurve modelcurveB = AppMain.Settings.ActiveDoc.Create.NewDetailCurve(view, lineB); 

         ReferenceArray ra = new ReferenceArray(); 
         ra.Append(modelcurveA.GeometryCurve.Reference); 
         ra.Append(modelcurveB.GeometryCurve.Reference); 

         Line lineAB = Line.CreateBound(ao, bo); 
         Dimension dimension = AppMain.Settings.ActiveDoc.Create.NewDimension(view, lineAB, ra); 
         dimension.Below = text; 
        } 


        t.Commit(); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      AppMain.Settings.LogErrorMessage(ex.Message); 
     } 
    } 

有沒有其他方法可以做到這一點?

感謝, 羅布

回答

0

你找到一種方法,通過用戶界面手動解決這個問題?在處理Revit API任務時,這通常是最好的開始。如果你可以通過用戶界面來解決問題,那麼這個機會很好,它也可以被自動化。如果找不到UI解決方案,自動化也是不可能的。

我會通過執行手動修改來分析Revit數據庫中所涉及元素及其參數在Revit數據庫中的確切區別。一旦您準確發現了手動UI交互所做的更改,您可以通過API以編程方式複製相同的更改。下面詳細介紹如何解決Revit API編程任務:

http://thebuildingcoder.typepad.com/blog/2017/01/virtues-of-reproduction-research-mep-settings-ontology.html#3