矩形旋转
您好,我想知道是否有可能将矩形的旋转值提取到变量中。然后将其设置为0,并在之后将其重新命名为原始值。谢谢 你好,弗兰克。
尝试提取坐标,然后可能需要检查每个段的角度是否等于0.0、90.0、180。或270.0,因此矩形
否则就不会是直的。 嘿Tharwat,
谢谢你的回答,不过我不确定是否会听你的。
假设我使用命令矩形并使用旋转给它一个角度。现在它一直保存着这个角度。所以,当我使用一个使用矩形命令的例程时,它会坚持这个角度。所以我知道我可以在我的例程中使用旋转将其恢复为0,但我宁愿保存该角度,然后将其设置为0。如果不可能的话,我总能找到另一种方法来完成我的任务。
无论如何,希望它能帮助更多人
干杯和啤酒! 如果需要添加宽度和高度之类的内容,可以简单地将一点lisp放在一起,拾取现有对象的两个点,这与拾取一个现有对象相同。
(defun rec ()
(setq pt1 (getpoint "\npick cnr point"))
(setq pt2 (getpoint "\npick next cnr point"))
)
(rec)
(setq ang (angle pt1 pt2))
(rec)
(command "rectang" pt1 pt2)
(command "ro" "L" "" pt1 ang)
(princ)
据我所知,我相信CadFrank希望确定rectang命令的当前旋转角度,以便在使用该命令后可以重置旋转;不幸的是,我不相信这个值是可访问的,因为它不是作为系统变量或环境变量出现的。 也许这个。。。
(defun c:Test (/ *error* rtd _P p1 p2 e pts a lst ang)
;;--- Tharwat 23. April. 2013 ---;;
(defun *error* (x) (princ "\n *Cancel*"))
(defun rtd (a) (/ (* a 180.0) pi))
(defun _P (ent)
(mapcar 'cdr
(vl-remove-if-not
'(lambda (i) (eq (car i) 10))
(entget ent)
)
)
)
(if (and (setq p1 (getpoint "\n Specify first corner :"))
(setq p2 (getcorner "\n Specify next corner :" p1))
)
(progn
(command "_.rectang" "_none" p1 "_none" p2)
(setq e (entlast))
(setq pts (_P e))
(setq a (angle (car pts) (cadr pts)))
(command "_.rotate"
e
""
(mapcar '(lambda (j k) (/ (+ j k) 2.))
(car pts)
(caddr pts)
)
pause
)
(setq lst (_P (entlast)))
(setq ang (- (angle (car lst) (cadr lst)) a))
)
)
(if ang
(princ
(strcat "\n The rotation angle is : " (rtos (rtd ang) 2 1))
)
)
(princ)
)
(vl-load-com)
如果您不需要本机命令中可用的其他选项,可以重新创建“矩形”命令。
(defun c:myrectangle ( / p1 p2 p3 p4 d)
(if
(and
(setq p1 (getpoint "\nFirst corner: "))
(setq p2 (getpoint p1 "\nOther corner: "))
)
(progn
(setq d(mapcar '- p2 p1)
p3 (mapcar '+ p1 (list (car d) 0.0))
p4 (mapcar '+ p1 (list 0.0 (cadr d)))
)
(command "_PLINE" "_non" p1 "_non" p3 "_non" p2 "_non" p4 "_c")
)
)
(princ)
) 我发现一个简单的方法是,如果你设置snapang,你的矩形画成一个角度,这是一个变量,你可以检索并保存它,也许是userr1,然后是一个简单的宏,然后只做rectang。dwg中最多可以有5个角度。
(defun c:ang1 ()
(setvar 'angbase (getvar 'userr1))
)
; also need
(defun c:setang1 ()
(setvar 'userr1 (Getreal "\n enter angle")) ; i would use pick object but for example here KISS
)
好吧看来你们都有自己的想法
因此,首先,我发布我正在使用的代码,当旋转角度改变时,我得到一个我的块工作不好。
现在我知道我可以用
所以现在它永久地把它设置回0。这是我的问题。我不想将其永久设置为0,我想提取该值以在使用后将其重置为相同的值。
现在我还可以修改代码,使其不使用矩形。
这就是。。谢谢你的帮助
干杯和啤酒!
页:
[1]