明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1508|回复: 3

[求助]打开或者关闭图层、设置输出打印格式

[复制链接]
发表于 2006-11-9 00:16 | 显示全部楼层 |阅读模式

我想写一个小的lisp程序,功能是关闭所有图层、打开所有图层或者打开某一指定的图层!可惜我是新手,一点头绪都没有,请各位大侠给个思路,应该用那些函数,以及怎么用!

还有我想写一个输出打印的小程序,格式是:

请各位大侠指点迷经啊,先跪谢拉!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2006-11-10 11:43 | 显示全部楼层

请斑竹、大侠帮忙啊!

怎么没人理我啊?

是不是太简单拉?

 

发表于 2006-11-10 17:59 | 显示全部楼层
给你一个自己搞的!第二个问题不知道什么意思,解释一下!
  1. ;;;打开所有关闭的图层
  2. (DEFUN C:LAO (/ ACADDOCUMENT ACADOBJECT LAYERSOBJ)
  3.   (VL-LOAD-COM)
  4.   (SETQ ACADOBJECT (VLAX-GET-ACAD-OBJECT))
  5.   (SETQ ACADDOCUMENT (VLAX-GET-PROPERTY ACADOBJECT 'ACTIVEDOCUMENT))
  6.   (SETQ LAYERSOBJ  (VLA-GET-LAYERS ACADDOCUMENT ))
  7.   (VLAX-FOR LAY LAYERSOBJ
  8.          (VLA-PUT-LAYERON  LAY  :VLAX-TRUE)
  9.   )
  10.   (PRINC)
  11. )
  12. ;;;关闭所有图层
  13. (DEFUN C:LAF (/ ACADDOCUMENT ACADOBJECT LAYERSOBJ)
  14.   (VL-LOAD-COM)
  15.   (SETQ ACADOBJECT (VLAX-GET-ACAD-OBJECT))
  16.   (SETQ ACADDOCUMENT (VLAX-GET-PROPERTY ACADOBJECT 'ACTIVEDOCUMENT))
  17.   (SETQ LAYERSOBJ  (VLA-GET-LAYERS ACADDOCUMENT ))
  18.   (VLAX-FOR LAY LAYERSOBJ
  19.          (VLA-PUT-LAYERON  LAY  :VLAX-false)
  20.   )
  21.   (PRINC)
  22. )
  23. ;;;关闭选取实体所在层
  24. (DEFUN C:LF (/      ACADDOCUMENT         ACADOBJECT     ENAME
  25.          INDEX     LAYER         LAYERLST     LAYERSOBJ
  26.          SS         VL_ENAME
  27.         )
  28.   (VL-LOAD-COM)
  29.   (DEFUN *$MYERROR$* (MSG)
  30.     (SETQ *ERROR* &OLDERR&)
  31.     (PRINC)
  32.   )
  33.   (SETQ &OLDERR& *ERROR*)
  34.   (SETQ *ERROR* *$MYERROR$*)
  35.   (SETQ ACADOBJECT (VLAX-GET-ACAD-OBJECT))
  36.   (SETQ ACADDOCUMENT (VLAX-GET-PROPERTY ACADOBJECT 'ACTIVEDOCUMENT))
  37.   (SETQ LAYERSOBJ (VLA-GET-LAYERS ACADDOCUMENT))
  38.   (PRINC "\n请选择欲关闭的图层上的对象:")
  39.   (SETQ SS (SSGET))
  40.   (SETQ LIST_LAYER NIL)
  41.   (SETQ INDEX -1)
  42.   (WHILE (SETQ ENAME (SSNAME SS (SETQ INDEX (1+ INDEX))))
  43.     (SETQ VL_ENAME (VLAX-ENAME->VLA-OBJECT ENAME))
  44.     (SETQ LAYER (VLA-GET-LAYER VL_ENAME))
  45.     (IF    (NOT (MEMBER LAYER LIST_LAYER))
  46.       (SETQ LIST_LAYER (CONS LAYER LIST_LAYER))
  47.     )
  48.   )
  49.   (FOREACH LAYER LIST_LAYER
  50.     (VLA-PUT-LAYERON (VLA-ITEM LAYERSOBJ LAYER) :VLAX-FALSE)
  51.   )
  52.   (SETQ *ERROR* &OLDERR&)
  53.   (PRINC)
  54. )
  55. ;;;将选定对象所在图层保留,其它图层关闭
  56. (DEFUN C:LO (/ LAY       ACADDOCUMENT           ACADOBJECT
  57.            ENAME       INDEX       LAYER       LAYERLST
  58.            LAYERSOBJ   SS           VL_ENAME
  59.           )
  60.   (VL-LOAD-COM)
  61.   (DEFUN *$MYERROR$* (MSG)
  62.     (SETQ *ERROR* &OLDERR&)
  63.     (PRINC)
  64.     )
  65.   (SETQ &OLDERR& *ERROR*)
  66.   (SETQ *ERROR* *$MYERROR$*)
  67.   (SETQ ACADOBJECT (VLAX-GET-ACAD-OBJECT))
  68.   (SETQ ACADDOCUMENT (VLAX-GET-PROPERTY ACADOBJECT 'ACTIVEDOCUMENT))
  69.   (SETQ LAYERSOBJ  (VLA-GET-LAYERS ACADDOCUMENT))
  70.   (PRINC "\n请选择欲保留的图层上的对象:")
  71.   (SETQ SS (SSGET))
  72.   (SETQ LIST_LAYER NIL)
  73.   (SETQ INDEX -1)
  74.   (WHILE (SETQ ENAME (SSNAME SS (SETQ INDEX (1+ INDEX))))
  75.     (SETQ VL_ENAME (VLAX-ENAME->VLA-OBJECT ENAME))
  76.     (SETQ LAYER (VLA-GET-LAYER VL_ENAME))
  77.     (IF    (NOT (MEMBER LAYER LIST_LAYER))
  78.       (SETQ LIST_LAYER (CONS LAYER LIST_LAYER))
  79.     )
  80.   )
  81.   (VLAX-FOR LAY LAYERSOBJ
  82.     (VLA-PUT-LAYERON LAY :VLAX-FALSE)
  83.     )
  84.   (FOREACH LAYER LIST_LAYER
  85.     (VLA-PUT-LAYERON (VLA-ITEM LAYERSOBJ LAYER) :VLAX-TRUE)
  86.   )
  87.   (SETQ *ERROR* &OLDERR&)
  88.   (PRINC)
  89.   )
复制代码
 楼主| 发表于 2006-11-14 23:35 | 显示全部楼层

非常感谢Dallas_whu !

你的程序对我非常有用!再次谢谢!

 

我的第2个问题其实就是想写一个打印图纸的LISP

但是有格式要求,就是图形打印在一个矩形框里,然后矩形框下面是制图人,上面是标题,制图人是由用户来输入的,标题是确定的!

 

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-11 02:55 , Processed in 0.144098 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表