有点离题,但仍然相关。
FWIW,从技术上讲,你不需要用entmake在数据库中搜索图层名。但是,如果您需要决定使用ENTMAKE或ENTMOD,您会这样做:
- (defun DSTYLE3_LAYER_CREATE (LNAM$ LCLR# LTYP$ LWGT# / #prog)
- (if (null (tblsearch "layer" LNAM$))
- (set '#prog (lambda ( x ) (entmake x)))
- (set '#prog (lambda (x / ent y)
- (setq ent (entget (tblobjname "LAYER" LNAM$)))
- (foreach y x
- (if (not (member (car y) '(0 100 2)))
- (setq ent (subst y (assoc (car y) ent) ent))))
- (entmod ent) )))
- (#prog
- (list
- (cons 0 "LAYER")
- (cons 100 "AcDbSymbolTableRecord")
- (cons 100 "AcDbLayerTableRecord")
- (cons 2 LNAM$)
- (cons 6 LTYP$)
- (cons 62 LCLR#)
- (cons 70 0)
- (cons 290 1)
- (cons 370 LWGT#)
- )
- )
- (princ)
- )
所以用这个。。。
- (DSTYLE3_LAYER_CREATE "Test-Layer" 1 "Continuous" 18)
- ;; would create the layer
- (DSTYLE3_LAYER_CREATE "Test-Layer" 2 "Continuous" 18)
- ;; would override the current layer def.
|