找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 919|回复: 5

[求助] [求助]:帮忙找一下错

[复制链接]
发表于 2005-11-24 12:17:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
题目:先制作图块,如AA BB CC ,并任意插入数个在图面中,写一个LISP,能统计图面上的BLOCK数量,并将结果写入,要求
1 以getfile取得文件(内定blknum1.dat) ,变量名datfile
2 自动将图块数量统计到datfile内

这是我写的:
(defun c:ll()
  (setq ss (ssget))
  (setq num_AA 0
        num_BB 0
        num_CC 0
        )
  (setq i 0)
  (setq n (sslength ss))
(repeat n
  (setq ent (ssname ss i))
  (setq entdate (entget ent))
  (setq enttype (cdr (assoc 2 entdate)))
  (cond ((= enttype "AA")  (setq num_AA (1+ num_AA)))
        ((= enttype "BB")  (setq num_BB (1+ num_BB)))
        ((= enttype "CC")  (setq num_CC (1+ num_CC)))
  )
   (setq i (1+ i))
)
(subdate)
(prin1)
)
(defun subdate()
(setq datfile (getfile "统计图块" "h:/blknum1" "dat" 2))
(setq ff (open datfile "w")
(write-line "对象类型    数量" ff)
(write-line (strcat "AA" (itoa num_AA)) ff)
(write-line (strcat "BB" (itoa num_BB)) ff)
(write-line (strcat "CC" (itoa num_CC)) ff)
(close ff)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-24 13:11:49 | 显示全部楼层
低级错误:括号不匹配!
(setq ff (open datfile "w")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8150个

财富等级: 富甲天下

发表于 2005-11-24 14:31:50 | 显示全部楼层
(defun c:ll ()
  (setq ss (ssget ‘((0 . “INSERT”) (1 . “AA,BB,CC”))))
  (setq        num_AA 0
        num_BB 0
        num_CC 0
  )
  (setq i 0)
  (setq n (sslength ss))
  (repeat n
    (setq ent (ssname ss i))
    (setq entdate (entget ent))
    (setq enttype (cdr (assoc 2 entdate)))
    (cond
((= enttype "AA") (setq num_AA (1+ num_AA)))
          ((= enttype "BB") (setq num_BB (1+ num_BB)))
          ((= enttype "CC") (setq num_CC (1+ num_CC)))
    )
    (setq i (1+ i))
  )
  (subdate)
  (StartApp "Notepad.exe" datfile)
)
(defun subdate ()
  (setq datfile (getfile "统计图块" "h:/blknum1" "dat" 2))
(setq ff (open datfile "w"))
(write-line "对象类型 数量" ff)
  (write-line (strcat "AA     " (itoa num_AA)) ff)
  (write-line (strcat "BB     " (itoa num_BB)) ff)
  (write-line (strcat "CC     " (itoa num_CC)) ff)
  (close ff)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-24 14:49:08 | 显示全部楼层
班竹:我想把结果保存到blknum1.dat中,(setq datfile (getfile "统计图块" "h:/blknum1" "dat" 2))
这条语句对吗,另外,旗号是啥意思?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-24 16:02:16 | 显示全部楼层
最初由 gucci218 发布
[B]班竹:我想把结果保存到blknum1.dat中,(setq datfile (getfile "统计图块" "h:/blknum1" "dat" 2))
这条语句对吗,另外,旗号是啥意思? [/B]

“旗号是啥意思?”不知哪儿有什么“旗号”!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-25 08:04:19 | 显示全部楼层
班竹,我查到了,就是代替2的位置,也叫标志值,可以是1 2 4 8

Flags的值可由如下几个值按位编码组合而成:

    (1)标志值为1的情况(即第0位为1)

    当希望提您录入一个要新生成的文件名时﹐将此值置1。当希望提示您录入的文件名是一个已有的文件时(即要打开一个已有文件)﹐就不要设置这个标志位。在后一种情况下﹐如果您录入一个并不存在的文件的文件名﹐对话框就会在对话框底部显示出一条出错信息。

    如果设置了此标志位﹐而用户又选择了已经存在的一个文件﹐AutoCAD就会显示出一个报警框﹐并为您提供了是继续进行下去环是中断本操作的选择。

    (2)标志值为2的情况(即第1位置为1)

    如果设置此位﹐则禁用 "Type it"按钮(即让它变灰)。当另一个对话框激活时,如果调用getfiled函数,这个标志位就要置1,(否则,它将强制另一个对话框消失)。

    如果不设置标志位,"Type it"按钮是可用的。如果用户选择了这个按钮,对话框将会消失,且getfiled函数返回1。

    (3)标志值位4的情况(即第2位置为1)

    让用户录入一个任意的文件名的扩展名,或者干脆不录入扩展名。
    如果不设置这个标志位﹐则getfiled函数仅接受在ext变元中指定的扩展名的那种类型的文件﹐并且用户在File文本框中没有录入由ext指定的扩展名的话﹐则该函数会将这个扩展名附于文件名之后。

    (4)标志位为8的情况(即第3位置为1)

    如果这个标志位被设置且第0位没有被设置﹐getfiled函数就会为用户录入的文件名执行一次库搜索。如果它找到了该文件﹐且该文件的目录在库搜索路径中﹐它就会经路径截除﹐仅返回文件名(如果它在不同的一个目录中找到了同名的这样一个文件﹐它就不会截除路径部分)。

    如果不设置这个标志位﹐getfiled函数就会返回整个文件名﹐包括路径名。

    如果您要使用对话框来打开一个现有文件﹐而又想将该文件名保存在图形中(或其它的数据库中)﹐而且希望在以后还能通过getfiled函数去搜索它﹐就应该将此位加以设置。

    如果对话框从用户那里获得了一个文件名﹐getfiled函数就将指定的文件名以字符串的形式返回;否则﹐它返回nil。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 15:59 , Processed in 0.178267 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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