Как тут на днях выяснилось, в пылу кодинга неправильно понял смысл метода SetUserDefinedPropertyClassification у группы точек. Я думал, что текущем сеансе работы с чертежом нужно вызвать эту функцию для инициализации доступа к custom-свойствам точек
Оказалось, что это всего лишь обертка для этого свойства "Классификация" группы точек:

Поэтому достаточно настроить нужную группу точек один раз (очевидно при создании). Возможные значения свойства:
None (нет custom-свойств), All (классификации custom-свойств) и
custom (подключена только одна классификация)
;; создание группы точек
(defun pzm-AddPointGroup (Name RawDescFilter PointStyle PointLabelStyle / grp)
(cond
((setq grp (pzm-getPointGroup Name)))
(T (setq grp (m> (pzm-PointGroups) 'Add Name))
(putprop> (prop> grp 'QueryBuilder) 'IncludeRawDescriptions RawDescFilter)
(putprop> grp 'PointStyle (item> 'PointStyles PointStyle))
(putprop> grp 'PointLabelStyle (item> 'PointLabelStyles PointLabelStyle))
(putprop> grp 'OverridePointStyle -1)
(putprop> grp 'OverridePointLabelStyle -1)
) )
grp )
;; Для доступа к custom-свойствам точек группа точек (AeccPointGroup)
;; должна иметь включенную классификацию
(defun pzm-InitPointCustomProps (grp ClassifName / udp)
;; ClassifName - наша группа классификации (в шаблоне)
(setq udp (item> 'PointUserDefinedPropertyClassifications ClassifName))
(if (not udp) (pzm-ExitWithMsg
(strcat "\nОшибка! Классификация пользовательских свойств \""
ClassifName "\" не найдена") ) )
;; aeccUDPClassificationApplyNone = 0, aeccUDPClassificationApplyAll = 1,
;; aeccUDPClassificationApplyCustom = 2
(m> grp 'SetUserDefinedPropertyClassification 2 udp) )
;; вернуть текущую классификацию (T|nil|Name)
(defun pzm-GetPointGroupClassification (grp / Classif ClassifType)
(setq Classif (m> grp 'GetUserDefinedPropertyClassification 'ClassifType))
(cond
((= ClassifType 0) nil) ;; None
((= ClassifType 1) T) ;; All
((= ClassifType 2) (prop> Classif 'Name)) ;; Custom, return classification name
) )
;; ну и наконец пример создания группы точек с включенной классификацией "ГП":
(pzm-InitPointCustomProps
(pzm-AddPointGroup "Проектные_кр1" "кр1" "Точка планировки" "Точка планировки")
"ГП" ) ) )
Комментариев нет:
Отправить комментарий