明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1466|回复: 3

如何将图面上所有不同大小的圆放在不同的图层上

[复制链接]
发表于 2005-9-20 06:12 | 显示全部楼层 |阅读模式
请教哪位高手指点一下:如何用AutoLisp将图面上所有不同大小的圆放在不同的图层上,然后再将其以列表的形式显示出来啊!!!
发表于 2005-9-20 15:25 | 显示全部楼层
程序,试一下是否满足楼主的要求。
  1. (DEFUN C:LISTCIR ()
  2. (SETVAR "CMDECHO" 0)
  3. (IF (SETQ SS (SSGET "X" (LIST (CONS 0 "CIRCLE")))) (PROGN
  4.   (COMMAND ".UNDO" "BE")
  5.   (SETQ OLDL (GETVAR "CLAYER"))
  6.   (SETQ I -1 RR 0)
  7.   (REPEAT (SSLENGTH SS)
  8.    (SETQ EN (SSNAME SS (SETQ I (1+ I)))
  9.          R (CDR (ASSOC 40 (ENTGET EN)))
  10.          RR (IF (> R RR) R RR)
  11.          LN (STRCAT "L" (ITOA (FIX R))))
  12.    (COMMAND "LAYER" "M" LN "" "CHANGE" EN "" "P" "LA" LN "")
  13.    (SET (READ LN) (IF (NUMBERP (READ LN)) (1+ (EVAL (READ LN))) 1))
  14.   )
  15.   (SETQ I 0)
  16.   (TEXTSCR)
  17.   (PRINC "直径 : 数量\n")
  18.   (REPEAT (FIX RR)
  19.    (SETQ LN (STRCAT "L" (ITOA (SETQ I (1+ I)))))
  20.    (IF (SETQ SS (SSGET "X" (LIST (CONS 0 "CIRCLE") (CONS 8 LN)))) (PROGN
  21.     (PRINC I) (PRINC " : ") (PRINC (SSLENGTH SS)) (PRINC "\n")
  22.    ))
  23.   )
  24.   (SETVAR "CLAYER" OLDL)
  25.   (COMMAND ".UNDO" "E")
  26. ))
  27. (SETVAR "CMDECHO" 1)
  28. (PRINC)
  29. )
复制代码
 楼主| 发表于 2005-9-20 15:52 | 显示全部楼层

非常多谢二楼的侠客.正是所欲!!!

发表于 2005-9-20 18:47 | 显示全部楼层


(DEFUN CISTCIR (/ ss oldl i rr layerlist en ln)
 (SETvar "CMDECHO" 0)
 (IF (SETQ SS (SSGET "X" (LIST (CONS 0 "CIRCLE"))))
   (PROGN
  (COMMAND ".UNDO" "BE")
  (SETQ OLDL (GETvar "CLAYER"))
  (SETQ I -1 RR 0)
  (setq layerlist(list (cons "LinShi" "LinShi" )))
  (REPEAT (SSLENGTH SS)
    (SETQ EN (SSNAME SS (SETQ I (1+ I)))
   R (CDR (ASSOC 40 (ENTGET EN)))
   RR (IF (> R RR) R RR)
   LN (STRCAT "L" (rtos r)))
    (COMMAND "LAYER" "M" LN "" "CHANGE" EN "" "P" "LA" LN "")
    (if (assoc ln layerList)
      (setq layerlist(subst (cons ln (1+(cdr (assoc ln layerList))))(assoc ln layerList)  layerlist))
      (setq layerlist(append layerlist (list(cons ln 1))))
    )
    (SETvar "CLAYER" OLDL)
    (COMMAND ".UNDO" "E")
    )
  (setq layerlist(cdr layerlist))
   
  (TEXTSCR)
  (PRINC "直径 : 数量\n")
  (while (car layerlist)
    (progn
    (PRINC (car (car layerlist)))
    (PRINC " : ")
    (PRINC (cdr (car layerlist)))
    (PRINC "\n")
    (setq layerlist(cdr layerlist))
    )
    )
  )
   )
 (SETvar "CMDECHO" 1)
 (PRINC)
)

很久没用Lisp了,不知如何。

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

本版积分规则

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

GMT+8, 2024-5-5 12:17 , Processed in 0.169138 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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