limbir
Спасибо, что откликнулись, то что я скидывала( где присваивалось значение "18") была просто тестовой функцией для проверки. На самом деле я хочу сортировать все изделия по категориям ( по свойству <22147>) ( т.е : Прочие изделия,Детали, Материалы и т.д).Затем, для изделий категории "Детали" присваивать значения позиции легенды от 1 до 100, для материалов от 101 до 200 и т.д. Просто ключевой момент, что я работаю именно с ИЗДЕЛИЯМИ, а вы мне показали на примере с function. Что я уже сделала:
Код: Выделить всё
Вот таким образом получаю изделия по категориям (входной параметр -название категории: private List<Article> GetArticlesByCategory(string category)
{
var currentProject = new ProjectManager().CurrentProject;
Article[] articles = currentProject.Articles;
List<Article> articleOfCatrgory = new List<Article>();
foreach(var article in articles)
{
if (article.Properties.ARTICLE_FREE_DATA_VALUE[2].ToString(ISOCode.Language.L___) == category)
{
articleOfCatrgory.Add(article);
}
}
return articleOfCatrgory;
}
Затем я сортирую изделия по алфавиту
Код: Выделить всё
public List<Article> SortByAlphabet()
{
List<Article> articles = this.GetArticlesByCategory("Материалы");
ShowArticles(articles);
for (int i = 0; i < articles.Count; i++)
{
for (int j = i+1; j < articles.Count; j++)
{
if (String.Compare(articles[i].Properties.ARTICLE_DESCR1.ToString(ISOCode.Language.L___),articles[j].Properties.ARTICLE_DESCR1.ToString(ISOCode.Language.L___))>0)
{
Article tempArticle = articles[i];
articles[i] = articles[j];
articles[j] = tempArticle;
}
}
}
// MessageBox.Show(Convert.ToString(articles.Count));
return articles;
}
Затем я изменяю позицию легенд
Код: Выделить всё
public void RestructLegendItem()
{
var currentProject = new ProjectManager().CurrentProject;
List<Article> articleSorts = SortByAlphabet();
DMObjectsFinder oDMO = new DMObjectsFinder(currentProject);
ArticleReferencesFilter aRFilter = new ArticleReferencesFilter();
List<ArticleReference> arrAR = new List<ArticleReference>();
arrAR = oDMO.GetArticleReferences(aRFilter).ToList<ArticleReference>();
foreach (var artSor in articleSorts)
{
SetNewLegendPosition(arrAR, artSor);
}
}
Последний раз редактировалось
AGorskiy 18 мар 2015, 14:10, всего редактировалось 1 раз.
Причина: цитата лишняя, вы отвечаете сразу за этим сообщением, хватило бы и просто обращения