def createSharedPara(_paramName_string,_groupNameinSPfile_string, \ _paramtype_enum, _builtInCat_enum,_paramGroupinProperty_enum): # open SharedParameterFile file = uiapp.Application.OpenSharedParameterFile() # get GroupName in SharedParameter file, if not exist create new Group group = file.Groups.get_Item(_groupNameinSPfile_string) if group == None: group = file.Groups.Create(_groupNameinSPfile_string) # Create NewCategorySet() catset = app.Create.NewCategorySet() # Insert Category Objects in CatSet <Autodesk.Revit.DB.Category object catset.Insert(doc.Settings.Categories.get_Item(_builtInCat_enum)) # returns True # create an instance binding object with categoryset inst_bind = app.Create.NewInstanceBinding(catset) #ExternalDefinitionCreationOptions Class excpects ( paraname as string, paratype object) # An option class used for creating a new shared parameter definition, ED_opt1 = ExternalDefinitionCreationOptions(_paramName_string, _paramtype_enum) ED_opt1.Visible = True # True is the default value #Create Parameter Definition Object #Test if paraName is in SharedParam file , get Para Name Definition from file, else Create new Name if group.Definitions.Contains(group.Definitions.Item[_paramName_string]): _exdef1 = group.Definitions.Item[_paramName_string] # create parameter definition object from Para in file else: # _def = group.Definitions.Create(_paramName, _paramtype_enum, _visible) _exdef1 = group.Definitions.Create(ED_opt1) #Create para Definition object wit Ext #Create Parameter by inserting the Para Definition in the ParameterBindigs_Map try: t = Transaction(doc, "Parameter Creation") t.Start() bind_Map = doc.ParameterBindings.Insert(_exdef1, inst_bind, _paramGroupinProperty_enum) t.Commit() except: import traceback print(traceback.format_exc())
def write_to_definition_file(self, definition_file=None, warning=True): # type: (DefinitionFile, bool) -> ExternalDefinition """ Create a new parameter definition in current shared parameter file :param definition_file: (Optional) definition file :param warning: (Optional) Warn user if a definition with given name already exist :return: External definition which have just been written """ if not definition_file: definition_file = self.get_definition_file() if not self.group: self.group = "pypevitmep" definition_group = definition_file.Groups[self.group] if not definition_group: definition_group = definition_file.Groups.Create(self.group) if definition_group.Definitions[self.name] and warning: alert("A parameter definition named {} already exist".format(self.name)) return else: external_definition_create_options = ExternalDefinitionCreationOptions(self.name, self.type, GUID=self.guid, UserModifiable=self.modifiable, Description=self.description, Visible=self.visible) definition = definition_group.Definitions.Create(external_definition_create_options) self.initial_values_update() self.new = self.changed = False return
def create_parameter(self, param_name, param_type): opt = ExternalDefinitionCreationOptions(param_name, param_type) el = self.shared_param_group.Definitions.Create(opt) return el
def copyExternalDefinition(self, guid, definition): xDefOptions = ExternalDefinitionCreationOptions(definition.Name, definition.ParameterType) xDefOptions.Description = '' xDefOptions.GUID = guid return self.groupDefinition.Definitions.Create( xDefOptions )