明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2620|回复: 19

【AF】圆弧半径规整_v1.7——起点终点不变

[复制链接]
发表于 2022-12-16 00:12:46 | 显示全部楼层 |阅读模式
本帖最后由 kucha007 于 2023-7-12 17:11 编辑

最早来自这里,昨天发帖请教坛友有没有合适的思路:http://bbs.mjtd.com/thread-186848-1-1.html?_dsign=49825f69
结果在查资料的时候发现了几乎符合我需求的程序,于是我努力学习,看懂了之后做了一些调整:
01-支持多选,先选
02-优化舍入部分的代码(大于舍入值中位数进一,小于舍去。如果规整后的圆弧直径小于弦长,也进一)。
03-用更清晰的方式命名变量,也加了一些注释,希望可以帮到有同样需求的朋友。

1.4版本:多段线直接处理。圆弧借用了坛友的源码,先转多段线再处理。
1.5版本:加了类似格式刷的操作,可能会慢一些(本来想在生成圆弧多段线的时候直接就获取对象特性,但老是不成功= =)

感谢作者的分享,程序源码在这里:https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/auto-edit-bulge-radius-pline-to-even-odd/td-p/7932740

找资料过程中遇到的关于凸度的介绍:看完基本上也就懂原理了:
https://www.afralisp.net/archive/lisp/Bulges1.htm
http://lee-mac.com/bulgeconversion.html

  1. ;已知圆半径R和弦长D,求弦高H
  2. (setq H (sqrt (- (expt R 2) (expt (* D 0.5) 2))))


  1. ;半径四舍五入
  2. (if (= 0 (Setq FVar (fix (/ (+ Rad (* Round 0.5)) Round))))
  3.     (setq Rad Round)
  4.     (setq Rad (* Round FVar))
  5. );四舍五入
  6. (if (< Rad LenStr)(setq Rad (+ Rad Round)));避免圆直径小于弦长






本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
tigcat + 1 很给力!

查看全部评分

 楼主| 发表于 2022-12-16 02:38:03 | 显示全部楼层
本帖最后由 kucha007 于 2023-7-12 17:11 编辑


20230712_v1.7
1-支持圆半径规整



20230707_v1.6

1-重构了函数,使得更容易理解和更新
2-支持先选和后选,支持圆弧和轻多段线
3-圆弧规整以后还是圆弧,方便属性栏查看半径
4-舍入基数改为全局变量,方便多次使用

发表于 2023-11-27 11:23:27 | 显示全部楼层
(defun c:tt ()
(if (setq ss (ssget '((0 . "line"))))
        (progn
                (setq ss (mapcar 'cadr (vl-remove-if-not '(lambda (x) (= (car x) 3))(ssnamex ss))))
                (foreach x ss
                        (setq dxf (entget x)
                                pt1 (cdr (assoc 10 dxf))
                                pt2 (assoc 11 dxf)
                                pt22 (cdr pt2)
                                len (distance pt1 pt22)
                                pt22 (polar pt1 0 len)
                                dxf (subst (cons 11 pt22) pt2 dxf)
                        )
                        (entmod dxf)
                )
        )
)
)
 楼主| 发表于 2022-12-16 00:31:54 | 显示全部楼层
本帖最后由 kucha007 于 2022-12-16 02:54 编辑

有没有大佬知道为什么偶尔会出现这种错误?
  1. ; 错误: 没有为参数定义函数: -0.232869


附件中的这条多段线规整后时报错,偶尔还会出现某段圆弧无法规整的情况。
感觉是我修改的舍入部分还有没考虑到的地方。

本帖子中包含更多资源

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

x
 楼主| 发表于 2022-12-16 01:24:23 | 显示全部楼层
kucha007 发表于 2022-12-16 00:31
有没有大佬知道为什么偶尔会出现这种错误?

测试文件2,半径规整成300/500都会报错

本帖子中包含更多资源

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

x

点评

谢谢黄大师,我已经找到原因了,是舍入后的圆弧直径小于弦长了  发表于 2022-12-16 08:49
整除整=整  发表于 2022-12-16 07:10
 楼主| 发表于 2022-12-16 09:14:02 | 显示全部楼层
论坛里找到了这个帖子,相当于重绘圆弧了。但还不知道咋用= =。我得把选择集内的圆弧转多段线再加入选择集

http://bbs.mjtd.com/thread-186768-1-1.html
发表于 2022-12-22 15:53:55 | 显示全部楼层
楼主 我是结构专业 有强迫症 不能忍受直线 多段线 圆弧 等 有碎数 你能整合一个程序吗 让有碎数的线 规整一下
 楼主| 发表于 2022-12-22 16:14:30 | 显示全部楼层
依然小小鸟 发表于 2022-12-22 15:53
楼主 我是结构专业 有强迫症 不能忍受直线 多段线 圆弧 等 有碎数 你能整合一个程序吗 让有碎数的线 规整一 ...

论坛上应该有类似的程序,你搜一下吧。我这个也是自己需要瞎改的
发表于 2022-12-24 09:49:59 | 显示全部楼层
kucha007 发表于 2022-12-22 16:14
论坛上应该有类似的程序,你搜一下吧。我这个也是自己需要瞎改的

找了好久没找到
 楼主| 发表于 2022-12-24 10:33:06 来自手机 | 显示全部楼层
发表于 2022-12-24 16:17:28 | 显示全部楼层
kucha007 发表于 2022-12-24 10:33
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=86961&highlight=%CA%FD%BE%DD%C8%A1%D5%FB&mobile ...

打不开呢 有电脑端的网址链接吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 04:34 , Processed in 0.324582 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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