本帖最后由 作者 于 2008-3-8 22:01:32 编辑
楼主的机子不是很好吧? 可能是图像里面有非常多的, 上万个, 甚至更多的图层过滤设置. 我也不知道这些东西一开始是从哪里出来的, 最初也是从这里看到的. 好像是日本的项目似的, 因为其中有些过滤名有日文的味道. 近来发现我们单位里面的些图形里面竟然也有了! 楼主在打开层对话框后, 如果左边的列表有一大堆的东西的话, 就是了. 可以用下面的 lsp 来删除, 只是, 不知道什么原因, 我这里需要运行两次 DelLayFlt 命令, 第一次提示 Automation 错误. 第二词就正常删除了层过滤. 我也是第一次写 vla 类的 lsp, 所以, 可能有不妥之处 ; ; 删除图形的所有层过滤设置 ; by zwh ; 最后修改: 15:40 2007-01-29 ;
(princ "\n删除当前图形的所有层过滤设置.\n") (vl-load-com); load visual lisp extension (defun C:DelLayFlt ( / xdoc xlayers xDic xDic1 xc xi ) (setq xdoc (vla-get-ActiveDocument (vlax-get-Acad-Object)) xlayers (vla-get-Layers xdoc) ) (if (= (vla-get-HasExtensionDictionary xlayers) ':vlax-true) (progn (setq xDic (vla-GetExtensionDictionary xlayers) xc (vla-get-Count xDic) xi 0 ) (while (< xi xc) (setq xDic1 (vla-Item xDic xi) xi (1+ xi)) (if (= (vla-get-Name xDic1) "ACAD_LAYERFILTERS") (progn (princ "Layers' handle: ") (princ (vla-get-Handle xlayers)) (princ "\nFilters' handle: ") (princ (vla-get-Handle xDic1)) (princ "\nNumber of filters: ") (princ (vla-get-count xDic1)) (vla-Remove xDic (vla-get-Name xDic1)) (setq xi (1+ xc)) ) ; end of progn(it's ACAD_LAYERFILTERS) ) ; end of if(该词典项是层过滤器?) ) ; end of while(检查层组对象的没有词典项) (if (= xi (1+ xc)) (princ "\n层过滤器已经被删除. ") (princ "\n无层过滤设置. ") ) ) ; end of progn(层有词典) (princ "该图形文件层组对象没有词典属性! ") ) ; end of if(层有词典) (princ) ) ; end of C:DelLayFlt |