布朗运动 发表于 2015-1-5 19:42:33

是画龙点睛还是画蛇添足?(关于inters函数与osnap函数配合)

有本教程上给出了一个求多条直线之间交点的代码范例,其中有三句话是:
(setq intpt (inters pt1 pt2 pt3 pt4) ) ;第一句,求交点,将交点坐标赋给变量intpt
(setq intpt1 (osnap intpt "int") )   ;第二句,捕捉交点,将交点坐标赋给变量intpt1
(setq pt_list (cons intpt1 pt_list))   ;第三句,将交点坐标加入交点列表pt_list
第一句已经用inters函数求得交点坐标了,为什么还要用osnap函数再求一次?加入列表的为什么是intpt1而不是intpt?经过测试(CAD2010),捕捉模式对inters函数求得的交点坐标并无影响,那么第二句是不是多余呢?

ysq101 发表于 2015-1-5 20:43:21

大师们说的。。全信书不如无书
我也觉得第二句多余的。。
OSNAP是有对象时才能捕捉到那个交点
inters 无对象也可以求出交点

ZZXXQQ 发表于 2015-1-5 21:14:42

第二句主要是判断是否有实际的交点。因为inters可能求出虚交点。

机械工程师 发表于 2015-1-6 10:08:37

意思是空间直线投影到平面有交点,实际没交点?

鱼与熊掌 发表于 2015-1-6 10:33:54

存在即合理.
用着吧,管他的 哪个方便用哪个.

布朗运动 发表于 2015-1-6 21:03:14

ZZXXQQ 发表于 2015-1-5 21:14 static/image/common/back.gif
第二句主要是判断是否有实际的交点。因为inters可能求出虚交点。

谢谢指教,但是inters函数用法介绍上这么写的:(inters <点1><点2><点3><点4>),onseg:省略或非nil时返回真实交点。

ZZXXQQ 发表于 2015-1-7 08:49:40

布朗运动 发表于 2015-1-6 21:03 static/image/common/back.gif
谢谢指教,但是inters函数用法介绍上这么写的:(inters ),onseg:省略或非nil时返回真实交点。

从局部程序可能看不出来实际用途。可能捕捉的是直线与圆弧的交点,用inters计算时的一条线是不存在的。

fl202 发表于 2015-1-7 09:08:40

就这三句来说,可以去掉第二句。

但也有别的情况,需要贴出全部代码来判断。

布朗运动 发表于 2015-1-7 13:03:52

本帖最后由 布朗运动 于 2015-1-7 13:09 编辑

fl202 发表于 2015-1-7 09:08 http://bbs.mjtd.com/static/image/common/back.gif
就这三句来说,可以去掉第二句。

但也有别的情况,需要贴出全部代码来判断。

全部代码见上传的图片,怀疑多余的代码在第2页倒数第10行。

fl202 发表于 2015-1-7 15:07:18

布朗运动 发表于 2015-1-7 13:03 static/image/common/back.gif
全部代码见上传的图片,怀疑多余的代码在第2页倒数第10行。

如你的全部代码所言,大家都懂的:
command 命令未关闭捕捉,所以它的整个程序这么做并非是画蛇添足。关于command与捕捉引起的错误,很多人都犯过。这点书本和本论坛都多次提及,请注意。

我们通常都不这么编写程序,我的做法是去掉第二句,用entmake 代替command 。
页: [1] 2
查看完整版本: 是画龙点睛还是画蛇添足?(关于inters函数与osnap函数配合)