显示发布的完整版本: LISP定义矩形的位置

块状的
29.06.2017,14:19
大家好!我试图编写一个autoLISP执行程序。我需要用它绘制矩形。定义了第一点后,我发送“ d”(直径 尺寸),然后发送高度和宽度的数字。但是最后,我需要用光标选择它的位置。我的问题是:有没有办法在没有光标的情况下做到这一点?我要它画到右下角 每次定位(并将其写入我的LISP代码中)。谢谢您的建议!

块状的2017-06-29 15:07:14

约翰·康纳
29.06.2017,15:01
“ D”不是用于“尺寸”吗? 如果要绘制矩形,为什么要指定直径?  Makes no sense.

块状的
29.06.2017,15:06
对不起,我的错。它代表尺寸。

肯特·库珀
29.06.2017,19:54

简单示例,经过轻轻测试:(defun C:TEST()(命令“ _.rectang”暂停“ _d” 15 10(polar(getvar'lastpoint)(* pi 1.75)10))) 红色部分将始终向右下方向馈入一个点。 调整蓝色部分以适合您的需要,或者如果您想每次给它不同的大小,请在前两个部分使用暂停。

块状的
03.07.2017,15:49
非常感谢,这是可行的 

块状的
03.07.2017,16:05
您能否解释一下._rectangle和_rectangle有什么区别?为什么需要点?他们俩都为我工作。谢谢!

约翰·康纳
04.07.2017,13:27
在命令名称前添加“点”可确保将使用通用AutoCAD命令,而不是由于未定义命令而可能被替换(或丢失)的AutoCAD命令。

肯特·库珀
05.07.2017,18:48

另一种方法是,使用不带“尺寸”选项的RECTANG命令,而是通过计算右下方向的对角: (defun C:RULS(/ UL xdim ydim); = 通过指定尺寸从左上角矩形  (setq    UL(获取点“ \ n左上角:”)    xdim(getdist“ \ n水平大小:”)    ydim(getdist“ \ n垂直大小:”)  )  (命令“ _.rectang” UL(mapcar'+ UL(列表xdim(-ydim))))  (princ)) 这样做的好处是,提示会更清晰地说明所要的内容。 我永远不记得它们在RECTANG的Dimension-option提示中表示“长度”和“宽度”的方向,而我很容易弄错,因为我认为“宽度”是水平的,但是他们使用“长度”作为水平尺寸和“宽度”(我更喜欢将其称为“高度”)。 
肯特·库珀2017-07-05 18:52:48