Дано:
Некий проект.
Создаем новую сборку, добавляем туда этот проект в виде фрагмента, разделяем на тела.
Хочу:
Для каждого полученного тела получить XSIZE, YSIZE, ZSIZE, mass, материал
Первые три получилось получить создав переменную и в ней написать - get_cls("НазваниеТела", "XSIZE") ,
для массы - get("НазваниеТела", mass)
А как получить материал я так и не придумал.
Может есть более прямые пути для получения XSIZE и как получить материал?
Некий проект.
Создаем новую сборку, добавляем туда этот проект в виде фрагмента, разделяем на тела.
Хочу:
Для каждого полученного тела получить XSIZE, YSIZE, ZSIZE, mass, материал
Первые три получилось получить создав переменную и в ней написать - get_cls("НазваниеТела", "XSIZE") ,
для массы - get("НазваниеТела", mass)
А как получить материал я так и не придумал.
Может есть более прямые пути для получения XSIZE и как получить материал?
Код |
---|
private readonly string vtemp1 = "get{2}(\"{0}\", \"{1}\"{3})"; public double GetV(string bodyName, string valName) { var tp = valName.Contains("SIZE"); var p1 = tp ? "_lcs" : ""; var p2 = !tp ? "" : ",\"\""; vv.Expression = string.Format(vtemp1, bodyName, valName, p1, p2); return Math.Round(vv.RealValue, 3); } Variable vv = null; private void MakeList() { Document.BeginChanges("dd"); vv = Document.GetVariables().Where(w => w.Name == "test").SingleOrDefault(); if (vv == null) vv = new Variable(Document, "test", 0); foreach (var b in Document.Bodies.Cast<BodyPart>()) { if ((b.BaseOperation.Geometry.Solid.Length != 0) && (b.BaseOperation.Visible)) { System.Diagnostics.Debug.WriteLine($"{b.Name} ({GetV(b.Name, "XSIZE")}, {GetV(b.Name, "YSIZE")}, {GetV(b.Name, "ZSIZE")}) {GetV(b.Name, "mass")}"); } } Document.EndChanges(); } |