From another thread:
;;; AddPstyletoDict.lsp
;;;
;;; Joe Funk, Sept.29/01; last revised Nov.01-02.
;;;
;;; Force an entry into the plotStyleName dictionary using ENTMAKEX
;;; and ENTMOD. Eg. create an entry for a non-existent plotstyle, or for
;;; a plotstyle not yet applied to an object in the dwg.
;;; Suggested in the following posting by Art Cooney:
;;;<
;;;From: "Art Cooney"
;;;Subject: PS
;;;Date: Monday, April 17, 2000 11:43 PM
;;;
;;; AcDbPlaceHolder is a "dataless" object type that's simply meant to
;;;be used in the plotStyleName dictionary in order to have an object
;;;(and therefore an objectId) to associate with a plotStyleName.
;;;
;;; You should be to use (entmakex) to create one and then use (entmod)
;;;on the dictionary you want to add it to in order to let the dictionary
;;;know that it's the new owner.
;;;>
;;;
;;;================================================ ======================
;;;
;;; Function: addpstyletodict
;;;
;;; Add an entry for a plotstyle to the ACAD_PLOTSTYLENAME dictionary.
;;;
;;;------------------------------------------------------ ----------------
;;;
(defun addpstyletodict ( PSTYLENAME /
PSTYDICT-INFO PSTYDICT-ENAME PS-ENAME XLIST
NEW-PLACEHOLDER TMP-DATLST 340PAIR 100PAIR
NEW-PSTYDICT
)
(setq
PSTYDICT-INFO (dictsearch (namedobjdict) "ACAD_PLOTSTYLENAME")
PSTYDICT-ENAME (cdr (assoc -1 PSTYDICT-INFO))
;; Make an entity definition data list suitable for ENTMAKEX.
;; Start by getting any plotstyle ename from the existing
;; dictionary ... first one found will do:
PS-ENAME (cdr (assoc 350 PSTYDICT-INFO))
;; get the 'template' for a pstyle definition:
XLIST (cdr (entget PS-ENAME))
;; create placeholder (returns ename for new pstyle):
NEW-PLACEHOLDER (entmakex XLIST)
;; Revise the ACAD_PLOTSTYLENAME dictionary definition: insert
;;new (3 . ) and (350 . )
;;before final (100 . <>) and (340 . <>)
TMP-DATLST (cddr (reverse PSTYDICT-INFO))
340PAIR (last PSTYDICT-INFO)
100PAIR (nth (- (length PSTYDICT-INFO) 2) PSTYDICT-INFO)
NEW-PSTYDICT (cons (cons 3 PSTYLENAME) TMP-DATLST)
NEW-PSTYDICT (cons (cons 350 NEW-PLACEHOLDER) NEW-PSTYDICT)
NEW-PSTYDICT (cons 100PAIR NEW-PSTYDICT)
NEW-PSTYDICT (cons 340PAIR NEW-PSTYDICT)
NEW-PSTYDICT (reverse NEW-PSTYDICT)
)
;; Art: "let the dictionary know that it's the new owner.":
(entmod NEW-PSTYDICT)
)
;;; Tests:
;;;(addpstyletodict "Yahoo")
;;;(addpstyletodict "Houynhym")
;;;(princ (dictsearch (namedobjdict) "ACAD_PLOTSTYLENAME"))