kucha007 发表于 2022-12-16 00:12:46

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

本帖最后由 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


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



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






kucha007 发表于 2022-12-16 02:38:03

本帖最后由 kucha007 于 2023-7-12 17:11 编辑


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



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

fsafaffa 发表于 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)
                )
        )
)
)

kucha007 发表于 2022-12-16 00:31:54

本帖最后由 kucha007 于 2022-12-16 02:54 编辑

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

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

kucha007 发表于 2022-12-16 01:24:23

kucha007 发表于 2022-12-16 00:31
有没有大佬知道为什么偶尔会出现这种错误?




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

kucha007 发表于 2022-12-16 09:14:02

论坛里找到了这个帖子,相当于重绘圆弧了。但还不知道咋用= =。我得把选择集内的圆弧转多段线再加入选择集

http://bbs.mjtd.com/thread-186768-1-1.html

依然小小鸟 发表于 2022-12-22 15:53:55

楼主 我是结构专业 有强迫症 不能忍受直线 多段线 圆弧 等 有碎数 你能整合一个程序吗 让有碎数的线 规整一下

kucha007 发表于 2022-12-22 16:14:30

依然小小鸟 发表于 2022-12-22 15:53
楼主 我是结构专业 有强迫症 不能忍受直线 多段线 圆弧 等 有碎数 你能整合一个程序吗 让有碎数的线 规整一 ...

论坛上应该有类似的程序,你搜一下吧。我这个也是自己需要瞎改的

依然小小鸟 发表于 2022-12-24 09:49:59

kucha007 发表于 2022-12-22 16:14
论坛上应该有类似的程序,你搜一下吧。我这个也是自己需要瞎改的

找了好久没找到

kucha007 发表于 2022-12-24 10:33:06

СС2022-12-24 09:49



http://bbs.mjtd.com/forum.php?mod=viewthread&tid=86961&highlight=%CA%FD%BE%DD%C8%A1%D5%FB&mobile=2

依然小小鸟 发表于 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 ...

打不开呢 有电脑端的网址链接吗
页: [1] 2
查看完整版本: 【AF】圆弧半径规整_v1.7——起点终点不变