• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Добавление переменной в созданную подсборку

Автор Lemieux, Вчера в 16:12:48

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Lemieux

Всех приветствую. Кто-то знает как добавить переменную в созданную подсборку?
Пытаюсь добавить вот так, но ничего не выходит.

IPart7 assembly = parts.CreateDocumentEx("Сборка", DocumentTypeEnum.ksDocumentAssembly);
IKompasDocument3D assemblyDocument = assembly.BeginEdit(assembly.GetOpenDocumentParam());
IPart7 assemblyTopPart = assemblyDocument.TopPart;
IVariable7 ltVariable = assemblyTopPart.AddVariable("LT", 10, "");


Lemieux

#1
Короче. Походу как обычно очередной баг. Обошёл этот момент с помощью костыля.

Lemieux

Полный код обхода

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. Потом уже нахожу созданную переменную.