明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: zhongguola

[LISP]一个令我困惑的问题

  [复制链接]
 楼主| 发表于 2005-9-19 17:14:00 | 显示全部楼层

我试过了,在CAD14非常好用,但是在CAD2002上就会出现我所说的情况

发表于 2005-9-19 22:16:00 | 显示全部楼层
本帖最后由 作者 于 2005-9-20 8:44:04 编辑

在2002中调试后的程序:
  1. (DEFUN C:MJ ()
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ TXTH (CDR (ASSOC 40 (TBLSEARCH "STYLE" (GETVAR "CMLSTYLE")))))
  4. (COMMAND ".UNDO" "BE")
  5. (SETVAR "CECOLOR" "1")
  6. (WHILE (SETQ PT (GETPOINT "\nSelect a Point 选取点:"))
  7.   (COMMAND "BPOLY" PT "")
  8.   (IF (SETQ EN (ENTLAST)) (PROGN
  9.    (COMMAND "AREA" "O" EN)
  10.    (SETQ AA (GETVAR "AREA"))
  11.    (IF (> TXTH 0)
  12.     (COMMAND "TEXT" PT 0 (RTOS AA 2 3))
  13.     (COMMAND "TEXT" PT 3 0 (RTOS AA 2 3))
  14.    )
  15.    (ENTDEL EN)
  16.   ))
  17. )
  18. (COMMAND ".UNDO" "E")
  19. (SETVAR "CECOLOR" "BYLAYER")
  20. (PRIN1)
  21. )
复制代码
发表于 2005-9-20 17:46:00 | 显示全部楼层

可乐版  (下述程序是在‘ZZXXQQ’的基础上修改的)

(DEFUN C:MJ ()
  (if (not (entlast))
    (progn
      (alert "老大图形里总得有点东西再用吧。")
      (exit)
      )
    )
 (SETvar "CMDECHO" 0)
 (SETQ TXTH (CDR (ASSOC 40 (TBLSEARCH "STYLE" (GETvar "CMLSTYLE")))))
 (COMMAND ".UNDO" "BE")
 (SETvar "CECOLOR" "1")
 (WHILE (SETQ PT (GETPOINT "\nSelect a Point 选取点:"))
   (setq LastHand  (cdr(assoc 5 (entget (entlast)))))
   (COMMAND "BPOLY" PT "")
   (SETQ EN (ENTLAST))
   (IF (/= LastHand (cdr(assoc 5 (entget en)))) ;不等于才能说明已经有实体生成  
     (PROGN
       (COMMAND "AREA" "O" EN)
       (SETQ AA (GETvar "AREA"))
       (IF (> TXTH 0)
  (COMMAND "TEXT" PT 0 (RTOS AA 2 3))
  (COMMAND "TEXT" PT 3 0 (RTOS AA 2 3))
  )
       (ENTDEL EN)
       )
     (alert "你应该选择内部点,不然我不干。")
     )
   )
  (COMMAND ".UNDO" "E")
  (SETvar "CECOLOR" "BYLAYER")
 
  (PRIN1)
  )
(princ "\n虽然这个 MJ 的命令名总能让你想起‘麻将’但是我真的是用来计算面积的。\n\n")

 楼主| 发表于 2005-9-21 09:20:00 | 显示全部楼层

谢谢祝位大哥!

能说明一下CAD14可运行而CAD2002不能运行的原因吗?

发表于 2005-9-21 13:37:00 | 显示全部楼层

  (IF (SETQ EN (ENTLAST)) (PROGN
没有意义!

发表于 2005-9-21 21:13:00 | 显示全部楼层
zhongguola发表于2005-9-21 9:20:00谢谢祝位大哥!能说明一下CAD14可运行而CAD2002不能运行的原因吗?
原因是R14中层名均为大写。而2002中在变量中是大写,在实体数据表中却为大写字母开头。所以判断出错。
  1. 以下是引用无痕在2005-9-21 13:37:20的发言:
  2. (IF (SETQ EN (ENTLAST)) (PROGN
  3. 没有意义!
复制代码
同意

 楼主| 发表于 2005-10-8 14:30:00 | 显示全部楼层

请问诸位大哥,

能按照5楼的说法编个程序吗?

谢谢了!!!!!!!!!!!!!!!!

 楼主| 发表于 2005-10-8 22:19:00 | 显示全部楼层

诸位大哥帮帮忙吧!!!!!!

谢谢了!!!!!!!

 楼主| 发表于 2005-10-24 16:19:00 | 显示全部楼层

求大家了!!

帮个忙吧!!!!

按照5楼的帖子编一个吧!!!!!

 楼主| 发表于 2005-10-24 16:21:00 | 显示全部楼层

求大家了!!!

帮帮忙吧!

按照5楼的程序编写一个吧!!!!!

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

本版积分规则

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

GMT+8, 2024-11-27 16:32 , Processed in 0.183768 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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