Здравствуйте.
Кто сможет подсказать как средствами API создать свой фильтр выбора деталей, желательно не обращаясь к файловой системе (не создавать файл с параметрами фильтра, загружать и применять его). Для чего это нужно: хочу сделать макрос, который устанавливает фильтр выбора по определенному свойству выбранной детали. Например выбрал балку в стадии 2, запускаю макрос и он устанавливает текущее значение фильтра выбора как: Деталь -> Стадия -> Равно -> 2
Включить фильтр выбора средствами API
Re: Включить фильтр выбора средствами API
Как-то так. Проблемы с кириллицей
Код: Выделить всё
ModelObjectEnumerator moe = model.GetModelObjectSelector().GetObjectsByFilter(Helpers.CreateFilterByWISerialNumber(WIPos.ToString()));
Код: Выделить всё
public static class Helpers
{
public static FilterExpression CreateFilterByWISerialNumber(string WIPos)
{
var filterExpression1 = new BinaryFilterExpression(
new PartFilterExpressions.PositionNumber(), StringOperatorType.IS_EQUAL, new StringConstantFilterExpression(WIPos));
var filterExpression2 = new BinaryFilterExpression(
new ObjectFilterExpressions.Type(), NumericOperatorType.IS_EQUAL,
new NumericConstantFilterExpression(TeklaStructuresDatabaseTypeEnum.PART));
var filterDefinition = new BinaryFilterExpressionCollection
{
new BinaryFilterExpressionItem(filterExpression1, BinaryFilterOperatorType.BOOLEAN_AND),
new BinaryFilterExpressionItem(filterExpression2)
};
return filterDefinition;
}
}
Re: Включить фильтр выбора средствами API
Спасибо, пока не разобрался как это работает, попробую вечером
Re: Включить фильтр выбора средствами API
если есть кириллица - создавайте файлики.
ЗЫ А вообще, предлагаю не использовать форумы, на которых воруют посты из других источников. Сам бы не писал тут, но народ спрашивает, а в ответ тишина от админов
ЗЫ А вообще, предлагаю не использовать форумы, на которых воруют посты из других источников. Сам бы не писал тут, но народ спрашивает, а в ответ тишина от админов
Re: Включить фильтр выбора средствами API
Решили задачу с помощью CuPo>I<ы, если кому нужен код, работает в Текле 21.1 , на более поздних нужны небольшие изменения.
Макрос устанавливает фильтр выбора, по классу (цвету) выбранной детали
// Generated by Tekla.Technology.Akit.ScriptBuilder
using Tekla.Structures.Model;
using Tekla.Structures.Model.UI;
using Tekla.Technology.Akit.UserScript;
using Tekla.Technology.Scripting;
using System.Text;
using System.IO;
namespace Tekla.Technology.Akit.UserScript
{
public class Script
{
public static void Run(Tekla.Technology.Akit.IScript akit)
{
Model model = new Model();
Tekla.Structures.Model.UI.ModelObjectSelector selected = new Tekla.Structures.Model.UI.ModelObjectSelector();
Tekla.Structures.Model.ModelObjectEnumerator manyO = (selected.GetSelectedObjects() as ModelObjectEnumerator);
manyO.MoveNext();
if (manyO.Current != null)
{
var pp = (manyO.Current as Part);
string sCLASS = "";
pp.GetReportProperty("CLASS_ATTR", ref sCLASS);
string sysPath = "";
sysPath = model.GetInfo().ModelPath;
sysPath = Path.Combine(sysPath, "attributes");
sysPath = Path.Combine(sysPath, "Anton_Class.SObjGrp");
StreamWriter FF = new StreamWriter(sysPath, false, Encoding.Default);
FF.WriteLine("TITLE_OBJECT_GROUP");
FF.WriteLine("{");
FF.WriteLine(" Version= 1.05");
FF.WriteLine(" Count= 1");
FF.WriteLine(" SECTION_OBJECT_GROUP");
FF.WriteLine(" {");
FF.WriteLine(" 0");
FF.WriteLine(" 1");
FF.WriteLine(" co_part");
FF.WriteLine(" proCLASS");
FF.WriteLine(" albl_Class");
FF.WriteLine(" ==");
FF.WriteLine(" albl_Equals");
FF.WriteLine(" " + sCLASS);
FF.WriteLine(" 0");
FF.WriteLine(" Empty");
FF.WriteLine(" }");
FF.WriteLine("}");
FF.Close();
akit.ValueChange("main_frame", "sel_filter", "Anton_Class");
}
}
}
}
Макрос устанавливает фильтр выбора, по классу (цвету) выбранной детали
// Generated by Tekla.Technology.Akit.ScriptBuilder
using Tekla.Structures.Model;
using Tekla.Structures.Model.UI;
using Tekla.Technology.Akit.UserScript;
using Tekla.Technology.Scripting;
using System.Text;
using System.IO;
namespace Tekla.Technology.Akit.UserScript
{
public class Script
{
public static void Run(Tekla.Technology.Akit.IScript akit)
{
Model model = new Model();
Tekla.Structures.Model.UI.ModelObjectSelector selected = new Tekla.Structures.Model.UI.ModelObjectSelector();
Tekla.Structures.Model.ModelObjectEnumerator manyO = (selected.GetSelectedObjects() as ModelObjectEnumerator);
manyO.MoveNext();
if (manyO.Current != null)
{
var pp = (manyO.Current as Part);
string sCLASS = "";
pp.GetReportProperty("CLASS_ATTR", ref sCLASS);
string sysPath = "";
sysPath = model.GetInfo().ModelPath;
sysPath = Path.Combine(sysPath, "attributes");
sysPath = Path.Combine(sysPath, "Anton_Class.SObjGrp");
StreamWriter FF = new StreamWriter(sysPath, false, Encoding.Default);
FF.WriteLine("TITLE_OBJECT_GROUP");
FF.WriteLine("{");
FF.WriteLine(" Version= 1.05");
FF.WriteLine(" Count= 1");
FF.WriteLine(" SECTION_OBJECT_GROUP");
FF.WriteLine(" {");
FF.WriteLine(" 0");
FF.WriteLine(" 1");
FF.WriteLine(" co_part");
FF.WriteLine(" proCLASS");
FF.WriteLine(" albl_Class");
FF.WriteLine(" ==");
FF.WriteLine(" albl_Equals");
FF.WriteLine(" " + sCLASS);
FF.WriteLine(" 0");
FF.WriteLine(" Empty");
FF.WriteLine(" }");
FF.WriteLine("}");
FF.Close();
akit.ValueChange("main_frame", "sel_filter", "Anton_Class");
}
}
}
}
phpbb3 styles
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость