




已阅读5页,还剩109页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,Revit2011API介绍中交二航院Revit二次开发培训,叶雄进JoeYeDeveloperTechnicalServices,关于培训者,叶雄进JoeYeJoe.Ye5年工程软件开发3年软件开发咨询ADNAECWorkGroup支持全球ADN软件开发者支持产品RevitAutoCADArchitectureAutoCAD,日程内容安排,28号9:00-10:00Revit二次开发在全球的应用10:00-12:00二次开发概览和数据库对象14:00-16:30Revit二次开发高级篇用户界面访问,事件,选择集等16:30-17:00课程内容问答,交流29号9:00-11:30Revit结构二次开发11:30-12:00课程内容问答,交流14:00-16:30RevitMEP二次开发16:30-17:00课程内容问答,交流30号9:00-12:00按提出的问题培训咨询,交流,问答,,调查,工作描述?软件研发设计管理对.net语言对RevitArchitecture、Structure、MEP产品的掌握程度?对Revit二次开发掌握熟悉程度?,Revit二次开发的应用,内容提纲,Revit二次开发起步产品和SDK介绍Revit二次开发环境Revit二次开发的完整过程Revit数据库对象数据库对象特征过滤数据库中对象访问对象的参数修改,删除,创建Revit对象Revit2011用户交互编程Ribbon界面编程选择集应用任务对话框事件和模型动态更新,二次开发起步,产品,SDK和加载dlls,Revit二次开发所需条件,三个条件:Revit产品RevitSDK开发工具,二次开发入门,Revit产品线,Revit三个系列产品RevitArchitecture,用于建筑设计RevitStructure,用来建立结构模型RevitMEP(Mechanical,Electrical,Plumbing),用于建筑设备设计如何获得软件安装包DVD版本在ADN网站可以获得SoftwareusingAutodesk.Revit.DB;usingAutodesk.Revit.UI;为命令类加属性Transaction(TransactionMode.Automatic)Regeneration(RegenerationOption.Automatic)新建类从IExternalCommand派生重载Execute()方法在Execute中添加代码来实现命令功能,Revit二次开发的完整过程,实现外部命令最小的VB.Net外部命令,HelloWorld#1-AminimumRevitexternalcommand._PublicClassHelloWorldImplementsIExternalCommandPublicFunctionExecute(_ByValcommandDataAsAutodesk.Revit.UI.ExternalCommandData,_ByRefmessageAsString,_ByValelementsAsAutodesk.Revit.DB.ElementSet)_AsAutodesk.Revit.UI.Result_ImplementsAutodesk.Revit.UI.IExternalCommand.ExecuteAutodesk.Revit.UI.TaskDialog.Show(MyDialogTitle,HelloWorld!)ReturnResult.SucceededEndFunctionEndClass,实现外部命令最小的C#外部命令,/HelloWorld#1-AminimumRevitexternalcommand.Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Automatic)Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)publicclassHelloWorld:IExternalCommandpublicAutodesk.Revit.UI.ResultExecute(Autodesk.Revit.UI.ExternalCommandDatacommandData,refstringmessage,Autodesk.Revit.DB.ElementSetelements)Autodesk.Revit.UI.TaskDialog.Show(MyDialogTitle,HelloWorld!);returnResult.Succeeded;,实现外部命令IExternalCommand类派生,HelloWorld#1-AminimumRevitexternalcommand._PublicClassHelloWorldImplementsIExternalCommandPublicFunctionExecute(_ByValcommandDataAsAutodesk.Revit.UI.ExternalCommandData,_ByRefmessageAsString,_ByValelementsAsAutodesk.Revit.DB.ElementSet)_AsAutodesk.Revit.UI.Result_ImplementsAutodesk.Revit.UI.IExternalCommand.ExecuteAutodesk.Revit.UI.TaskDialog.Show(MyDialogTitle,HelloWorld!)ReturnResult.SucceededEndFunctionEndClass,1.从IExternalCommand派生新类,实现外部命令Execute()方法,HelloWorld#1-AminimumRevitexternalcommand._PublicClassHelloWorldImplementsIExternalCommandPublicFunctionExecute(_ByValcommandDataAsAutodesk.Revit.UI.ExternalCommandData,_ByRefmessageAsString,_ByValelementsAsAutodesk.Revit.DB.ElementSet)_AsAutodesk.Revit.UI.Result_ImplementsAutodesk.Revit.UI.IExternalCommand.ExecuteAutodesk.Revit.UI.TaskDialog.Show(MyDialogTitle,HelloWorld!)ReturnResult.SucceededEndFunctionEndClass,2.实现Execute()方法,返回值:SucceededFailedCancelled,参数:1st访问Revit对象模型2nd当命令失败时,返回给用户的消息3rdA当命令失败时,返回可高亮显示的对象集合,实现外部命令命令属性,HelloWorld#1-AminimumRevitexternalcommand._PublicClassHelloWorldImplementsIExternalCommandPublicFunctionExecute(_ByValcommandDataAsAutodesk.Revit.UI.ExternalCommandData,_ByRefmessageAsString,_ByValelementsAsAutodesk.Revit.DB.ElementSet)_AsAutodesk.Revit.UI.Result_ImplementsAutodesk.Revit.UI.IExternalCommand.ExecuteAutodesk.Revit.UI.TaskDialog.Show(MyDialogTitle,HelloWorld!)ReturnResult.SucceededEndFunctionEndClass,3.设置命令属性,Transactionmode:控制命令的的事务模式AutomaticManualReadOnlyRegenerationoption:控制命令中对象修改后的更新模式AutomaticManual,实现外部命令显示HelloWorld,HelloWorld#1-AminimumRevitexternalcommand._PublicClassHelloWorldImplementsIExternalCommandPublicFunctionExecute(_ByValcommandDataAsAutodesk.Revit.UI.ExternalCommandData,_ByRefmessageAsString,_ByValelementsAsAutodesk.Revit.DB.ElementSet)_AsAutodesk.Revit.UI.Result_ImplementsAutodesk.Revit.UI.IExternalCommand.ExecuteAutodesk.Revit.UI.TaskDialog.Show(MyDialogTitle,HelloWorld!)ReturnResult.SucceededEndFunctionEndClass,任务对话框:Revit风格的对话框,显示HelloWorld,4.显示一个对话框,用VisualStudio开发Revit,两种方式来扩展Revit的功能方式一:外部命令(ExternalCommand)功能:添加一个Revit命令描述:由用户点击按钮来启动命令使用最频繁方式二:外部应用(ExternalApplication)功能:做初始化工作可以添加Ribbon按钮或控件描述:在启动和关闭Revit.exe时自动执行一般会用到,用量不多,Revit二次开发的完整过程,添加外部应用步骤,步骤与外部命令相似不同:新建类从IExternalApplication接口派生实现OnStartup()andOnShutdown()方法publicclassApp:IExternalApplicationpublicIExternalApplication.ResultOnStartup(ControlledApplicationapplicationCreateRibbonSamplePanel(application);CreateRibbonInfosPanel(application);returnIExternalApplication.Result.Succeeded;publicIExternalApplication.ResultOnShutdown(ControlledApplicationapplication)returnIExternalApplication.Result.Succeeded;,Revit二次开发的完整过程,命令加载,方式一:通过addin文件*.addin加载文件可用任意文件名,只要扩展名是addin即可只能存放在指定的目录中WindowsXPC:DocumentsandSettingsAllUsersApplicationDataAutodeskRevitAddins2011C:DocumentsandSettingsApplicationDataAutodeskRevitAddins2011Vista/Windows7C:ProgramDataAutodeskRevitAddins2011C:UsersAppDataRoamingAutodeskRevitAddins2011在该文件夹下可有多个*.addin文件并存,Revit依次加载其中设置的加载项目启动Revit后,Revit就加在addin文件中指定的命令,Addin文件加载清单.addinFile,HelloWorldRevitIntroVB.HelloWorldC:RevitAPI2011RevitIntrobinHelloWorld.dll0B997216-52F3-412a-8A97-58558DC62D1E,Type:Command或ApplicationText:显示在下拉菜单中的字符串插件tabExternalToolspanelFullClassName:完整类名,包含命名空间Assembly:指向dll的完整路径和文件名AddInId:命令的GUID或独一无二的标示其它更多:参考DeveloperGuidesection3.4.1(pp40),命令加载,方式二:通过Revit.ini文件Revit.ini文件该文件位于产品安装目录的Program子文件夹中可以加载外部命令和外部应用在2012中,不再支持这个方法,命令加载工具AddInManager,命令加载工具运行你的命令,当addin加载文件设置好后,启动Revit,在工具栏中有一个“附件模块”,其中的“外部工具”下拉按钮中有加载的命令点击运行加载的外部命令运行,跟踪调试Revit程序,Revit运行时调试方法:Tools-attachtoprocess-AttachtoRevit.exe特点:可以随时在VS中Detach调试,此时Revit不退出,灵活方便.可以在Revit不退出的情况下调试进行多次调试用Detach中断调试,继续修改代码,再次绑定来调试技巧:需要选择托管(Managed)方式调试从VisualStudio中启动Revit调试方法:projectproperties-Debug-Startexternalprogram特点:结束调试时,Revit退出.,Revit二次开发的完整过程,辅助工具,RevitLookup,Add-InManager,SDKSamples2011.sln,andRvtSamples,加载工具AddinManager,加载和卸载用户的程序加载后,立即可以运行无需手工编辑addin文件自动保存加载命令修改代码编译后再次运行命令包含在SDK中,需预先安装,数据库对象查看工具RevitLookup,源代码在SDK的根目录下读取Revit对象属性和参数值快速查看API类属性的值快速理解Revit数据结构和对象关系,RvtSamples,加载所有SDK中的例程命令为每一个命令创建一个命令启动按钮是SDK中的一个开发源代码例程,数据库对象,认识Revit数据库对象,Revit数据库对象分类,数据库对象类继承关系图,族、类型、实例的概念,族Family,系统族Wall,Floor类型FamilySymbol,WallType,FloorType.族实例FamilyInstance,Wall,Floor,访问族和类型,Revit数据库对象的基本特点,构件类型,即构件定义存储在数据库中,作为插入到建筑模型中的对象的模板使用。在建筑模型中不可见。把相同的数据只保存一份一个定义,多次使用。例如:柱类型构件实例已经插入到建筑模型中,在视图中可见。是构件定义的引用,如果构件定义改变,实例跟着改变例如:插入到建筑模型中的柱。,Revit对象的识别,对象的类名称直接可以用类名唯一标识出来。如系统族:Wall,WallType,Floor,FloorType.共用一个类.如标准族:FamilyInstance,FamilySymbol,Family,Element对象的Category名称.通过Revit的Category标识对象的类别表示同一类别的对象。如:门实例和门类型具有相同的Category其它属性如所在的楼层如某一个参数的值,如何识别Revit中不同对象,根据标识来识别区分不同对象只使用类名来判断它们的特点:片状能容纳其它对象或特定用途的类如:Wall、Floor、contFooting、CeilingAndFloor等系统族的实例。如果通过类名无法分别出来,需联合对象的类别(Category)来判断门、窗、柱等对象没有专用的类来表示,都是FamilyInstance的实例用Category来判断其类别用枚举型的BuiltInCategory,来创建ElementCategoryFilter对象,支持所有国家语言。,访问Revit内部对象,DBElementIdentifyinganElement,ABC,identifythetypeoftheelementknowntotheUI.PublicSubIdentifyElement(ByValelemAsElement)DimsAsString=IfTypeOfelemIsWallThens=WallElseIfTypeOfelemIsFloorThens=FloorElseIfTypeOfelemIsRoofBaseThens=RoofElseIfTypeOfelemIsFamilyInstanceThenAninstanceofacomponentfamilyisallFamilyInstance.Wellneedtofurthercheckitscategory.Ifelem.Category.Id.IntegerValue=_BuiltInCategory.OST_DoorsThens=DoorElseIfelem.Category.Id.IntegerValue=_BuiltInCategory.OST_WindowsThens=WindowElseIfelem.Category.Id.IntegerValue=_BuiltInCategory.OST_FurnitureThens=FurnitureElses=Componentfamilyinstancee.g.PlantEndIf.,DBElement识别对象,参数,作用:可保存对象的任何属性分类:内置参数和共享参数实例参数和类型参数,访问实例所有参数,ABC,Element.Parameters属性VB.NETshowalltheparametervaluesoftheelementPublicSubShowParameters(ByValelemAsElement,_OptionalByValheaderAsString=)DimsAsString=header+vbCr+vbCrDimparamsAsParameterSet=elem.ParametersForEachparamAsParameterInparamsDimnameAsString=param.Definition.NameseethehelperfunctionbelowDimvalAsString=ParameterToString(param)s=s+name+=+val+vbCrNextTaskDialog.Show(RevitIntroLab,s)EndSub,访问指定参数,四种方法获取特定参数Parameter(parameterIdAsParameters.BuiltInParameter)Parameter(definitionAsParameters.Definition)Parameter(guidAsSystem.Guid)Parameter(nameAsString),访问和编辑对象的参数,内置参数功用BuiltInParameter,与国家语言无关有些参数无法直接用参数名称字符串来访问,但是可以用内置参数来访问param=elem.Parameter(BuiltInParameter.SYMBOL_FAMILY_NAME_PARAM)RevitLookup快速查参数的内置参数名,参数和内置参数,ABC,examplesofretrievingaspecificparameterindividlly.PublicSubRetrieveParameter(ByValelemAsElement,_OptionalByValheaderAsString=)DimsAsString=header+vbCr+vbCrcomments-mostofinstancehasthisparameter(1)byname.(Mark-mostofinstancehasthisparameter.)param=elem.Parameter(Mark).(2)byBuiltInParameter.DimparamAsParameter=_elem.Parameter(BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS).usingtheBuiltInParameter,youcansometimesaccessonethatisnotintheparametersset.param=elem.Parameter(BuiltInParameter.SYMBOL_FAMILY_AND_TYPE_NAMES_PARAM).param=elem.Parameter(BuiltInParameter.SYMBOL_FAMILY_NAME_PARAM).,数据库对象的位置,Element.Location属性有两种Location对象LocationPoint基于点的位置(e.g.,家具)LocationCurve基于线的位置(e.g.,墙)需要将返回的Location对象转成LocationPoint或LocationCurve,showthelocationinformationofthegivenelement.PublicSubShowLocation(ByValelemAsElement)DimsAsString=LocationInformation:+vbCr+vbCrDimlocAsLocation=elem.LocationIfTypeOflocIsLocationPointThen(1)wehavealocationpointDimlocPointAsLocationPoint=locDimptAsXYZ=locPoint.PointDimrAsDouble=locPoint.Rotation.ElseIfTypeOflocIsLocationCurveThen(2)wehavealocationcurveDimlocCurveAsLocationCurve=locDimcrvAsCurve=locCurve.Curve.s=s+EndPoint(0)/StartPoint=+PointToString(crv.EndPoint(0)s=s+EndPoint(1)/Endpoint=+PointToString(crv.EndPoint(1)s=s+Length=+crv.Length.ToString+vbCrEndIfEndSub,DBElementLocation,共享参数,什么是共享参数?非Revit自带的参数由用户添加存储用户的数据作用:存储基于实例的数据,对二次开发而言,十分重要共享参数定义,存储在共享参数定义文件中,访问和编辑对象的参数,创建共享参数,获得共享参数定义文件.ClassParameters.DefinitionFileApplication.Options.SharedParametersFilenameApplication.OpenSharedParameterFile获得共享参数组.ClassAutodesk.Revit.Parameters.DefinitionGroupDefinitionFile.GroupsDefinitionFile.Groups.Create获得共享参数定义(parametersdefinition)ClassParameters.DefinitionDefinitionGroup.DefinitionsDefinitionGroup.Definitions.Create创建CategorySet,把需要添加共享参数的对象的Category加入到集合中CategorySetcatSet=revitApp.Create.NewCategorySet()catSet.Insert(doc.Settings.Categories.Item(BuiltInCategory.OST_Doors)catSet.Insert(doc.Settings.Categories.Item(BuiltInCategory.OST_Windows)绑定参数DimbindingAsParameters.Binding=revitApp.Create.NewInstanceBinding(catSet)doc.ParameterBindings.Insert(fireRatingParamDef,binding),访问和编辑对象的参数,共享参数的访问,共享参数的访问方式与内置参数一样Parameter(definitionAsParameters.Definition)Parameter(guidAsSystem.Guid)Parameter(nameAsString)例子CreateShared,几何信息和数据,GeometryOptions指定返回什么样的几何信息,如粗略,详细几何对象有下面这几类对象SolidGeometryInstanceCurveMesh.Solid可以再细分成Solids/Faces/Edges可用RevitLookup查看SDK中的例子包含了如何访问对象的几何数据ElementViewerRoomViewerAnalyticalViewer,对象过滤,2011重要的功能优化对象遍历,过滤和查询,对象过滤获取目标对象,在Revit中所有对象都放在一起,好比都一个容器中为了获得目标对象,需要遍历,过滤或查询这个容器典型的情况我们可能会:获取所有门(e.g.,墙类型,门类型)获取一个门(指定类的实例)(e.g.,所有墙对象,所有门实例)找到一个门类型(指定名称的族类型)(e.g.,“BasicWall:Generic200mm”,“M_Single-Flush:0915x2134mm”),对象过滤1.1获取所有族类型系统族,获取所有墙类型三种方法(后两种方法使用了Of*快捷过滤),DimwallTypeCollector1=NewFilteredElementCollector(m_rvtDoc)wallTypeCollector1.WherePasses(NewElementClassFilter(GetType(WallType)DimwallTypes1AsIList(OfElement)=wallTypeCollector1.ToElements,DimwallTypeCollector2=NewFilteredElementCollector(m_rvtDoc)wallTypeCollector2.OfClass(GetType(WallType),DimwallTypeCollector3=_NewFilteredElementCollector(m_rvtDoc).OfClass(GetType(WallType),对象遍历1.1获取指定族类型系统族,获取墙类型e.g.,“BasicWall:Generic200mm”,FunctionFindFamilyType_Wall_v1(ByValwallFamilyNameAsString,_ByValwallTypeNameAsString)AsElementnarrowdownacollectorwithclass.DimwallTypeCollector1=NewFilteredElementCollector(m_rvtDoc)wallTypeCollector1.OfClass(GetType(WallType)LINQqueryDimwallTypeElems1=_FromelementInwallTypeCollector1_Whereelement.Name.Equals(wallTypeName)_Selectelementgettheresult.DimwallType1AsElement=Nothingresultwillgohere.IfwallTypeElems1.Count0ThenwallType1=wallTypeElems1.FirstEndIfReturnwallType1EndFunction,对象遍历1.2获取指定族的所有类型标准族,获取门的所有类型,两种方式均可,DimdoorTypeCollector=NewFilteredElementCollector(m_rvtDoc)doorTypeCollector.OfClass(GetType(FamilySymbol)doorTypeCollector.OfCategory(BuiltInCategory.OST_Doors)DimdoorTypesAsIList(OfElement)=doorTypeCollector.ToElements,DimdoorTypeCollector=NewFilteredElementCollector(m_rvtDoc)ElementClassFilterclassFilter=newElementClassFilter(GetType(FamilySymbol)ElementCategoryFiltercatFilter=newElementCategoryfilter(BuiltInCategory.OST_Doors)LogicalAndFilterlogFilter=NewLogicalAndFilter(classFilter,catFilter)doorTypeCollector.WherePasses(logFilter)DimdoorTypesAsIList(OfElement)=doorTypeCollector.ToElements,FunctionFindFamilyType_Door_v1(ByValdoorFamilyNameAsString,ByValdoorTypeNameAsString)AsElementnarrowdownthecollectionwithclassandcategory.DimdoorFamilyCollector1=NewFilteredElementCollector(m_rvtDoc)doorFamilyCollector1.OfClass(GetType(FamilySymbol)doorFamilyCollector1.OfCategory(BuiltInCategory.OST_Doors)parsethecollectionforthegivennameusingLINQqueryhere.DimdoorTypeElems=_FromelementIndoorFamilyCollector1_Whereelement.Name.Equals(doorTypeName)And_element.Parameter(BuiltInParameter.SYMBOL_FAMILY_NAME_PARAM)._AsString.Equals(doorFamilyName)_Selectelementgettheresult.DimdoorType1AsElement=NothingDimdoorTypeListAsIList(OfElement)=doorTypeElems.ToList()IfdoorTypeList.Count0Thenweshouldhaveonlyone.doorType1=doorTypeList(0)foundit.EndIfReturndoorType1EndFunction,对象遍历1.2获取指定类型标准族,获取门类型e.g.,“M_Single-Flush:0915x2134”,对象过滤2.1获取指定类的实例系统族,获得所有墙,DimwallCollector=NewFilteredElementCollector(m_rvtDoc).OfClass(GetType(Wall)DimwallListAsIList(OfElement)=wallCollector.ToElements,对象过滤2.1获取指定类的实例系统族,FindalistofelementwiththegivenClass,familytypeandCategory(optional).FunctionFindInstancesOfType(ByValtargetTypeAsType,_ByValidFamilyTypeAsElementId,_OptionalByValtargetCategoryAsBuiltInCategory=Nothing)AsIList(OfElement)narrowdowntotheelementsofthegiventypeandcategoryDimcollector=NewFilteredElementCollector(m_rvtDoc).OfClass(targetType)IfNot(targetCategory=Nothing)Thencollector.OfCategory(targetCategory)EndIfparsethecollectionforthegivenfamilytypeid.usingLINQqueryhere.Dimelems=_FromelementIncollector_Whereelement.Parameter(BuiltInParameter.SYMBOL_ID_PARAM)._AsElementId.Equals(idType)_Selectelementputtheresultasalistofelementforaccessibility.Returnelems.ToList()EndFunction,例如,获取门,其类型是“M_Single-Flush:0915x2134”,对象过滤2.2获取指定类的实例标准族,获取所有门,DimdoorCollector=NewFilteredElementCollector(m_rvtDoc)._OfClass(GetType(FamilyInstance)doorCollector.OfCategory(BuiltInCategory.OST_Doors)DimdoorListAsIList(OfElement)=doorCollector.ToElements,对象过滤更多选择,我们已经演示了如下类的使用:FilteredElementCollectorElementClassFilterElemetCategoryFilter有更多的过滤器可供使用:BoundingBoxContainsPointFilterElementDesignOptionFilterElementIsCurveDrivenFilterElementIsElementTypeFilterElementParameterFilter,FilteredElementCollector用法,用快捷函数添加过滤条件OfCategoryOfCategoryIdOfClass过滤器使用单一过滤器多个过滤器的逻辑组合过滤器使用LINQ.NET3.5提供功能可以对集合中的对象查询,对象修改,如何修改一个对象,与Revit2010相同,编辑Revit对象,修改对象的方式通过类的成员函数或属性直接修改如修改门的类型Door.Symbol=newSymbol修改对象的参数值.Parameter.Set()修改模型构件的几何位置通过Document提供的方法修改Document.Rotate()删除Document.Delete()方法,创建与编辑Revit对象,修改对象,修改族类型(例如,墙、门的类型),e.g.,anelementwearegivenisawall.DimaWallAsWall=elemfindawallfamilytypewiththegivenname.DimnewWallTypeAsElement=ElementFiltering.FindFamilyType(m_rvtDoc,_GetType(WallType),BasicWall,Exterior-BrickonCMU)assignanewfamilytype.aWall.WallType=newWallType,e.g.,anelementwearegivenisadoor.DimaDoorAsFamilyInstance=elemfindadoorfamilytypewiththegivenname.DimnewDoorTypeAsElement=ElementFiltering.FindFamilyType(_GetType(FamilySymbol),M_Single-Flush,0762x2032mm,_BuiltInCategory.OST_Doors)assignanewfamilytype.aDoor.Symbol=newDoorType,对象修改,修改对象的参数值获取目标参数用Set方法给参数赋值,aWall.Parameter(BuiltInParameter.WALL_TOP_OFFSET).Set(14.0)aWall.Parameter(BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS).Set(_ModifiedbyAPI),对象修改,修改对象的位置,DimwallLocationAsLocationCurve=aWall.Locationcreateanewlinebound.DimnewPt1=NewXYZ(0.0,0.0,0.0)DimnewPt2=NewXYZ(20.0,0.0,0.0)DimnewWallLineAsLine=m_rvtApp.Create.NewLineBound(newPt1,newPt2)changethecurve.wallLocation.Curve=newWallLine,对象修改Document级别的移动,旋转等,移动,旋转对象,movebydisplacementDimvAsXYZ=NewXYZ(10.0,10.0,0.0)m_rvtDoc.Move(elem,v),rotateby15degreearoundz-axis.Dimpt1=XYZ.ZeroDimpt2=XYZ.BasisZDimaxisAsLine=m_rvtApp.Create.NewLineBound(pt1,pt2)m_rvtDoc.Rotate(elem,axis,Math.PI/12.0),对象修改更新对象,修改完一个对象后,如果想在紧接着的代码操作是在修改后的对象上进行,那么需要更新所作的所有修改如果你的RegenerationOption是Manual,需要调用m_rvtDoc.Regenerate()如果RegenerationOption是Automatic,每次修改后,Revit自动更新对象到最新状态,创建对象,如何创建Revit中的各种对象,创建对象,创建模型对象这类对象能保存下来在类Autodesk.Revit.Creation.Document中定义了120个对象创建方法支持创建40多种类型的对象例如Walls,FloorsNewWall(CurveArrayprofile,boolstructural);/+4个重载函数NewSlab(CurveArrayprofile,Level,LineslopedArrow,doubleangle,boolisImperial,boolisStructural);NewFamilyInstance(.)更多看RevitAPI.chm创建临时对象这类对象不保存在模型文件中Application.Create.NewXxx()如,NewLineBound(),ModelCreationCreateaWall,createwallsSubCreateWalls()getthelevelswewanttoworkon.Dimlevel1AsLevel=ElementFiltering.FindElement(m_rvtDoc,GetType(Level),Level1)Dimlevel2AsLevel=ElementFiltering.FindElement(m_rvtDoc,GetType(Level),Level2)setfourcornerofwalls.DimptsAsNewList(OfXYZ)(5).DimisStructuralAsBoolean=Falseflagforstructuralwallornot.loopthroughlistofpointsanddefinefourwalls.ForiAsInteger=0To3defineabasecurvefromtwopoints.DimbaseCurveAsLine=m_rvtApp.Create.NewLineBound(pts(i),pts(i+1)createawallusingtheoneofoverloadedmethods.DimaWallAsWall=m_rvtDoc.Create.NewWall(baseCurve,level1,isStructural)settheTopConstrainttoLevel2aWall.Parameter(BuiltInParameter.WALL_HEIGHT_TYPE).Set(level2.Id)NextThisisimportant.weneedtheselinestohaveshrinkwrapworking.m_rvtDoc.Regenerate()m_rvtDoc.AutoJoinElements()EndSub,模型创建新建墙,ModelCreationCreateaWall,addadoortothecenterofthegivenwall.SubAddDoor(ByValhostWallAsWall)ge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《2025年签订房屋租赁合同要点》
- 中介产品销售合同样本
- 202520办公家具采购合同模板
- 专修内外装修合同样本
- 全款买车定金合同样本
- 房屋居间协议合同书范例
- 房屋征地协议书二零二五年
- 劳动合同会计岗位泉水潺流的动态二零二五年
- T恤衫出口合同样本
- 小学2024年推普周活动方案
- 2025年浙江省初中名校发展共同体中考语文一模试卷附参考答案
- 2025年食安食品考试题及答案
- 2025年租赁料场协议
- 医院保安服务方案投标文件(技术方案)
- 保证食品安全的规章制度清单
- 焊接接头表面质量检查记录
- 空调机房吸音墙顶面综合施工专题方案
- 红楼梦专题元妃省亲39课件
- 初中人教版七年级上册音乐5.2甘美兰(22张)ppt课件
- 工程土石方挖运机械租赁合同
- 新版GMP批生产记录模板(2013年10月)
评论
0/150
提交评论