;By ALIN 适用于acad2004-
- ;;;隔离当前图层
- (defun C:ICL(/ app doc Layers)
- (setq app (vlax-get-acad-object)
- doc (vla-get-activeDocument app)
- Layers (vla-get-layers doc)
- )
- (if (member "NewLayState" (GetLayStateList app doc))
- (DelLayState "NewLayState" app doc)
- )
- (LayerStateSave "NewLayState" app doc)
- (vlax-for Layer Layers
- (if (= (vla-get-name layer) (getvar "CLAYER"))
- (progn
- (vla-put-layerOn Layer :vlax-true)
- (vla-put-Lock Layer :vlax-false)
- )
- (progn
- (vla-put-layerOn Layer :vlax-false)
- (vla-put-Lock Layer :vlax-true)
- )
- )
- )
- (mapcar 'vlax-release-object (list app doc Layers))
- (princ)
- )
- ;;恢复所有图层先前状态
- (defun C:RES (/ app doc)
- (setq app (vlax-get-acad-object)
- doc (vla-get-activeDocument app)
- )
- (if (member "NewLayState" (GetLayStateList app doc))
- (LayerStateRestore "NewLayState" app doc)
- (alert "Cannot find "NewLayState"!")
- )
- (mapcar 'vlax-release-object (list app doc))
- (princ)
- )
- ;;------------------------------------------------------------
- (defun DelLayState (LSMName app doc / LayStateList oLSMDict)
- (setq oLSMDict
- (vla-item (vla-getExtensionDictionary (vla-get-layers doc))
- "ACAD_LAYERSTATES"
- )
- )
- (vla-delete (vla-item oLSMDict LSMName))
- (vlax-release-object oLSMDict)
- )
- ;;------------------------------------------------------------
- (defun GetLayStateList (app doc / LayStateList oLSMDict)
- (setq oLSMDict
- (vla-item (vla-getExtensionDictionary (vla-get-layers doc))
- "ACAD_LAYERSTATES"
- )
- )
- (vlax-for each oLSMDict
- (setq LayStateList (cons (vla-get-name each) LayStateList))
- )
- (vlax-release-object oLSMDict)
- (reverse LayStateList)
- )
- ;;------------------------------------------------------------
- (defun LayerStateSave (LSMName app doc / oLSM)
- (setq oLSM
- (vla-getinterfaceobject app "AutoCAD.AcadLayerStateManager.16")
- )
- (vla-setdatabase oLSM (vla-get-database doc))
- (vla-save oLSM LSMName acLsAll)
- (vlax-release-object oLSM)
- )
- ;;------------------------------------------------------------
- (defun LayerStateRestore (LSMName app doc / oLSM)
- (setq oLSM
- (vla-getinterfaceobject app "AutoCAD.AcadLayerStateManager.16")
- )
- (vla-setdatabase oLSM (vla-get-database doc))
- (vla-restore oLSM LSMName)
- (vlax-release-object oLSM)
- )
|