首页 > 其他分享 >Revit二次开发-创建用户只读的共享参数

Revit二次开发-创建用户只读的共享参数

时间:2023-07-18 17:24:42浏览次数:34  
标签:definition familyManager 只读 doc var definitionGroup 二次开发 trans Revit

   在族环境里面绑定共享参数,并且用户在属性面板不可修改参数值

 [Transaction(TransactionMode.Manual)]
    public class SharedParameters : IExternalCommand
    {
        private readonly string _desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            var doc = commandData.Application.ActiveUIDocument.Document;
            if (!doc.IsFamilyDocument)
            {
                return Result.Cancelled;
            }
            var familyManager = doc.FamilyManager;

            var file = Path.Combine(_desktop, "test.txt");
            if (!File.Exists(file))
            {
                File.Create(file);
            }
            doc.Application.SharedParametersFilename = file;
            var definitionFile = doc.Application.OpenSharedParameterFile();
            using (var trans = new Transaction(doc, "SharedParameters"))
            {
                try
                {
                    trans.Start();
                    var groupName = "TestSharedParameter";
                    var definitionGroup = definitionFile.Groups.get_Item(groupName);
                    if (definitionGroup is null)
                    {
                        definitionGroup = definitionFile.Groups.Create(groupName);
                    }
                    var definitionName = "Source";
                    var definition = definitionGroup.Definitions.get_Item(definitionName);
                    if (definition is null)
                    {
                        var options = new ExternalDefinitionCreationOptions(definitionName, ParameterType.Text)
                        {
                            UserModifiable = false,
                        };
                        definition = definitionGroup.Definitions.Create(options);
                    }
                    if (familyManager.get_Parameter(definition) is null)
                    {
                        var familyParameter = familyManager.AddParameter(definition as ExternalDefinition, BuiltInParameterGroup.PG_TEXT, true);
                        if (familyParameter != null)
                        {
                            familyManager.Set(familyParameter, "Hello World");
                        }
                    }
                    trans.Commit();
                }
                catch (Exception)
                {
                    if (trans.HasStarted())
                    {
                        trans.RollBack();
                    }
                }
            }

            return Result.Succeeded;
        }
    }

 

标签:definition,familyManager,只读,doc,var,definitionGroup,二次开发,trans,Revit
From: https://www.cnblogs.com/youngala/p/17563559.html

相关文章

  • java怎么把属性改为只读
    Java如何将属性改为只读在Java中,我们通常将属性定义为私有(private)以保护数据的完整性和安全性。如果我们希望某个属性不被外部修改,我们可以将其设置为只读属性。只读属性意味着只能在类内部访问并获取其值,而无法在外部进行修改。下面将介绍几种将属性改为只读的方法,使用Java的......
  • 微信个人号机器人,E云API二次开发
    **个人微信开发API****简要描述:**-登录E云平台**请求URL:**-http://域名地址/member/login-域名地址+开发者账号密码:后台系统自助开通**请求方式:**-POST**请求头Headers:**-Content-Type:application/json  **请求参数示例**```clike{"account":"18611......
  • 洞察漏洞管理平台二次开发
    之前搭建过由宜信安全部开源的漏洞管理平台-洞察(GitHub项目地址:https://github.com/creditease-sec)。但在实际的使用中发现存在不少需要优化的地方。后续宜信安全部也推出了洞察2.0版本,有很大的调整。然而不同企业的业务场景和需求都不同,很难做到面面俱到,对于定制开发的需求是......
  • 记一次CentOS7.7文件系统只读Read-only file system 并且/dev/只有一个设备文件 null
    环境VMwareWorkstationPro15.5操作系统CentOS7.7现象:处理方法1.单用户修复文件系统失败2.救援模式备份数据失败3.把不能正常启动的磁盘,挂载到正常启动虚拟机,扫描逻辑卷,激活,挂载(1)把有问题的磁盘挂载到正常启动的机器上选择需要修复的盘......
  • Revit开发之 IExportContext接口详细
    如果要将Revit模型输出为特定的格式,则需要利用revit的数据导出接口,在revit的二次开发中,给我们提供IExportContext接口。当前接口可用户模型轻量化导出、自定义格式导出等。编号 函数名称函数功能1Finish在导出过程的最后,处理完所有的实体后调用此防范2IsCanceled......
  • C#基于海康视觉VM4.1的二次开发框架源码,有多流程框架 运动控制卡 服务框架 需要有海康
    C#基于海康视觉VM4.1的二次开发框架源码,有多流程框架运动控制卡服务框架需要有海康VM的基础并且有海康威视VM开发狗原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/668913688222.html......
  • gojs禁止画布滚动 完全只读方案
    gojs生成画布后,鼠标滚动,画布的内容会上下移动,以下属性可解决此问题。myDiagram=$(go.Diagram,"graph",{initialContentAlignment:go.Spot.Center,//启动视口中间的所有内容"toolManager.mouseWheelBehavior":go.ToolManager......
  • Sherlock视觉,支持任意相机,我们是专业Sherlock视觉 sherlock支持二次开发,同时也支持 VB
    Sherlock视觉,支持任意相机,我们是专业Sherlock视觉sherlock支持二次开发,同时也支持VB,VC,C#的界面封装,同时sherlock还可以是一个平台,就是可以自己写算法,插入其中。使用起来非常方便,功能也相对比较强大,主要是开发速度超级快(相比较halcon,opencv来讲,也是比较专业的检测软件)不会用的不......
  • 程序员的噩梦:接手别人的代码,二次开发...
    故事纯属虚构,如有雷同,纯属雷同开端小吹是一个自由职业的程序员,没有了每个月的固定工资,只能一边开发自己的独立App,一边靠接外包单子来维持生活这样子。他手头上的外包项目已经完结了,正在努力寻找下一个项目。已经闲了一个星期了,小吹心里有点慌。这时候,客户小白找上门来了。小......
  • AutodeskUniversity--Revit开发在BIM项目中的演进及与人工智能的结合(梁裕卿)
    课程说明本课程将分享同济大学建筑设计研究院(集团)有限公司(以下简称TJAD)上海建筑数字建造工程技术研究中心(以下简称上海建筑数字中心)打造Revit插件产品的经验,包括完整的需求,软件架构、开发、第三方程序集的使用、测试及打包过程。同时介绍Revit开发在BIM项目中是如何逐步迭......