明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2938|回复: 10

[已解答] 矩形如何画成倒圆角

[复制链接]
发表于 2014-12-3 17:24 | 显示全部楼层 |阅读模式
本帖最后由 819534890 于 2014-12-3 17:32 编辑

如图所示,圆弧的半径为r,圆弧向里凹,不是往外凸。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2014-12-3 21:29 | 显示全部楼层
本帖最后由 819534890 于 2014-12-4 11:06 编辑

谢谢了,我自己解决了,等下贴出代码。把群码42 的值改为相反值就行。
  1. ;批量多段线圆角,和FILLET的圆角方向相反,简化版
  2. (defun c:ff(/ radius radius1 ss en)
  3.   (setq radius (getvar "FILLETRAD"))
  4.   (if (setq radius1
  5.              (getdist (strcat "\n请指定圆角半径<" (rtos radius) ">:"))
  6.       )
  7.     (setq radius radius1)
  8.   )
  9.   (if (setq ss(ssget '((0 . "lwpolyline"))))
  10.     (progn
  11.       (setq echo1 (getvar "cmdecho"))
  12.       (setvar "cmdecho" 0)
  13.       (while (setq en(ssname ss 0))
  14.         (ffr en radius)
  15.          (rer en)
  16.         (setq ss (ssdel en ss))
  17.         )
  18.       (if echo1 (setvar "cmdecho" echo1))
  19.       )
  20.     )
  21.   (princ)
  22.   )
  23. (defun ffr(en r)
  24.   (setvar "FILLETRAD" r)
  25.   (command "_.FILLET" "P" en)
  26.   )
  27. (defun rer(sn / x sn_g p42)
  28. (setq sn_g (entget sn))
  29. (setq sn_g (mapcar '(lambda (x) (if (= (car x) 42 ) (setq x (cons 42 (- 0 (cdr x)))) x)) sn_g))  
  30. (entmod sn_g)
  31. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

高级!! 只是以后别乱占沙发了  发表于 2014-12-4 13:40
请教你这个思路是这样的,怎么内了。  发表于 2014-12-3 22:50

评分

参与人数 1明经币 +1 收起 理由
USER2128 + 1 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2014-12-3 18:22 | 显示全部楼层
本帖最后由 wzg356 于 2014-12-3 18:29 编辑

圆心在角点上?
1、画矩形(或选择矩形)
2、取得四角点
3、根据角点、半径算出弧的三点
4、根据3点画弧
5、相邻弧的端点画直线
6、连接4段直线、4个弧成一条多线段
7、删除原矩形
发表于 2014-12-3 19:44 | 显示全部楼层
4角上画圆,矩形中心点BO。我是这样想的。
发表于 2014-12-3 22:01 | 显示全部楼层
  1. (defun c:tt ()
  2. (if (and (setq pt1 (getpoint "\n第一角点: "))
  3.     (setq pt2 (getcorner pt1 "\n另一角点: "))
  4.     (setq r (getdist "\n圆弧半径: "))) (progn
  5. (setq ptm (mapcar '(lambda (a b) (/ (+ a b) 2)) pt1 pt2))
  6. (setq pt3 (list (car pt1) (cadr pt2)))
  7. (setq pt4 (list (car pt2) (cadr pt1)))
  8. (command "CIRCLE" pt1 r "CIRCLE" pt3 r "CIRCLE" pt2 r "CIRCLE" pt4 r)
  9. (command "RECTANG" pt1 pt2)
  10. (command "BOUNDARY" ptm "")
  11. (command "ERASE" "C" pt1 pt2 "R" "L" "")
  12. ))
  13. (princ)
  14. )
 楼主| 发表于 2014-12-3 22:09 | 显示全部楼层
ZZXXQQ 发表于 2014-12-3 22:01

谢谢啦!!
你这个是新画矩形,我刚才贴了一个修改的,同时对多段线也也适用。
发表于 2014-12-4 09:56 | 显示全部楼层
要是能在矩型内点选就更好了!
发表于 2014-12-5 08:44 | 显示全部楼层
不错,使用的时候比较实惠!
发表于 2014-12-7 13:06 | 显示全部楼层
不错,多谢分享
发表于 2014-12-10 15:23 | 显示全部楼层
ps122hb 发表于 2014-12-7 13:06
不错,多谢分享

  1. (defun C:w1 (/ E0 EN X)
  2.   (setq e0 (entlast))
  3.   (command "_.rectang" "F")
  4.   (while (not (equal (getvar "cmdnames") "")) (apply 'command (list pause)))
  5.   (cond
  6.     ((not (equal e0 (entlast)))
  7.      (setq en (entget (entlast)))
  8.      (entmod (mapcar '(lambda (x)
  9.                         (cond ((equal (car x) 42) (cons 42 (abs (cdr x))))
  10.                               (T x)
  11.                         )
  12.                       )
  13.                      en
  14.              )
  15.      )
  16.     )
  17.   )
  18.   (princ)
  19. )

点评

看段落好漂亮  发表于 2014-12-10 17:14
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-20 21:24 , Processed in 0.320914 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表