Revit二次开发基础/核心编程—建筑建模-标高和轴网
	
 		    				    		
		    					    					    					    					    						    						    						    						    			    文章来源:CSDN论坛
    一、本节课程
    C#Revit二次开发基础/核心编程—建筑建模-标高和轴网

    二、本节要讲解的知识点
    1、标高的高度、创建标高
    2、轴网曲线、创建轴网
    具体内容
    1、标高
    标高是有限水平平面,大多数元素都是基于标高来定位的,如墙、地板、天花板、屋顶等。对应的类是Level,它继承于Element类。
    (1)标高的高度(ElevationandProjectElevation)
    通过Level.Elevation属性(对应的BuiltInParameter是LEVEL_ELEV)可以获取标高的高度,它代表个是该标高相对于基面“ElevationBase”的高度,基面可以是项目的基点,也可以是测量点。
| //============代码片段4-1 修改标高的基面============ ElementId levelId=new ElementId(311); Element element= RevitDoc.GetElement(levelId); Level level= element as Level; LevelType levelType = RevitDoc.GetElement(level.GetTypeId()) as LevelType; Parameter relativeBaseType = levelType.get_Parameter(BuiltInParameter.LEVEL_RELATIVE_BASE_TYPE); relativeBaseType.Set(1); //项目基点 = 0, 测量点 = 1 | 
    Level.ProjectionElevation属性代表了标高相对于项目基点的高度,等同于当基面是项目基点时Level.Elevation的值。
    (2)创建标高
    在API中可以使用NewLevel方法来创建。
| //============代码片段4-2 创建标高============ Document document = revit.Application.ActiveUIDocument.Document; using (Transaction transaction = new Transaction(document)) {      transaction.Start(” Level”);     Level level = Level.(document, 10.0);     transaction.Commit(); } | 
    使用API创建的标高,Revit不会自动创建对应的视图,这是跟Revit界面里面去操作有区别的。如果想要创建对应的视图,我们可以使用ViewPlan.函数。
| //============代码片段4-3 创建标高对应的视图============ Level level; //已知的标高 //过滤出所有的ViewFamilyType var classFilter = new ElementClassFilter(typeof(ViewFamilyType)); FilteredElementCollector filteredElements = new FilteredElementCollector(RevitDoc); filteredElements = filteredElements.Passes(classFilter); foreach (ViewFamilyType viewFamilyType in filteredElements) {    //找到ViewFamily类型是FloorPlan或者CeilingPlan的ViewFamilyType    if (viewFamilyType.ViewFamily == ViewFamily.FloorPlan ||       viewFamilyType.ViewFamily == ViewFamily.CeilingPlan)    {       transaction.Start(” view of type ” + viewFamilyType.ViewFamily);       //创建视图       ViewPlan view = ViewPlan.(RevitDoc, viewFamilyType.Id, level.Id);       transaction.Commit();    } } | 
    2、轴网
    轴网对应的类是Grid,也是继承于Element。
    (1)轴网曲线(Curve)
    通过我们的Grid.Curve属性可以拿到轴网的曲线,如果Grid.IsCurved返回true,那么Curve将是一个弧形曲线Arc对象,否则就是Line对象。
    (2)创建轴网
    Document..NewGrid(Arcarc);
    Document..NewGrid(Lineline);
|   //============代码片段4-4 创建轴网============ using (Transaction transaction = new Transaction(RevitDoc)) {    transaction.Start(” Grid”);    Grid grid = RevitDoc..NewGrid(       Line.Bound(new XYZ(0, 0, 0), new XYZ(10, 10, 0)));    grid.Name = “BB”;    transaction.Commit(); } | 
    注意:1)传入参数对应的直线或弧线所在的平面是一个水平的。
    2)创建的轴网将被自动按照上一次的规则递增命名,可以是数字或者字母,取决于上一次的情况。上一次创建的是A,本次就自动为B;如果上次为3,这次是4,如果字母或者数字被其他的轴网占用了,则自动跳过。
    3)通过Grid.Name属性来设置轴网的名称。如果被设置的名字被占用,会有ArgumentEception抛出。

    四、总结
    1、标高的高度、创建标高的代码和操练。
    2、轴网曲线、创建轴网的代码和操练。
    
    
    免费Revit教学视频。
l  
l  
l  
			    						    						    						    					    		
			    					    				    					             
		    			
		            						            
	            	            	             
评论0