/// <summary> /// /// </summary> /// <param name="DocObj">Передаем null, инициализируеться в методе</param> /// <param name="_object"></param> private void CreatDoc(ref IDBObject DocObj, MyStruct _object) { DocObj = null; IDBObjectCollection coll = Session.GetObjectCollection((int)_object.IPsDocType); DocObj = coll.Create((int)_object.IPsDocType); // добавление создаваемого обьекта в Документы/Конструкторские/Электронные модели IDBAttribute atrName = DocObj.Attributes.FindByGUID(new Guid(SystemGUIDs.attributeName)); //наименование документа IDBAttribute atrDesignation = DocObj.Attributes.FindByGUID(new Guid(SystemGUIDs.attributeDesignation)); //обозначение документа atrName.Value = _object.Name; atrDesignation.Value = _object.Designition; var res = createdDocs.Where(x => x.Key.Equals(_object.Designition)).ToList(); if (res.Count == 0) { createdDocs.Add(_object.Designition, DocObj); } }
/// <summary> /// /// </summary> /// <param name="DocObj">При записи в БД нового обьекта, DocObj это новый обьект созданный предварительным вызовом CreateDoc(); при добавлении файла к существующей сборке, DocObj - обьект сборки"</param> /// <param name="filePath"></param> private void Blob(ref IDBObject DocObj, MyStruct _object) { if (_object.Flag == 5)// пишем Blob не в новый документ, а в сборку { DocObj = createdDocs.Where(x => x.Key.Equals(_object.RefAsmName)).Select(y => y.Value).First(); } int attrFile = MetaDataHelper.GetAttributeTypeID(new Guid(SystemGUIDs.attributeFile));// атрибут "Файл" IDBAttribute fileAtr = DocObj.GetAttributeByID(attrFile); if (fileAtr.Values.Count() >= 1) { fileAtr.AddValue(_object.Path); } using (var ms = new MemoryStream(File.ReadAllBytes(_object.Path))) { BlobInformation blInfo = new BlobInformation(0, 0, DateTime.Now, _object.Path, ArcMethods.NotPacked, null); BlobProcWriter writer = new BlobProcWriter(fileAtr, (int)AttributableElements.Object, blInfo, ms, null, null); writer.WriteData(); } }
/// <summary> /// Создает изделие /// </summary> /// <param name="productType"></param> /// <param name="parentID">ID документа на который создаеться изделие</param>//prt private void CreateProduct(ref IDBObject DocObj, MyStruct _object) { IDBObjectCollection coll = Session.GetObjectCollection((int)_object.IPsProductType); IDBObject newObj = coll.Create((int)_object.IPsProductType); //берем аттрибуты объекта IDBAttribute atrDesignation = newObj.GetAttributeByGuid(new Guid(SystemGUIDs.attributeDesignation)); //обозначение IDBAttribute atrName = newObj.GetAttributeByGuid(new Guid(SystemGUIDs.attributeName)); //наименование atrDesignation.Value = _object.Designition; atrName.Value = _object.Name; newObj.CommitCreation(true); IDBObject newObjChecked = newObj.CheckOut(); IDBRelationCollection colRel = Session.GetRelationCollection(1004); IDBRelation relation = colRel.Create(newObjChecked.ObjectID, DocObj.ID); // создаем связь между изделием и докумиентом, if (relation == null) { MessageBox.Show("Failed create the relation of type " + colRel.RelationTypeID.ToString()); } }