画一个正方形
大家好,我在想一种画正方形的方法,就像画圆一样,通过指定圆心和半径。对于正方形,它将是a/2。我想画一个圆,然后列出一些点,画一个正方形的矩形(内接在圆的周围),最后画一个圆。
有没有人有更好的想法,或者我如何找到这4点?
我不在笔记本电脑上,所以我不能在这里发布任何代码,对不起!
编辑:我只是觉得得到圆的边界框可能会容易得多。 你知道有lisp例程会先选取一个中心点来绘制一个矩形吗? 你好
命令:多边形,4
我 比我想象的还要容易,谢谢塔瓦!
评论
是的,我知道这样的例程,但在处理点坐标(使用角度和极坐标函数)方面,我做得并不好。
然而,就在我发布这条帖子之后,我找到了我的答案——通过使用圆圈的边界框。这种方法还允许我通过A边绘制正方形——首先通过其直径绘制圆。
谢谢
我差一个小时就发布了这个解决方案。我很高兴我先看了所有的回复(换换口味)。 不客气。
这可能是你开始的最好机会,因为这是一件简单的事情。
有一些代码供您学习,但如果您不理解mapcar和lambda函数的机制过程,那么我用于检索四个点的方法似乎有点困难。
无论如何,请看下面的代码,我省略了最后一个应该绘制闭合多段线的操作,希望您不要使用命令rectang来完成此操作。
(if (and (setq c (car (entsel "\nCircle please:")))
(eq (cdr (assoc 0 (setq e (entget c)))) "CIRCLE")
)
(progn
(setq r (cdr (assoc 40 e))
p (cdr (assoc 10 e))
)
(mapcar '(lambda (x)
(setq l (cons (list (polar x (* pi 0.5) r)
(polar x (* pi 1.5) r)
)
l)))
(list
(polar p pi r)
(polar p 0. r)
)
)
(setq l (apply 'append l))
)
)
您好,dbroada,
我搜索了你的回复,可能类似于这个问题,但没有找到任何。你能澄清一下吗? 或者:
(defun c:test ( / cen ent enx rad )
(if (and (setq ent (car (entsel "\nSelect circle: ")))
(= "CIRCLE" (cdr (assoc 0 (setq enx (entget ent)))))
)
(progn
(setq cen (trans (cdr (assoc 10 enx)) ent 1)
rad (cdr (assoc 40 enx))
)
(command "_.rectang"
"_non" (mapcar '- cen (list rad rad))
"_non" (mapcar '+ cen (list rad rad))
)
)
)
(princ)
) 非常感谢!
我回家后会练习,稍后会公布结果。
关于物体的旋转,我还有一个问题:例如,我知道这个方法:
(command "_.rotate" (entlast) "" cenbbox 45)
这应该将对象从其边界框的中心旋转45度,但我想知道是否可以避免使用send命令方法,而是使用一些vla函数,例如vla put rotation?
顺便说一句,李的代码是非常清楚的,因为我知道它是如何工作,没有测试它。 我没有贴出来。你比我快。
哦。很抱歉。
页:
[1]
2