Как тут на днях выяснилось, в пылу кодинга неправильно понял смысл метода 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" "Точка планировки" "Точка планировки") "ГП" ) ) )
Комментариев нет:
Отправить комментарий