429014673 发表于 2011-12-19 21:26:52

求帮忙改一个程序,谢谢

(defun c:xu()
(setq fln-2 (getstring "\n文件名:"))
(if (= fln-2 "") (setq fln-2"c:\\1"))
(setq fln-1 (strcat fln-2 ".txt"))
(setq file_id (open fln-1 "a"))
(setq a (ssget))
(setq n (sslength a))
(setq index 0)
(repeat n
(setq el (entget ( ssname a index)))
(setq index ( + index 1))
(setq e (assoc 0 el))
(if (= "DIMENSION" (cdr e))
(progn
(setq txt (cdr (assoc 42 el)))
(princ txt file_id)
(princ " " file_id)
)
)
)
(princ "\n" file_id)
(close file_id)
(prin1)
(prompt "\n共输出了")
(prin1)
)

看一下能不能在命令行增加一个提示:输入点选尺寸个数,输出数据自动换行。如,我输入点选尺寸数为5个,当我点选尺寸有5个时,就一行,超过5个时,输出数就自动换到下一行,当点选个数不是5的倍数时就自动退出,但之前符合规则已点选的都会顺利输出,免得再重新开始,看一下这样如何改。

ZZXXQQ 发表于 2011-12-19 22:54:36

本帖最后由 ZZXXQQ 于 2011-12-20 23:29 编辑

看下行不行

(defun c:xu ()
(setq index 0)
(setq fln-2 (getfiled "\n文件名:" "" "txt" 1))
(setq fin-1 (if fin-2 fin-2 "c:/1"))
(setq file_id (open fln-1 "a"))
(setq n (getint "\n输入每行个数 <5> :"))
(setq n (if n n 5))
(princ "\n选择尺寸 :")
(if (setq a (ssget '((0 . "DIMENSION"))))
(if (= (rem (sslength a) n) 0) (progn
   (repeat (sslength a)
    (setq el (entget(ssname a index)))
    (setq index (1+ index))
    (princ (cdr (assoc 42 el)) file_id)
    (princ (if (= (rem index 5) 0) "\n" " ") file_id)
   )
;   (princ "\n" file_id)
))
)
(close file_id)
(prin1)
(if (> index 0) (prompt (strcat "\n共输出了" (itoa index) "个。")))
(prin1)
)

429014673 发表于 2011-12-19 23:03:40

ZZXXQQ 发表于 2011-12-19 22:54 static/image/common/back.gif
看下行不行

老大,这程序好像有点不行,原来那个保存在C盘的1文件希望不要变,希望加一个命令提示:输入点选尺寸个数,输出数据自动换行如见上一贴

ZZXXQQ 发表于 2011-12-20 09:53:08

2楼改了。再试试。有些不明白你的要求,最好给出不同选择情况下的文件结构。

429014673 发表于 2011-12-20 10:12:05

ZZXXQQ 发表于 2011-12-20 09:53 static/image/common/back.gif
2楼改了。再试试。有些不明白你的要求,最好给出不同选择情况下的文件结构。

这个程序是用来输出尺寸到TXT用的,原程序如我点选尺寸3个(如尺寸:23,52,53),就会在C盘1.TXT文件里输出一行23 52 53,我再点选尺寸5个(如尺寸:1 2 3 4 5 ),就会在TXT文件里的另一行有5个尺寸(1 2 3 4 5 ),现在我想加一个尺寸输出数字是按倍数关系输出,如我在命令行提示是输出的尺寸个数的倍数,如是5的倍数,如我点选尺寸是 (1 2 3 4 5 6 7 8 9 10),输出TXT的一行是:1 2 3 4 5 另起一行是:6 7 8 9 10 。如果是3的倍数时,输出TXT是:一行是:1 2 3二行是:4 5 6三行是:7 8 9 四行:这行刚好是尺寸数字10,只有一个,不符合3的倍数,所以这就出错了。。。

ZZXXQQ 发表于 2011-12-20 23:31:48

二楼改了。根据要求,只在选择为整数倍时写入文件。
页: [1]
查看完整版本: 求帮忙改一个程序,谢谢