明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: baoyizhu

[提问] 闭合的近似圆的多段线怎么转换成真圆?求程序批量转换

[复制链接]
发表于 2020-11-7 14:41 | 显示全部楼层
taoyi0727 发表于 2020-10-30 15:12
(defun c:tt (/ lst name obj pt r ss)
        (setq ss (ssget))
        (while (setq name (ssname ss 0))

学习了
回复

使用道具 举报

发表于 2020-11-7 16:34 | 显示全部楼层
t18-13nil 发表于 2020-11-7 10:14
https://blog.csdn.net/u012138730/article/details/79894181
3点求圆心算法是很容易找到的

在CAD中,点1与点2的中垂线 和 点2与点3的中垂线的交点为圆心(P0)。
distance p0 p1 =R
(entmake ....就很简单了
回复

使用道具 举报

发表于 2020-11-7 18:08 | 显示全部楼层
我也遇到这样的问题,实际上这个问题并不简单,楼主想要的是真实的圆,主要指圆心坐标和圆的半径,上面各种处理办法得出的结果往往都是近似值,比如圆心为(9.9999999 10.0000000001),半径也类似,在设计中不可能取这样的数值,解决这个问题的 关键是根据这些近似值还原出真实值,有点类似于机械设计中的测绘,实测值为9.97,我们在绘图时应按10进行处理。
回复

使用道具 举报

发表于 2020-11-8 20:48 来自手机 | 显示全部楼层
前生 发表于 2020-11-7 16:39
(defun pt3a (pt1 pt2 pt3)                ;pt1以及pt3为起始点,pt2为中间的一点.
;;;================= ...

习惯了先搜,有的算法就不想自己去想。不好用了再去改。哈哈
回复

使用道具 举报

 楼主| 发表于 2020-11-11 09:56 | 显示全部楼层
t18-13nil 发表于 2020-11-8 20:48
习惯了先搜,有的算法就不想自己去想。不好用了再去改。哈哈

26楼的兄弟程序也不错,但是少了一个自定义函数没给全
32楼的兄弟把26楼缺失的函数补上来了,综合两位兄弟的程序
我下面贴出完整版,这个程序比9楼的处理速度更快。。值得推荐!
那么问题来了,我该采纳哪位为最佳答案呢?为难啊!
  1. (defun c:tt (/ ss n ent para p1 p2 p3)
  2.    (if (setq ss (ssget '((0 . "LWPOLYLINE"))))
  3.      (repeat (setq n (sslength ss))
  4.        (setq ent         (ssname ss (setq n (1- n)))
  5.              para (vlax-curve-getEndParam ent)
  6.              p1         (vlax-curve-getPointAtParam ent 0)
  7.              p2         (vlax-curve-getPointAtParam ent (fix (* para 0.33)))
  8.              p3         (vlax-curve-getPointAtParam ent (fix (* para 0.66)))
  9.        )
  10.        (pt3a p1 p2 p3)
  11.        (entdel ent)
  12.      )
  13.    )
  14.    (princ)
  15. )

  16. (defun pt3a (pt1 pt2 pt3)                ;pt1以及pt3为起始点,pt2为中间的一点.
  17. ;;;==================================
  18. ;;;  (setq        pt1 (list (nth 0 pt1) (nth 1 pt1) 0.0)
  19. ;;;        pt2 (list (nth 0 pt2) (nth 1 pt2) 0.0)
  20. ;;;        pt3 (list (nth 0 pt3) (nth 1 pt3) 0.0)
  21. ;;;  )
  22.    (if
  23.      (setq cent
  24.             (Inters
  25.               (polar pt1 (angle pt1 pt2) (* 0.5 (distance pt1 pt2)))
  26.               (polar (polar pt1 (angle pt1 pt2) (* 0.5 (distance pt1 pt2)))
  27.                      (+ (* 0.5 pi) (angle pt1 pt2))
  28.                      1.0
  29.               )
  30.               (polar pt3 (angle pt3 pt2) (* 0.5 (distance pt3 pt2)))
  31.               (polar (polar pt3 (angle pt3 pt2) (* 0.5 (distance pt3 pt2)))
  32.                      (+ (* 0.5 pi) (angle pt3 pt2))
  33.                      1.0
  34.               )
  35.               nil
  36.             )
  37.      )                                        ;假如有交点,则可以做园,否则做直线
  38.        (entmake        (list (cons 0 "circle")
  39.                        (cons 8 "ok")
  40.                        (cons 10 cent)
  41.                        (cons 40 (distance cent pt1))
  42.                        (cons 62 102)
  43.                  )
  44.         )    (entmake        (list (cons 0 "line")
  45.                        (cons 8 "ok")
  46.                        (cons 10 pt1)
  47.                        (cons 11 pt2)
  48.                        (cons 62 102)
  49.                  )
  50.         )
  51.    )
  52.    (princ)
  53. )
回复

使用道具 举报

 楼主| 发表于 2020-11-11 10:13 | 显示全部楼层
lijiao 发表于 2020-11-7 18:08
我也遇到这样的问题,实际上这个问题并不简单,楼主想要的是真实的圆,主要指圆心坐标和圆的半径,上面各种 ...

你说的这个情况属实也是我的想法。能得到近似值的圆也就问题不大了,毕竟用特效工具改圆直径很简单。
因为程序也不好判断使用者需要精确到几位小数。
回复

使用道具 举报

发表于 2020-11-11 10:13 | 显示全部楼层
baoyizhu 发表于 2020-11-11 09:56
26楼的兄弟程序也不错,但是少了一个自定义函数没给全
32楼的兄弟把26楼缺失的函数补上来了,综合两位兄 ...

谁差币就给谁呗,纠结啥
回复

使用道具 举报

 楼主| 发表于 2020-11-11 10:17 | 显示全部楼层
taoyi0727 发表于 2020-11-11 10:13
谁差币就给谁呗,纠结啥

你比较富有,那我就替32楼的兄弟感谢你啦
回复

使用道具 举报

发表于 2020-11-11 13:04 | 显示全部楼层
baoyizhu 发表于 2020-11-11 09:56
26楼的兄弟程序也不错,但是少了一个自定义函数没给全
32楼的兄弟把26楼缺失的函数补上来了,综合两位兄 ...

看起来,你也是做机械加工或模具的。
回复

使用道具 举报

 楼主| 发表于 2020-11-12 08:56 | 显示全部楼层
前生 发表于 2020-11-11 13:04
看起来,你也是做机械加工或模具的。

我是做金属蚀刻加工的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-18 19:42 , Processed in 0.135831 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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