コード例 #1
0
        public void ClassSelectionChanged()
        {
            PropsToWrite.Clear();
            if (string.IsNullOrEmpty(SelectedClass))
            {
                return;
            }
            string schemaName;
            int    marjornum, minornum;

            if (!Extension.Utilities.TryParseSchemaString(SelectedSchema, out schemaName, out marjornum, out minornum))
            {
                return;
            }
            BDE.FindInstancesScope scope   = BDE.FindInstancesScope.CreateScope(Program.GetActiveDgnFile(), new BDE.FindInstancesScopeOption());
            BES.IECSchema          schema  = BDE.DgnECManager.Manager.LocateSchemaInScope(scope, schemaName, marjornum, minornum, BES.SchemaMatchType.Exact);
            BES.IECClass           ecClass = schema.GetClass(SelectedClass);

            foreach (BES.IECProperty ecProp in ecClass.Properties(false))
            {
                PropsToWrite.Add(new PropertyToWrite {
                    PropertyName = ecProp.Name, PropertyType = ecProp.Type.Name, PropertyValue = ""
                });
            }
        }
コード例 #2
0
        protected override bool OnDataButton(BD.DgnButtonEvent ev)
        {
            BD.HitPath hitPath = DoLocate(ev, true, 1);
            if (null != hitPath)
            {
                BDDE.DgnECManager       manager = BDDE.DgnECManager.Manager;
                BDDE.FindInstancesScope scope   = BDDE.FindInstancesScope.CreateScope(hitPath.GetHeadElement(), new BDDE.FindInstancesScopeOption(BDDE.DgnECHostType.Element, true));
                BDEPQ.ECQuery           query   = new BDEPQ.ECQuery(Extension.Utilities.GetActiveModelAllClasses());
                query.SelectClause.SelectAllProperties = true;
                using (BDDE.DgnECInstanceCollection ecInstances = manager.FindInstances(scope, query))
                {
                    if (ecInstances == null)
                    {
                        return(false);
                    }
                    m_findinstacneOnElementViewModel.InstancesInfo.Clear();
                    //ObservableCollection<Instance> instanceCollection = new ObservableCollection<Instance>();
                    foreach (var ecin in ecInstances)
                    {
                        foreach (BES.IECProperty itemProp in ecin.ClassDefinition.Properties(false))
                        {
                            var instanceitem = new Instance();
                            instanceitem.ClassName    = ecin.ClassDefinition.DisplayLabel;
                            instanceitem.PropertyName = itemProp.Name;
                            string type = itemProp.Type.Name.ToLower();
                            instanceitem.TypeName = type;
                            BEI.IECPropertyValue propvalue = ecin.GetPropertyValue(itemProp.Name);

                            switch (type)
                            {
                            case "string":
                                instanceitem.PropertyValue = (propvalue != null) ? propvalue.StringValue : "";
                                break;

                            case "boolean":
                                instanceitem.PropertyValue = (propvalue != null) ? propvalue.StringValue : "";
                                break;

                            case "int":
                                instanceitem.PropertyValue = (propvalue != null) ? propvalue.IntValue.ToString() : "";
                                break;

                            case "double":
                                instanceitem.PropertyValue = (propvalue != null) ? propvalue.DoubleValue.ToString() : "";
                                break;
                            }
                            m_findinstacneOnElementViewModel.InstancesInfo.Add(instanceitem);
                        }
                    }
                    m_findinstacneOnElementViewModel.WindowTitle = hitPath.GetHeadElement().ElementId.ToString();
                }
            }
            return(true);
        }
コード例 #3
0
        protected override bool OnDataButton(BD.DgnButtonEvent ev)
        {
            BD.HitPath hitPath = DoLocate(ev, true, 1);
            if (null != hitPath)
            {
                InstanceToWrite instanceInfo = (WriteInstanceOnElementView.Instance.DataContext as WriteInstanceOnElementViewModel).GetInstanceToWrite();
                if (string.IsNullOrEmpty(instanceInfo.SchemaName) || string.IsNullOrEmpty(instanceInfo.ClassName) || instanceInfo.Properties.Count == 0)
                {
                    mc.StatusPrompt = "请先选择要附加的class";
                    return(false);
                }
                BDEC.FindInstancesScope scope  = BDEC.FindInstancesScope.CreateScope(Program.GetActiveDgnFile(), new BDEC.FindInstancesScopeOption());
                BES.IECSchema           schema = BDEC.DgnECManager.Manager.LocateSchemaInScope(scope, instanceInfo.SchemaName, instanceInfo.MajorVersion, instanceInfo.MinorVersion, BES.SchemaMatchType.Exact);
                BDE.Element             ele    = hitPath.GetHeadElement();

                BES.ECClass class1 = schema.GetClass(instanceInfo.ClassName) as BES.ECClass;
                BDEC.DgnECInstanceEnabler instanceEnabler = BDEC.DgnECManager.Manager.ObtainInstanceEnabler(Program.GetActiveDgnFile(), class1);
                BEI.StandaloneECDInstance instance        = instanceEnabler.SharedWipInstance;
                foreach (var pInfo in instanceInfo.Properties)
                {
                    switch (pInfo.PropertyType.ToLower())
                    {
                    case "string":
                        instance.MemoryBuffer.SetStringValue(pInfo.PropertyName, -1, pInfo.GetValueAsString());
                        break;

                    case "boolean":
                        instance.MemoryBuffer.SetBooleanValue(pInfo.PropertyName, -1, pInfo.GetValueAsBoolean());
                        break;

                    case "int":
                        instance.MemoryBuffer.SetIntegerValue(pInfo.PropertyName, -1, pInfo.GetValueAsInt());
                        break;

                    case "double":
                        instance.MemoryBuffer.SetDoubleValue(pInfo.PropertyName, -1, pInfo.GetValueAsDouble());
                        break;
                    }
                }
                instanceEnabler.CreateInstanceOnElement(ele, instance, false);
                mc.StatusPrompt  = "附加完成";
                mc.StatusMessage = $"将{instanceInfo.ClassName}附加到ID:{ele.ElementId}物体上";
            }

            return(true);
        }
コード例 #4
0
        public void SchemaSelectionChanged()
        {
            ImportedClasses = new ObservableCollection <string>();
            SelectedClass   = string.Empty;
            string schemaName;
            int    majornum, minornum;

            if (!Extension.Utilities.TryParseSchemaString(SelectedSchema, out schemaName, out majornum, out minornum))
            {
                return;
            }

            BDE.FindInstancesScope scope  = BDE.FindInstancesScope.CreateScope(Program.GetActiveDgnFile(), new BDE.FindInstancesScopeOption());
            BES.IECSchema          schema = BDE.DgnECManager.Manager.LocateSchemaInScope(scope, schemaName, majornum, minornum, BES.SchemaMatchType.Exact);
            if (schema == null)
            {
                return;
            }
            foreach (BES.IECClass ecClass in schema.GetClasses())
            {
                ImportedClasses.Add(ecClass.Name);
            }
        }