Всех приветствую. Кто-то знает как добавить переменную в созданную подсборку?
Пытаюсь добавить вот так, но ничего не выходит.
IPart7 assembly = parts.CreateDocumentEx("Сборка", DocumentTypeEnum.ksDocumentAssembly);
IKompasDocument3D assemblyDocument = assembly.BeginEdit(assembly.GetOpenDocumentParam());
IPart7 assemblyTopPart = assemblyDocument.TopPart;
IVariable7 ltVariable = assemblyTopPart.AddVariable("LT", 10, "");
Короче. Походу как обычно очередной баг. Обошёл этот момент с помощью костыля.
Полный код обхода
IPart7 assembly = parts.CreateDocumentEx("Сборка", DocumentTypeEnum.ksDocumentAssembly);
IKompasDocument3D assemblyDocument = assembly.BeginEdit(assembly.GetOpenDocumentParam());
IPart7 assemblyTopPart = assemblyDocument.TopPart;
IAuxiliaryGeomContainer assemblyAuxiliaryContainer = assembly as IAuxiliaryGeomContainer;
ILocalCoordinateSystems assemblyLocalCoordinateSystems = assemblyAuxiliaryContainer.LocalCoordinateSystems;
ILocalCoordinateSystem assemblyLocalCoordinateSystem = assemblyLocalCoordinateSystems.Add();
assemblyLocalCoordinateSystem.Name = "ЛН";
assemblyLocalCoordinateSystem.ParameterType = ksPoint3DTypeEnum.ksPDisplace;
IPoint3DParamDisplace assemblyPointDisplace = assemblyLocalCoordinateSystem.Parameters as IPoint3DParamDisplace;
assemblyPointDisplace.SetAssociationVertex(dinRailPartLocalCoordinateSystem);
assemblyPointDisplace.SetGuidingObject(dinRailPartLocalCoordinateSystem.DefaultObject[ksObj3dTypeEnum.o3d_axisOX]);
assemblyLocalCoordinateSystem.Update();
IVariable7 distanceVariable = assemblyLocalCoordinateSystem.Owner.Variables[false, true][4] as IVariable7;
distanceVariable.Expression = "LT*-1";
assemblyLocalCoordinateSystem.Update();
assembly.EndEdit(false);
assemblyTopPart.Update();
object v = assemblyTopPart.Owner.Variables[false, true];
IVariable7 variable = assemblyTopPart.Owner.Variables[false, true] as IVariable7;
variable.Expression = "10";
variable.External = true;
assemblyTopPart.Update();
Наткнулся чисто случайно. Видимо, когда КОМПАС парсит выражение из переменной и встречает неизвестное имя переменной, он создаёт её автоматически.
1. Создаётся ЛСК.
2. Получаю доступ к автоматически созданным переменным этой ЛСК.
3. Пишу выражение в нужную переменную.
4. Потом уже нахожу созданную переменную.