移动圆墙中的开口
目前,我正在建造一座大致呈班纳纳形状的建筑。我仍处于早期设计阶段,因此门窗会定期移动。大楼的半径约为60米,所以我很开心地旋转门,使其保持在正确的平面上,尤其是当我这些天筋疲力尽时,我的大脑真的无法跟上。此时,我启动“旋转”命令,然后选择垂直于圆墙的门或分隔墙,然后选择圆墙的中心点作为基点,然后选择参考点,重新选择中心点,然后选择门或墙的中间,这样我可以看到元素移动到的位置。
当我试图学习LISP时,我想我应该尝试一下启动rotate命令,然后自动启动参考变量,选择rotate基点作为第一个参考点。到目前为止我有
(defun C:ref ()
;Reference Rotates with centre point & 1st ref the same
*****
(setq oldsnap (getvar "osmode"))
;Saving Snaps
(setvar "osmode" 4)
;Set Centre of circle to osnap
*****
Get Points
(setq cp (getpoint "\nCentre of Circle : "))
;Set centerpoint and first reference point
(setvar "osmode" 32)
Snaps on
(setq rp (getpoint "\nReference point : "))
;Set Second reference point
(setq np (getpoint "\nSelect new position : "))
;select new position
******
;Start of command functions
(command "rotate" ( ) cp cp rp np)
;Start rotate command
******
(setvar "osmode" oldsnap)
;Reset snaps
) ;End of function
我现在想知道如何选择我想要旋转的位,然后告诉roate命令我想要使用参考点。此外,我想添加一些代码,让我可以选择启动复制功能。有人能给我一些关于如何做这些事情的提示吗。此外,对代码的建设性批评也非常受欢迎。
这更像是一个学习练习,而不是我会经常使用的东西,所以写LISP的努力不会有回报(除了那些可爱的知识)
(defun c:testnil
(vl-cmdf
"_rotate"
(ssget)
"" "_cen"
(getpoint "\nPick Center point: ")
"r" "_non"
(getvar 'LastPoint) "_non"
(getpoint "\nPick Reference point: ")
pause
)
)
页:
[1]