Glen1980 发表于 2022-7-6 08:09:52

移动圆墙中的开口

目前,我正在建造一座大致呈班纳纳形状的建筑。我仍处于早期设计阶段,因此门窗会定期移动。大楼的半径约为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的努力不会有回报(除了那些可爱的知识)

pBe 发表于 2022-7-6 09:38:02


(defun c:testnil
   (vl-cmdf
         "_rotate"
         (ssget)
         "" "_cen"
         (getpoint "\nPick Center point: ")
         "r" "_non"
         (getvar 'LastPoint) "_non"
         (getpoint "\nPick Reference point: ")
         pause
         )
   )
页: [1]
查看完整版本: 移动圆墙中的开口