Не удается поменять стиль линии на ассоциативном виде чертежа

Автор lavgirb, 09.12.25, 10:55:58

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

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

lavgirb

Не удается поменять стиль линии на тонкий на ассоциативном виде чертежа.
Может быть есть какие-то нюансы?

Dim oLineSegm As KompasAPI7.LineSegment
...
MsgBox oLineSegm.Style ' = 1 (ksCSNormal)
oLineSegm.Style = ksCSThin
MsgBox oLineSegm.Style ' = 2 (ksCSThin)
oLineSegm.Update
MsgBox oLineSegm.Style ' = 1 (ksCSNormal)
...
Как был стиль Основная, так Основная и остается.

У линии, созданной вручную, стиль меняется.

p3452

- Изменить, конечно, можно, но "жить" эти изменения будут только до очередного перестроения Документа!
Помните ситуацию с "Линейными выносками"?
Все "ассоциативное" - строится автоматически, изменения внесенные пользователем - игнорируются...

lavgirb

Цитата: p3452 от 09.12.25, 13:07:21- Изменить, конечно, можно, но "жить" эти изменения будут только до очередного перестроения Документа!
Помните ситуацию с "Линейными выносками"?
Все "ассоциативное" - строится автоматически, изменения внесенные пользователем - игнорируются...

Да, но вручную все меняется без проблем. И живет...
Если подскажете как изменить, я бы попробовал.
+ Благодарностей: 1

p3452

Обычным способом, как и у Вас:
if (iDrawingObject.DrawingObjectType == DrawingObjectTypeEnum.ksDrLineSeg)
{
ILineSegment line = iDrawingObject as ILineSegment;
if (line == null)
MessageBox.Show("line == null");
line.Style = 2;
if (!line.Update())
MessageBox.Show("Не удалось обновить Отрезок");
}

p/s: и ЭТО действительно "живет" и после перестроения и даже после открытия, закрытия документа - разрыв мозга (для меня!)

lavgirb

Цитата: p3452 от 09.12.25, 14:42:23Обычным способом, как и у Вас:
У меня не менялась линия из изображения компонента на ассоциативном виде.
Линия созданная вручную, меняет стиль. А у Вас линия какая? Можете уточнить?

p3452

Код на API5, для тех случаев с которыми API7 не справляется:
// KompasObject kompas
// IDrawingObject1 drawingObject1
// ILineSegment lineSeg
if (drawingObject1.IsInAssociationView) // Объект является ассоциативным
{
ksDocument2D ksdoc = (ksDocument2D)kompas.ActiveDocument2D();
ksdoc.ksSetObjectStyle(lineSeg.Reference, 2);
}
+ Благодарностей: 1

lavgirb