Доступность редактирования свойства докумнта.

Автор Student2025, 24.04.26, 16:38:59

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

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

Student2025

ДВС.

Есть свойство iproperty.ReadOnly однако он не совсем корректно выводит результат доступности редактирования свойств документа.
Выводит: 1) True - могу редактировать свойство; 2) False - могу редактировать свойство; 3) True - НЕмогу редактировать свойство; 4) False - НЕмогу редактировать свойство.

Задача: 1) получить свойство и определить установлено ли возможность редактирования изначально; 2) определить наложено ли на него свойство "только для чтения"; 3) можно ли его редактировать с учетом наложений ?

from win32com.client import Dispatch
from ksConstV24 import constants as const_2d_
from ksConst3DV24 import constants as const_3d_
import KompasApi5V24 as KAPI5
import KompasApi7V24 as KAPI7


api5_ = Dispatch('Kompas.Application.5', None, KAPI5.KompasObject.CLSID)
api7_ = Dispatch('Kompas.Application.7')
iDoc = api7_.ActiveDocument
property_mng = KAPI7.IPropertyMng(api7_.Application)
properties = property_mng.GetProperties(iDoc)
property_keeper = KAPI7.IPropertyKeeper(iDoc)

for iproperty in properties:

    if iproperty.DataType == const_2d_.ksPropertyDataTypeString:
        change = property_keeper.SetPropertyValue(iproperty, "пример", True )

        iproperty.Update()
       
        print(iproperty.ReadOnly)
       
        value = property_keeper.GetPropertyValue(iproperty, "", True, True)[1]
        if value:
            print(f"{iproperty.Name}, {iproperty.Id}, {value}")
        else:
            print(f"{iproperty.Name}, {iproperty.Id}, None")


И еще странность что под ksPropertyDataTypeString попадают числа, даты.

Student2025

SetPropertyValue тоже рандомно выводит результат редактирования.

Student2025

#2
Вот сейчас я задал свойство документа - привязка к переменной и хочу добавить для нее свойство "только для чтения" что бы обработчик случайно не удалил его. И как это сделать?