コード例 #1
0
        private void UpdateDirection(ElementId id, OpeningModel openningModel)
        {
            XYZ    basicZ    = XYZ.BasisZ;
            XYZ    direction = ConvertOpenningStringToObjectReVit.getDirection(openningModel.Geometry.Direction);
            XYZ    axisVec   = basicZ.CrossProduct(direction);
            Line   axis      = Line.CreateBound(axisVec, axisVec * 2);
            double angle     = basicZ.AngleOnPlaneTo(direction, axisVec);

            ElementTransformUtils.RotateElement(_doc, id, axis, angle);
        }
コード例 #2
0
        public OpeningModel GetNewOpenningModelFromNewOpenning(Element openning, string suject, bool isRectangle)
        {
            OpeningModel openningModel = new OpeningModel();

            openningModel.Geometry.Geometry  = ConvertObjectReVitToOpenningString.GetGeometry(openning, isRectangle, suject);
            openningModel.Geometry.Direction = ConvertObjectReVitToOpenningString.GetDirection(openning, isRectangle, suject);
            openningModel.Geometry.Original  = ConvertObjectReVitToOpenningString.GetOrigin(openning, isRectangle, suject);
            openningModel.IdLocal            = openning.UniqueId;
            return(openningModel);
        }
コード例 #3
0
        private string GetTotalHoursWorked(OpeningModel selectedOpening)
        {
            var dateStarted = selectedOpening.Model.StartDate;
            var dateEnded   = selectedOpening.Model.EndDate;

            TimeSpan?difference = dateEnded - dateStarted;
            var      days       = difference.Value.Days;
            var      hours      = days * 8; //8 hours a day

            return(Convert.ToString(hours));
        }
コード例 #4
0
 public NewHistoryModel(DataAccess.EF.History model, IRepository repository, OpeningModel selectedOpening, CandidateSelection selectedCandidate, NewPlacementModel selectedPlacement) : base(model)
 {
     _repository                  = repository;
     ModelCopy.DateStarted        = selectedOpening.Model.StartDate;
     ModelCopy.DateEnded          = selectedOpening.Model.EndDate;
     ModelCopy.CandidateId        = selectedCandidate.Model.CandidateId;
     ModelCopy.PlacementId        = selectedPlacement.ModelCopy.PlacementId;
     ModelCopy.HistoryDescription = selectedOpening.Model.Qualification.QualificationCode;
     _repository.History.Add(ModelCopy);
     //var candidate = _repository.Candidate.Get(c => c.CandidateId == selectedCandidate.Model.CandidateId);
     //SelectedCandidate = candidate;
 }
コード例 #5
0
        public static OpeningModel GetValueToExtensibleStorage(Element openning, string subject)
        {
            OpeningModel openningModel = new OpeningModel();
            Schema       schema        = DefineSchemaBuilder(subject);
            Entity       entity        = openning.GetEntity(schema);

            if (entity.Schema != null)
            {
                GetValueStringOpenningByExtensibleStorage(ref schema, ref entity, openningModel);
                return(openningModel);
            }
            else
            {
                return(null);
            }
        }
コード例 #6
0
        public List <OpeningModel> GetDataFromListElement(List <List <Element> > gennericModelOpennings, string subject)
        {
            List <OpeningModel> openningModels = new List <OpeningModel>();
            bool isRectangle = true;

            foreach (List <Element> shapeLists in gennericModelOpennings)
            {
                foreach (Element shapeOpenning in shapeLists)
                {
                    OpeningModel openningModel = GetNewOpenningModelFromNewOpenning(shapeOpenning, subject, isRectangle);
                    openningModels.Add(openningModel);
                }
                // item dau tien trong list là list rectangle Openning
                isRectangle = false;
            }
            return(openningModels);
        }
コード例 #7
0
 private void SetCloudOpenings()
 {
     CloudOpenings = new List <OpeningModel>();
     foreach (SerializedModel sm in CloudOpeningsSerialized)
     {
         OpeningModel opm = new OpeningModel();
         opm.ElementId     = new ElementId(sm.ElementId);
         opm.HostId        = new ElementId(sm.HostId);
         opm.OpeningStatus = sm.OpeningStatus;
         opm.GtbPairGuid   = sm.GtbPairGuid;
         opm.LocationPoint = new XYZ(sm.LocationPointX, sm.LocationPointY, sm.LocationPointZ);
         opm.OpeningType   = sm.OpeningType;
         opm.Diameter      = sm.Diameter;
         opm.Height        = sm.Height;
         opm.Width         = sm.Width;
         opm.Offset        = sm.Offset;
         opm.Depth         = sm.Depth;
         CloudOpenings.Add(opm);
     }
 }
コード例 #8
0
        public void SetProjectOpenings()
        {
            ProjectOpenings = new List <OpeningModel>();
            List <FamilyInstance>    _allOpenings      = new List <FamilyInstance>();
            FilteredElementCollector ficol             = new FilteredElementCollector(Document);
            List <FamilyInstance>    genModelInstances = ficol.OfClass(typeof(FamilyInstance))
                                                         .Select(x => x as FamilyInstance)
                                                         .Where(y => y.Symbol.Family.FamilyCategory.Id.IntegerValue == (int)BuiltInCategory.OST_GenericModel).ToList();

            foreach (FamilyInstance fi in genModelInstances)
            {
                Parameter gtbParameter = fi.get_Parameter(new Guid("4a581041-cc9c-4be4-8ab3-156d7b8e17a6"));
                if (gtbParameter != null && gtbParameter.AsString() != "GTB_Tools_location_marker")
                {
                    _allOpenings.Add(fi);
                }
            }

            string info = "";

            using (Transaction tx = new Transaction(Document, "Adding GtbPairGuid"))
            {
                tx.Start();
                foreach (FamilyInstance fi in _allOpenings)
                {
                    OpeningModel openingModel = OpeningModel.Initialize(fi);
                    ProjectOpenings.Add(openingModel);
                    if (!openingModel.InsertGuid())
                    {
                        info += "ID: " + fi.Id.IntegerValue.ToString() + " - Can't add pair guid to instance!";
                    }
                }
                tx.Commit();
            }
            if (info != "")
            {
                TaskDialog.Show("Error!", info);
            }
        }
コード例 #9
0
 public NewPlacementModel(DataAccess.EF.Placement model, IRepository repository, OpeningModel selectedOpening, CandidateSelection selectedCandidate) : base(model)
 {
     _repository = repository;
     ModelCopy.TotalHoursWorked = GetTotalHoursWorked(selectedOpening);
     ModelCopy.CandidateId      = selectedCandidate.Model.CandidateId;
     ModelCopy.OpeningNumber    = selectedOpening.Model.OpeningNumber;
     _repository.Placement.Add(ModelCopy);
 }
コード例 #10
0
 public static IEnumerable <ElementManagerWithRevisionSpecify> GetRevisionsGeometryForOpening(OpeningModel opening, IEnumerable <RevisionGetModel> revisions)
 {
     foreach (var revision in revisions)
     {
         var geometryFind = revision.Managers.FirstOrDefault(x => x.IdManager.Equals(opening.IdManager));
         if (geometryFind != null)
         {
             yield return(new ElementManagerWithRevisionSpecify()
             {
                 IdRevision = revision.IdRevision,
                 IdManager = geometryFind.IdManager,
                 Version = revision.Version,
                 Geometry = geometryFind.Geometry
             });
         }
         else
         {
             yield return(new ElementManagerWithRevisionSpecify()
             {
                 IdRevision = revision.IdRevision,
                 Version = revision.Version
             });
         }
     }
 }
コード例 #11
0
        public void CompareResources()
        {
            ComparedOpenings = new List <OpeningModel>();
            ComparedHosts    = new List <HostModel>();

            //loop through existing openings in project
            foreach (OpeningModel po in ProjectOpenings)
            {
                OpeningModel model = CloudOpenings.Where(e => e.GtbPairGuid == po.GtbPairGuid).FirstOrDefault();
                if (model == null)
                {
                    po.OpeningStatus = OpeningStatus.DeletedInCloud;
                    ComparedOpenings.Add(po);
                }
                else
                {
                    po.OpeningStatus = OpeningStatus.Unchanged;
                    if (po.LocationPoint.DistanceTo(model.LocationPoint) > 0.004) //around 1+ mm
                    {
                        po.OpeningStatus = OpeningStatus.Moved;
                    }

                    if (po.OpeningType == OpeningType.Round)
                    {
                        if (Math.Abs(po.Diameter - model.Diameter) > 0.003 || Math.Abs(po.Offset - model.Offset) > 0.003) //around 1- mm
                        {
                            if (po.OpeningStatus == OpeningStatus.Moved)
                            {
                                po.OpeningStatus = OpeningStatus.MovedAndResized;
                            }
                            else
                            {
                                po.OpeningStatus = OpeningStatus.Resized;
                            }
                        }
                    }

                    if (po.OpeningType == OpeningType.Rectangular)
                    {
                        if (Math.Abs(po.Height - model.Height) > 0.003 || Math.Abs(po.Width - model.Width) > 0.003 || Math.Abs(po.Offset - model.Offset) > 0.003) //around 1- mm
                        {
                            if (po.OpeningStatus == OpeningStatus.Moved)
                            {
                                po.OpeningStatus = OpeningStatus.MovedAndResized;
                            }
                            else
                            {
                                po.OpeningStatus = OpeningStatus.Resized;
                            }
                        }
                    }
                    po.SetCloudOpening(model);
                    ComparedOpenings.Add(po);
                }
            }

            //loop through cloud openings
            foreach (OpeningModel co in CloudOpenings)
            {
                OpeningModel model = ProjectOpenings.Where(e => e.GtbPairGuid == co.GtbPairGuid).FirstOrDefault();
                if (model == null)
                {
                    co.OpeningStatus = OpeningStatus.NewInCloud;
                    co.SetCloudOpening(co);
                    ComparedOpenings.Add(co);
                }
            }

            //loop existing hosts in project
            foreach (HostModel hm in ProjectHosts)
            {
                HostModel cloudModel = CloudHosts.Where(e => e.ElementId.IntegerValue == hm.ElementId.IntegerValue).FirstOrDefault();

                if (cloudModel == null)
                {
                    hm.HostStatus = HostStatus.DeletedInCloud;
                    ComparedHosts.Add(hm);
                }
                else
                {
                    hm.HostStatus = HostStatus.Unchanged;
                    if (Math.Abs(hm.Thickness - cloudModel.Thickness) > 0.003)
                    {
                        hm.HostStatus = HostStatus.ThicknessChanged;
                    }
                    if (hm.BoundingBoxXYZ.Min.DistanceTo(cloudModel.BoundingBoxXYZ.Min) > 0.001 || hm.BoundingBoxXYZ.Max.DistanceTo(cloudModel.BoundingBoxXYZ.Max) > 0.001)
                    {
                        if (hm.HostStatus == HostStatus.Unchanged)
                        {
                            hm.HostStatus = HostStatus.GeometryChanged;
                        }
                    }
                    ComparedHosts.Add(hm);
                }
            }

            //loop cloud hosts
            foreach (HostModel cloudHost in CloudHosts)
            {
                HostModel projectHost = ProjectHosts.Where(e => e.ElementId.IntegerValue == cloudHost.ElementId.IntegerValue).FirstOrDefault();
                if (projectHost == null)
                {
                    cloudHost.HostStatus = HostStatus.NewInCloud;
                    ComparedHosts.Add(cloudHost);
                }
            }
        }
コード例 #12
0
 public static void GetValueStringOpenningByExtensibleStorage(ref Schema schema, ref Entity entity, OpeningModel openningModel)
 {
     openningModel.IdManager = entity.Get <string>(schema.GetField(Define.CommonId));
     openningModel.IdLocal   = entity.Get <string>(schema.GetField(Define.ElementId));
     openningModel.IdDrawing = entity.Get <string>(schema.GetField(Define.DrawingId));
     //openningModel.CreateDate = entity.Get<string>(schema.GetField(Define.CreateDate));
     //openningModel.CreateUserId = entity.Get<string>(schema.GetField(Define.CreateUserId));
     openningModel.Status = entity.Get <string>(schema.GetField(Define.ElementVersionStatus));
     //openningModel.Geometry.UserID = entity.Get<string>(schema.GetField(Define.UserID));
     //openningModel.Geometry.VersionId = entity.Get<string>(schema.GetField(Define.VersionId));
     //openningModel.Geometry.RevitElementCommonId = entity.Get<string>(schema.GetField(Define.RevitElementCommonId));
     openningModel.Geometry.Geometry  = entity.Get <string>(schema.GetField(Define.Geometry));
     openningModel.Geometry.Original  = entity.Get <string>(schema.GetField(Define.Original));
     openningModel.Geometry.Direction = entity.Get <string>(schema.GetField(Define.Direction));
     openningModel.Geometry.Version   = entity.Get <string>(schema.GetField(Define.Version));
     //openningModel.Geometry.Status = Common.StringToStatus(entity.Get<string>(schema.GetField(Define.Status)));
     //openningModel.Geometry.Description = entity.Get<string>(schema.GetField(Define.Description));
     //openningModel.Geometry.UpdatedDate = entity.Get<string>(schema.GetField(Define.UpdatedDate));
 }