明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1363|回复: 2

[求助]请教各位这是怎么回事,如何处理哩?

[复制链接]
发表于 2006-12-30 13:05:00 | 显示全部楼层 |阅读模式


我写了两个程序,如下.程序1,用entsel碰选1#直线,期望在该直线的a点,完成一个操作.程序2,碰选2#直线(另一条直线),期望在该直线的的b点完成一个操作.每个程序都能成功地单独运行,并达到预期的目的.
我把程序1和程序2原原本本按先后秩序放在一起,再运行.得到的结果是:在命令行中输入程序1的函数名时,在1#直线上碰选后,能达到预期的目的,即在1#直线的a点完成一个操作,可是输入程序2的函数名并碰选2#直线后,本应在2#直线的b点发生的操作却发生在1#直线的b点.请教各位这是怎么回事,如何处理哩?

(defun c:pf ()
(setvar "osmode" 0);关闭对象捕捉
(setvar "cmdecho" 0)
(setq a (car (entsel)))
(setq b (entget a))
(setq p (cdr (assoc 10 b)))
(setq q (cdr (assoc 11 b)))
(setq ang (+ (/ pi 2) (angle p q)))
 (setq c (polar p ang 10))
 (command "_leader" c p "a" "" "n")
(setvar "osmode" 1)
)


(princ)
(defun c:pl ()
(setvar "osmode" 0);关闭对象捕捉
(setvar "cmdecho" 0)
(setq z (car (entsel)))
(setq x (entget a))
(setq v (cdr (assoc 10 b)))
(setq m (cdr (assoc 11 b)))
(setq ang (+ (/ pi 2) (angle p q)))
 (setq k (polar m ang 10))
 (command "_leader" k m "a" "" "n")
)
(princ)

发表于 2006-12-30 13:13:00 | 显示全部楼层

把捕捉关了。

程序合并以后可能是你的捕捉处理得有问题。

发表于 2006-12-30 19:12:00 | 显示全部楼层
本帖最后由 作者 于 2006-12-30 19:26:49 编辑

你虽然设置了不用的变量,但是你取出变量的原变量没有改变呀

例如:

(setq v (cdr (assoc 10 b)))应该是
(setq v (cdr (assoc 10 x)))

共两句要改,还有
command命令没有测试,你自己看看吧

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

本版积分规则

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

GMT+8, 2025-11-23 11:33 , Processed in 0.258300 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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