/// <summary> /// Получение наименования из атрибута с установкой значения "Есть сталь" /// </summary> public static void GetSpecificationItemNameFromAttr(mpProductInt.Specification.SpecificationItem specificationItem, string attrValue) { var hasSteel = false; if (attrValue.Contains("$") & attrValue.Contains("?")) { var splitStr = attrValue.Split('$'); if (splitStr.Length == 4) { try { specificationItem.HasSteel = true; specificationItem.IsVisibleSteel = true; specificationItem.BeforeName = splitStr[0]; specificationItem.TopName = splitStr[1]; specificationItem.AfterName = splitStr[3]; specificationItem.SteelDoc = splitStr[2].Split('?')[0]; specificationItem.SteelType = splitStr[2].Split('?')[1]; hasSteel = true; } catch { hasSteel = false; } } } if (!hasSteel) { specificationItem.HasSteel = false; specificationItem.IsVisibleSteel = false; specificationItem.SteelType = string.Empty; specificationItem.SteelDoc = string.Empty; specificationItem.BeforeName = attrValue; specificationItem.AfterName = string.Empty; specificationItem.TopName = string.Empty; } }
/// <summary> /// Получение "Продукта" из атрибутов блока /// </summary> /// <param name="tr">Transaction</param> /// <param name="objectId">Block id</param> public static mpProductInt.Specification.SpecificationItem GetProductFromBlockByAttributes(Transaction tr, ObjectId objectId) { var blk = tr.GetObject(objectId, OpenMode.ForRead) as BlockReference; if (blk != null) { // Если это блок if (blk.AttributeCollection.Count > 0) { var mpPosition = string.Empty; var mpDesignation = string.Empty; var mpName = string.Empty; var mpMass = string.Empty; var mpNote = string.Empty; foreach (ObjectId id in blk.AttributeCollection) { var attr = tr.GetObject(id, OpenMode.ForRead) as AttributeReference; if (attr != null) { if (attr.Tag.ToLower().Equals("mp:позиция") || attr.Tag.ToLower().Equals("mp:position")) { mpPosition = attr.TextString; } if (attr.Tag.ToLower().Equals("mp:обозначение") || attr.Tag.ToLower().Equals("mp:designation")) { mpDesignation = attr.TextString; } if (attr.Tag.ToLower().Equals("mp:наименование") || attr.Tag.ToLower().Equals("mp:name")) { mpName = attr.TextString; } if (attr.Tag.ToLower().Equals("mp:масса") || attr.Tag.ToLower().Equals("mp:mass")) { mpMass = attr.TextString; } if (attr.Tag.ToLower().Equals("mp:примечание") || attr.Tag.ToLower().Equals("mp:note")) { mpNote = attr.TextString; } } } double?mass = double.TryParse(mpMass, out var d) ? d : 0; var specificationItem = new mpProductInt.Specification.SpecificationItem( string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, mass); GetSpecificationItemNameFromAttr(specificationItem, mpName); specificationItem.Designation = mpDesignation; specificationItem.Position = mpPosition; specificationItem.Note = mpNote; return(specificationItem); } } return(null); }