I have founfd the original code of Bricscad:
;;================================================================================
;;| Copyright © Menhirs NV. All rights reserved. |
;;================================================================================
;; VLE Library Emulation for AutoCAD 2000 and higher, and for all BricsCAD versions
;;================================================================================
;;| FUNCTION : vle-entmod |
;;|------------------------------------------------------------------------------|
;;| (vle-entmod dxf ename value) |
;;| |
;;| modifies the entity's property value for specified DXF group code; |
;;| in typical case, this is a high-performance replacement for usual code like |
;;| (entmod (subst (cons dxf value) olditem lst)) |
;;| |
;;| Arguments : 'dxf' the DXF group code to set the new value for |
;;| : 'ename' the entity's ename |
;;| : 'value' new value to be set for the entity's property |
;;| |
;;| Return : T if the entity's value has been updated (or is identical) |
;;| NIL if updating the entity's DXF value failed |
;;| |
;;| Example : (vle-entmod 62 entity 112) sets the colour index as 112 |
;;================================================================================
(if (not vle-entmod)
(defun vle-entmod ( dxf ename value / olditem lst )
(if (setq lst (entget ename))
(if (setq olditem (assoc dxf lst))
(if (not (equal value (cdr olditem)))
(and (entmod (subst (cons dxf value) olditem lst)))
t ;; new value is same as current value, do not update, to keep performance
)
(and (entmod (append lst (list (cons dxf value)))))
)
)
)
)
So, it use always the old method with subst...