revit二次開發中怎樣建nurbspline曲線形式的鋼筋
revit二次開發中nurbspline曲線的表現形式實際上是一系列的直線組成的。
由於revit只支援直線或者圓曲線的鋼筋變成鋼筋。所以不能將nurbspline曲線轉成鋼筋,所以可以先將nurbspline模型線轉連續的直線,然後再轉成鋼筋即可。
其中,nurbspline模型線線轉成連續的直線的程式碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using Autodesk.Revit.ApplicationServices;
namespace nurb曲線轉連續的直線
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
[Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
public class Class1 : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
Document revitDoc = commandData.Application.ActiveUIDocument.Document; //取得文件
Application revitApp = commandData.Application.Application; //取得應用程式
UIDocument uiDoc = commandData.Application.ActiveUIDocument; //取得當前活動文件
Selection sel = uiDoc.Selection;
Reference ref1 = sel.PickObject(ObjectType.Element, "選擇nurb模型線");
Element elem = revitDoc.GetElement(ref1);
ModelNurbSpline nurbSpline = elem as ModelNurbSpline;
IList<XYZ> listPoint = new List<XYZ>();
listPoint= nurbSpline.GeometryCurve.Tessellate();
XYZ normal = new XYZ(0, 0, 1);
using (Transaction transaction = new Transaction(revitDoc))
{
transaction.Start("主題");
//在下面新增主要程式碼內容
SketchPlane modelSketch = SketchPlane.Create(revitDoc, revitApp.Create.NewPlane(normal, XYZ.Zero));
for (int i=0;i<listPoint.Count()-1;i++)
{
ModelCurve modelcurve = revitDoc.Create.NewModelCurve(Line.CreateBound(listPoint[i], listPoint[i+1]), modelSketch);
}
revitDoc.Delete(nurbSpline.Id);
transaction.Commit();
}
return Result.Succeeded;
}
}
}
相關推薦
Revit二次開發:NurbSpline中各個引數的含義
摘自百度的回答,基本滿足二開需求。瞭解一下:NURBS是Non-Uniform Rational B-Splines的縮寫,是非統一有理B樣條的意思。具體解釋是:.Non-Uniform(非統一):是指一個控制頂點的影響力的範圍能夠改變。當建立一個不規則曲面的時候這一點非常有
revit二次開發中怎樣建nurbspline曲線形式的鋼筋
revit二次開發中nurbspline曲線的表現形式實際上是一系列的直線組成的。 由於revit只支援直線或者圓曲線的鋼筋變成鋼筋。所以不能將nurbspline曲線轉成鋼筋,所以可以先將nurbspline模型線轉連續的直線,然後再轉成鋼筋即可。 其中,nurbsp
Revit二次開發--Hello World
man dem users att try encoding cli 引用 類庫 部署完開發環境,就要進行每次學習新的技能,必寫的Hello World。 1、打開VS開發環境,新建一個項目類庫RevitDemo。 2、修改Class1名稱為Command。 3、在引
revit 二次開發之基於族獲得實例
相關 space typeof cef doc 過濾 list eric category Revit並沒有直接開放基於族獲取實例元素的過濾器。不過有兩個相關的過濾器,一個是FamilySymbolFilter(ElementId familyId),可以基於族ID過濾出所
踏上Revit二次開發之路 2 從“HelloWorld”入手
import none 工具 環境變量 各級 style first app ati 2 從“HelloWorld”入手 在歐特克的官方網頁上有個叫《My First Plug-in Training》的項目,號稱可以讓一個完全沒有編程基礎的人照著做出一個插件來。我快速瀏覽
Revit二次開發 事務標簽值
sub nsa ESS 需要 ret 使用 用戶 ado 命令執行 Revit開發中,事務應用非常頻繁,所有revit API提供了用戶顯式地指定標簽值。來控制在revit的IExternalCommand中,是否使用事務,其使用的屬性為TransactionMode。 如
Revit二次開發 日誌文檔 JournalingMode
用戶名 bsp journal IE 操作日誌 操作 nal 所有 nbsp 在revit的操作過程中,revit會將所有的操作,生成對應的操作日誌Journal文件,此文件是在目錄: C:\Users\%用戶名%\AppData\Local\Autodesk\Revi
Revit二次開發 任務對話框TaskDialog
添加 方法 exp ask all 細節 truct AD 當前 對話框是revit常用的功能,可以提示revit一個命令的結果或者錯誤,其基本代碼如下“ TaskDialog mainDialog = new TaskDialog("Hello,TaskDia
Revit二次開發之載入族
return mes 刪除 開發 urn com tar 失敗 commit 載入族 此方法載入族無法覆蓋原有族,即若存在相同名稱的族則會載入失敗 1 Family family = null; //族 2 3 Transaction transact
Revit二次開發之 自定義選項卡排在最前端
引用AdWindows.dll類庫 Autodesk.Windows.RibbonControl ribbon = AutodeskWindows.ComponentManager.Ribbon;  
Revit二次開發——如何搭建多版本的框架,方便程式設計
Revit基本兩年一大變。所以在做開發的時候需要做多個版本的才行。但是每個版本做一個專案又很不方便,因為很多程式碼類似,改了前面忘了後面的版本,所以很頭疼,最好能夠幾個版本共用一個類,不同版本通過預編譯來解決。這裡只說怎麼解決多版本共用一個類
Revit二次開發高階應用(二)——怎樣在Revit中使用多執行緒
在Revit中完全可以使用多執行緒,只是需要滿足一定的規則:不改變Revit的Document文件的工作都可以線上程中完成,改變Document文件的工作都需要在主執行緒中完成。 如下:不改變文件,只是在執行緒裡建立輔助的線,執行之後,絲毫不錯。 namespace RevitUseTh
Revit二次開發高階應用(1)——利用wcf做簡單的族庫管理
因為對應用場景不是特別明確,暫時就用wcf做一個可以上傳和下載的功能來管理族庫。 1、用WCF做服務端的上傳下載管理 首先新增上傳下載的介面: [ServiceContract] public interface IFileService { //上傳
Revit二次開發之單位轉換
Revit內部基本單位是英尺,如果要獲取或設定構件引數數值需要進行單位轉換,比如轉換為基本的毫米或米等單位 1.可以使用常規方式進行轉換: 1英尺等於0.3047999995367米,等於304.7999995367毫米 2.可以使用RevitA
Revit二次開發新增按鈕
整體結構佈局 命令類 namespace HW { [Transaction(TransactionMode.Manual)] class Cmd : IExternalCommand { public Result Ex
Revit二次開發基礎知識
獲取應用、文件及當前檢視資訊 public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) {
Revit二次開發點滴記錄
線的方向問題 XYZ xyz=Line.Direction;此屬性返回的是normalized之後的向量。示例如下 Line l1 = Line.CreateBound(new XYZ(0,5,0),new XYZ(0,0,0)); Line l2 = Line.CreateB
revit二次開發 內建模型之放樣
/// <summary> /// 內建模型(放樣) /// </summary> private static void CreateSphereDirectShape(double MaxHeight, d
revit二次開發構件上色
首先給構件族建立一個材質引數,然後讓族的材質使用該引數,即可直接用引數化的過程改變材質 建立某顏色的材質 class MaterialColor { public Material materialTest; public Document document;
Revit二次開發--設定族型別引數
已知載入到專案中的族Family,如何設定該族型別的引數,程式碼如下: private Family EditFamilyToSetParam(Document doc, Family family, double diameter) { try