通过两次单击对齐对象?
EDIT3(短版本):因此,AutoCAD中对齐的默认概念是拾取“源和目标”点-至少2对,然后要求您缩放对象。这个过程对我来说有点慢和烦人。
该lisp的目标是:
1.选择实体(要对齐)
2.选择目的线(作为对齐参考)
3.拾取源线(将对象与其对齐)
那么,有可能得到“源”和“目标”线的两个端点的坐标,并将它们“匹配”在同一个轴上吗?(毫无疑问地调整对象的大小),然后可能执行锁定在该轴上的“动态”移动? 您好,Grrr,
我喜欢你的例行公事,但恐怕我无法帮助你创建它(我的LISP技能无法胜任这项任务)。
我遇到的一件事是,通过选择两条直线进行对齐,可能会出现一个问题,即确定直线的哪些端点是第一个点和第二个点。
我相信有人会找到解决这个问题的方法。
嗨,lamensterms,在我之前(更长)版本的帖子中,我提出了几个方法/想法,说明如何执行lisp。其中一个是从角度(alpha)上两条线的明显交点旋转对象,如果alpha是
如果有程序员愿意编写一个例程,我将给出更深入的解释。虽然我没想到这个有用的lisp会引起如此低的关注。 Grrr,我觉得你说的是线条应该相互对齐。。。只需(entmod)将源线的开始/结束顶点与目标线对齐即可。。。但,你们会如何根据张贴到源行的图片链接其他对象,以完成与链接到源行的所有对象对齐的过程。。。我不认为有什么比真正的内置align命令可以做的改进。。。 这不是关于对齐直线,而是对象(拾取的直线的作用是作为参照-它们可以是不同对象的一部分-例如多段线的一段)
不确定我的照片是否足够解释:
您好,Grrr,
是的,这很有道理。围绕两条线的交点,从源线1上的任意点旋转到源线2上的任意点。
或者,您可以读取端点并匹配最近和最远的端点(如果有意义的话)。我认为这将满足大多数条件。
听起来这是可以实现的。它肯定比align命令更有效。
这不仅仅是线条的问题,请将图片视为另一个示例
好的,有不同的方法来实现它-问题是我不知道lisp的可能性是什么(它能找到明显交点的坐标吗?!)。其他建议是从直线/或中点的两个端点之一执行“移动”,然后参照旋转以匹配角度
吼叫声
作为演示和起点。。。
(defun c:demo (/ old_osm p1 p2)
(setq old_osm (getvar 'OSMODE))
(setvar 'OSMODE 512)
(princ "\nSelect objects to align: ")
(if (and (setq ss (ssget "_:L"))
(setq p1 (getpoint "\nSelect source line: "))
(setq p2 (getpoint "\nSelect destination line: "))
)
(progn
(setvar 'OSMODE 0)
(command "ROTATE" ss "" "APP" p1 p2 "R" "APP" p1 p2 p1 p2)
(setvar 'OSMODE old_osm)
)
(setvar 'OSMODE old_osm)
)
(princ)
)
HTH公司
亨里克 在#7后的图像中,可以使用中点和端点对齐两个对象(明显没有缩放)。 Grrr,只有在已经创建了这两行的情况下,这才能比real align命令快,否则:1。绘制线1(2次点击);2、画线2(点击2次);3、选择对象(点击2次);4、选择第一行(点击1次);5.选择第二行(单击1次)。。。这是:2+2+2+1+1=8次点击。。。
对齐命令:1。选择对象(点击2次);2、拾取第一个源点(单击1次);3、选择第一个目的点(点击1次);4、选取第二个源点(点击1次);5、选择第二个目的点(点击1次);6.点击回车+回车。。。这是:2+1+1+1+1=6次点击+2次回车。。。
您必须考虑到这样一个事实,即源行和目标行实际上不存在,您必须创建它们,以便lisp完成其余的工作。。。即使这样,你也有:1。选择对象(点击2次);2、拾取源行(单击1次);3、选择目的线(单击1次)。。。这是:2+1+1=4次点击。。。只需点击两次并进入两次,速度更快,但实际上,当你没有这些线路时,你实际上还有两次点击,你必须确保不要错过线路选择。。。
哎哟,这是浪费时间。。。
页:
[1]
2