Вот значит какая у меня проблема: создана 3D модель объекта, она параметрическая. для определенных расчотов средств редактора переменных не хватило, а именно циклов :) Поетому стояла задача написать макрос под это дело. Макрос должен удалить все 3Д узлы(с ними и привязанные объекты), считать с редактора коекакие переменные, провести изменения с ними... Дальше необходимо скопировать конкретный объект с исходной (привязаной к объекту) ЛСК в расчитаную координату (в целевую ЛСК). А вот и подобрались к проблеме! Эсли на ПК реализовать этот макрос и не закрывать T-Flex, то всё работает, как только закрыть, больше макрос не будет работать. Проблему рашает: запуск файла на другом ПК, а дальше по новому, или полная перестановка программы(T-Flex). Он перестает находить ссылки на объкты :( Вот скрин ошибки и листинг макроса: в тексте выделены места где возникает подобная ошибка (самое странное, что код, то компилит, и ошибок нет) и работает всьоже, пока не закрить ;)
if (Nodes.Count>0) { ObjectArray O = new ObjectArray(); foreach (Node3D Nod in Nodes) { O.Add(Doc.GetObjectByName(Nod.Name)); } }error Doc.DeleteObjects(O, new DeleteOptions(true)); } Doc.BeginChanges("process");
///////\\\\\\\
Doc.Regenerate3D(); StringBuilder SW = new StringBuilder(); progressBar1.Minimum = 0; progressBar1.Maximum =Convert.ToInt16(Math.Round(H_Max.RealValue / Delta_H.RealValue,0)); List<double> Volumes = new List<double>(100); {error List<LCS> LCSS = new List<LCS>(5); foreach (LCS L in Doc.LCSs) { if (L.ID == 0x6C000008) }error LCSS.Add(L); }
for (int i = 0; i < H_Max.RealValue / Delta_H.RealValue; i++) { Height = Height + Delta_H.RealValue;
h.Expression = Height.ToString(); Doc.Regenerate3D(); Volume = Math.Round(Doc.FindVariable("V_bytulki_kor").RealValue, 2); if (Check(Volume)) { if (Volumes.Contains(Volume) == false) { if(Volume != V_Max.RealValue) { CoordinateNode3D Point = new CoordinateNode3D(Doc); Point.X = L1.RealValue - t.RealValue; Point.Y = 0; Point.Z = -(H1.RealValue - t.RealValue) + Height; PointsLCS P = new PointsLCS(Doc); P.PointToOrigin = Point.Geometry.Point; {error CopyOperation2 copy = new CopyOperation2(Doc); copy.Operations.Add((Operation)Doc.GetObjectByID(0x31000037)); copy.SourceLCS = LCSS[0]; }error copy.TargetLCS = (LCS)P; Volumes.Add(Volume);
:applanse: У меня стоит задача: 1. создать диалогое окно, переменные...; 2. макрос должен изменять один из фалов зборки (открить и заменить внешний фрагмент); 3. запустить задачу динамического анализа с определьонными параметрами моделирования; 4. результаты моделирования (графики) считать как масив исходных данных и произвести математические расчоты; 5. результат сгенерировать в текстовый файлик.
С програмированием у меня так себе, но всё это я реализовал внутренними функциями и переменными, теперь НУЖНО привести это к человеческому виду. Помогите хто чем сможет, С# я только начал учить, вроди не стою на месте. Желательно примеры, фрагменты кода, пишыте на мыло, буду рад. Зарание благодарен.