明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2821|回复: 18

[已解答] 请教一个Autolisp加载出现的问题

[复制链接]
发表于 2014-4-12 11:00 | 显示全部楼层 |阅读模式
我编写了一个lisp程序,把选中区域图形中的矩形用一个已有的块替换(本人是做工程的,想把工程桩用一个块替换),代码如下:
(defun C:RtoB(/ in_block ask ss1 pt11 ss1_length pt_data ent1 ent1_data type_info i pt_num )
        (setvar "cmdecho" 0)
        (setq in_block (entsel "\n选择被插入的块:"));*
        (initget 1 "Yes No")
        (setq ask (getkword "\n替换后删除原矩形?(Yes or No):"));*
        (print '选择替换区域:)
        (setq ss1 (ssget "C" (setq pt11 (getpoint)) (getcorner pt11)))
        (setq ss1_length (1- (sslength ss1)))
        (while (>= ss1_length 0)
                (setq pt_data (append))
                (setq ent1 (ssname ss1 ss1_length))
                (setq ent1_data (entget ent1))
                (setq type_info (assoc 0 ent1_data))
                (if (wcmatch (cdr type_info) "LWPOLYLINE")
                        (progn
                                (foreach i ent1_data
                                        (if(= (car i) 10)
                                                (setq pt_data (append pt_data (list (cdr i))))
                                        )
                                )
                                (setq pt_num (cdr(assoc 90 ent1_data)))
                                (cond        ((or (= pt_num 4) (= pt_num 5))
                                                        (setq in_point (inters (nth 0 pt_data) (nth 2 pt_data) (nth 1 pt_data) (nth 3 pt_data)))
                                                        (entmake (list (cons 0 "insert") (cons 2 (cdr(assoc 2 (entget (car in_block))))) (list 10 (car in_point) (cadr in_point))))
                                                        (if (= ask "Yes") (entdel ent1))
                                                )
                                                ((= pt_num 6)
                                                        (setq in_point (inters (nth 1 pt_data) (nth 3 pt_data) (nth 2 pt_data) (nth 4 pt_data)))
                                                        (entmake (list (cons 0 "insert") (cons 2 (cdr(assoc 2 (entget (car in_block))))) (list 10 (car in_point) (cadr in_point))))
                                                        (if (= ask "Yes") (entdel ent1))
                                                )
                                )
                               
                        )
                )
                (setq ss1_length (1- ss1_length))
        )
        (setvar "cmdecho" 1)
        (princ)
)
以上的代码直接复制到命令行里执行是没问题,但如果通过加载方式 运行的话,load后就要求响应上面打*号处的句子,而且“选择被插入的块”和“替换后删除原矩形?(Yes or No):”这两句话在命令提示行都成了乱码,这里强调一下,是加载的时候,不是输入命令rtob时,有哪位知道怎么回事吗,指教一下,感激不尽。


点评

这是马甲吗? 取的是啥网名?  发表于 2014-4-12 20:52
发表于 2014-4-12 11:11 | 显示全部楼层
沒異狀啊(補字)
 楼主| 发表于 2014-4-12 11:17 | 显示全部楼层
我刚在自己的电脑上appload后,出现 错误: 参数类型错误: numberp: nil,这又怎么回事,这问题困惑了我两个星期了
 楼主| 发表于 2014-4-12 11:19 | 显示全部楼层
本帖最后由 丶冫氵灬氵冫丶 于 2014-4-12 11:21 编辑
lsjj 发表于 2014-4-12 11:11
沒異狀啊(補字)

我刚在自己的电脑上appload后,出现 错误: 参数类型错误: numberp: nil,这又怎么回事,这问题困惑了我两个星期了,在公司的时候,就出现前面说过的问题,按理说在load后不应该响应代码里的输入输出语句才对呀
发表于 2014-4-12 11:44 | 显示全部楼层
cad2008试一下,没有你说的情况.
发表于 2014-4-12 11:47 | 显示全部楼层
丶冫氵灬氵冫丶 发表于 2014-4-12 11:19
我刚在自己的电脑上appload后,出现 错误: 参数类型错误: numberp: nil,这又怎么回事,这问题困惑了我两 ...

我不检查你的程序了。出现这种错误还有一个可能性就是电脑中了CAD病毒。参见http://bbs.mjtd.com/thread-100858-1-1.html
 楼主| 发表于 2014-4-12 12:15 | 显示全部楼层
ll_j 发表于 2014-4-12 11:47
我不检查你的程序了。出现这种错误还有一个可能性就是电脑中了CAD病毒。参见http://bbs.mjtd.com/thread- ...

你是load加载的吗
发表于 2014-4-12 13:45 | 显示全部楼层
...通过加载方式...
这么说就是一个文件喽
请将该文件 打包 上传供检测...
 楼主| 发表于 2014-4-12 19:50 | 显示全部楼层
Andyhon 发表于 2014-4-12 13:45
...通过加载方式...
这么说就是一个文件喽
请将该文件 打包 上传供检测...

这就是一般的lisp源代码文件

本帖子中包含更多资源

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

x
发表于 2014-4-12 21:15 | 显示全部楼层
Command: (load "V:/Rtob")
C:RTOB

Command: rtob

选择被插入的块:
替换后删除原矩形?(Yes or No):y

选择替换区域:
==============
ok,未见异常
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 15:56 , Processed in 1.011557 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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