乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 60|回复: 19

[编程交流] 画一个正方形

[复制链接]

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:42:05 | 显示全部楼层 |阅读模式
大家好,
我在想一种画正方形的方法,就像画圆一样,通过指定圆心和半径。对于正方形,它将是a/2。我想画一个圆,然后列出一些点,画一个正方形的矩形(内接在圆的周围),最后画一个圆。
有没有人有更好的想法,或者我如何找到这4点?
我不在笔记本电脑上,所以我不能在这里发布任何代码,对不起!
编辑:我只是觉得得到圆的边界框可能会容易得多。
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 17:46:04 | 显示全部楼层
你知道有lisp例程会先选取一个中心点来绘制一个矩形吗?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 17:48:48 | 显示全部楼层
你好
 
命令:多边形,4
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:54:00 | 显示全部楼层
比我想象的还要容易,谢谢塔瓦!
 
评论
是的,我知道这样的例程,但在处理点坐标(使用角度和极坐标函数)方面,我做得并不好。
 
然而,就在我发布这条帖子之后,我找到了我的答案——通过使用圆圈的边界框。这种方法还允许我通过A边绘制正方形——首先通过其直径绘制圆。
谢谢
回复

使用道具 举报

48

主题

1073

帖子

1043

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2022-7-5 17:56:29 | 显示全部楼层
 
我差一个小时就发布了这个解决方案。我很高兴我先看了所有的回复(换换口味)。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:00:49 | 显示全部楼层
不客气。
 
 
这可能是你开始的最好机会,因为这是一件简单的事情。
 
有一些代码供您学习,但如果您不理解mapcar和lambda函数的机制过程,那么我用于检索四个点的方法似乎有点困难。
 
无论如何,请看下面的代码,我省略了最后一个应该绘制闭合多段线的操作,希望您不要使用命令rectang来完成此操作。
 
  1. (if (and (setq c (car (entsel "\nCircle please:")))
  2.         (eq (cdr (assoc 0 (setq e (entget c)))) "CIRCLE")
  3.         )
  4. (progn
  5.    (setq r (cdr (assoc 40 e))
  6.          p (cdr (assoc 10 e))
  7.          )
  8.    (mapcar '(lambda (x)
  9.               (setq l (cons (list (polar x (* pi 0.5) r)
  10.                                   (polar x (* pi 1.5) r)
  11.                                   )
  12.                             l)))
  13.            (list
  14.              (polar p pi r)
  15.              (polar p 0. r)
  16.              )
  17.            )
  18.    (setq l (apply 'append l))
  19.    )
  20. )

 
您好,dbroada,
 
我搜索了你的回复,可能类似于这个问题,但没有找到任何。你能澄清一下吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:02:23 | 显示全部楼层
或者:
  1. (defun c:test ( / cen ent enx rad )
  2.    (if (and (setq ent (car (entsel "\nSelect circle: ")))
  3.             (= "CIRCLE" (cdr (assoc 0 (setq enx (entget ent)))))
  4.        )
  5.        (progn
  6.            (setq cen (trans (cdr (assoc 10 enx)) ent 1)
  7.                  rad (cdr (assoc 40 enx))
  8.            )
  9.            (command "_.rectang"
  10.                "_non" (mapcar '- cen (list rad rad))
  11.                "_non" (mapcar '+ cen (list rad rad))
  12.            )
  13.        )
  14.    )
  15.    (princ)
  16. )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 18:04:36 | 显示全部楼层
非常感谢!
我回家后会练习,稍后会公布结果。
关于物体的旋转,我还有一个问题:例如,我知道这个方法:
  1. (command "_.rotate" (entlast) "" cenbbox 45)

这应该将对象从其边界框的中心旋转45度,但我想知道是否可以避免使用send命令方法,而是使用一些vla函数,例如vla put rotation?
顺便说一句,李的代码是非常清楚的,因为我知道它是如何工作,没有测试它。
回复

使用道具 举报

48

主题

1073

帖子

1043

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2022-7-5 18:10:06 | 显示全部楼层
我没有贴出来。你比我快。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 18:12:07 | 显示全部楼层
 
哦。很抱歉。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 03:17 , Processed in 0.594730 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表