SaprOnOff,
Валерий Степаненко, спасибо за активность! Видать есть ещё живые)
Задача изменилась и данный подход более не актуален. Разбираться дальше не требовалось
Кому интересно ниже привожу код, которым генерился *.step. Да по сути его элементарно парсить и восстановить структуру, но атрибуты/свойства/связи теряются
[CODE] private string STEPText;
public override void Run()
{
STEPText=String.Empty;
var progrDialog = new ProgressDialog(bwRun);
progrDialog.ShowDialog();
var saveFileDialog = new SaveFileDialog { Filter = "STEP Файл| *.stp|Все файлы|*.*" };
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
var file = new StreamWriter(saveFileDialog.FileName, false, Encoding.GetEncoding(1251));
file.Write(STEPText);
file.Close();
}
}
private bool bwRun(BackgroundWorker bw)
{
var root = Context.ReferenceObject as NomenclatureObject;
if (root == null) return false;
var prod = new STEPLib.STEPFile(root.SystemFields.Id, root.Name, ClientView.Current.UserName, "Компания", "SYSTEM");
prod.AddDoc(root.SystemFields.Id, root.Name, root.Denotation, 0, 0, 0, 1);
var links = root.Children.RecursiveLoadHierarchy().Cast<NomenclatureHierarchyLink>();
bw.ReportProgress(links.Count(),"set");
int curent = 1;
foreach (var link in links)
{
var childrenId = link.ChildObjectId;
var name = link.ChildObject.Name;
var denotation = ((NomenclatureObject)link.ChildObject).Denotation;
var parentId = link.ParentObjectId;
bw.ReportProgress(curent, string.Format("{0} [{1}]",name,denotation));
if (!prod.ChToDup(childrenId)) prod.AddDoc(childrenId, name, denotation, parentId, -1, link.Amount.GetInt32());
curent++;
}
STEPText = prod.GenStep();
return true;
}
[/CODE]