明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1623|回复: 5

[已解答] 样条曲线转圆的问题

[复制链接]
发表于 2015-11-12 09:50:36 | 显示全部楼层 |阅读模式
本帖最后由 hbgsw 于 2015-11-12 15:28 编辑

问题介绍:目前工作中经常有Proe转CAD 的图纸,有些模型建模不标准,就存在有本应该为圆的图形,结果转换到CAD中后,就成了样条曲线,现需将样条曲线转换成为圆,先弄个简单的功能满足要求,我的思路如下:
1 获取样条曲线2个端点,(一个圆分成了2个样条曲线)
2 端点重复过滤
3 根据2个端点表,生成图层,中心点,半径 的表
4 entmake 重新生成圆。
目前卡壳在2和3处了,对于lambda和mapcar这2个函数运用实在不熟悉,请各位帮忙下,谢谢,附上图纸和截图。

   


本帖子中包含更多资源

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

x
 楼主| 发表于 2015-11-12 10:47:25 | 显示全部楼层
本帖最后由 hbgsw 于 2015-11-13 09:01 编辑

已经自己解决了,虽然写的很烂,
  1. (defun c:2t (/ entss n lay ent cen x1 lst r)
  2.      ;样条曲线线转圆弧或者圆
  3.   (setvar "cmdecho" 0)
  4.   (while (not (setq entss (ssget '((0 . "SPLINE"))))))
  5.   (setq n   0
  6. lay "0"
  7. lst nil
  8.   )
  9.   (while (setq ent (ssname entss (setq n (1+ n))))
  10.     (setq ent
  11.        (mapcar
  12.   'cdr
  13.   (vl-remove-if-not '(lambda (x) (= 10 (car x))) (entget ent))
  14.        )
  15.    ent (list (car ent) (last ent));获得两个端点
  16.     )
  17.     (setq
  18.       cen (mapcar '(lambda (x) (/ x 2))
  19.     (apply '(lambda (x1 x2) (mapcar '+ x1 x2)) ent)
  20.    )
  21.     )
  22.     (setq r (/ (distance (car ent) (cadr ent)) 2))
  23.     (setq lst (cons (list cen ent r) lst));将中心点,两端点,半径形成表
  24.   )
  25.   (setq lst (delsame lst 0.001));重复过滤
  26.   (hbg_entmake_layer "MARK")
  27.   (command "CHPROP"  entss  ""    "la"      "MARK"
  28.       "c"       "bylayer"  ""
  29.      )
  30.   (foreach x1 lst
  31.     (setq cen (car x1)
  32.    r   (caddr x1)
  33.     )
  34.     (hbg_entmake_circle lay cen r);生产新圆
  35.   )
  36.   (princ)
  37. )
  38. (defun delsame(l1 rcz / l2);;带容差去重(重复过的取第一次出现),有时处理坐标点需要考虑容差,函数作者:llsheng_73
  39.   (while l1
  40.     (setq l2(cons(car l1)l2)l1(vl-remove-if'(lambda (x)(equal(car(car l1)) (car x) rcz))(cdr l1))))
  41.   (reverse l2))


本帖子中包含更多资源

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

x
发表于 2015-11-22 20:54:27 | 显示全部楼层
楼主,R角可以转吗?
 楼主| 发表于 2015-11-23 09:16:40 | 显示全部楼层
想办法是可以的。
发表于 2022-10-12 23:48:07 | 显示全部楼层
支持个请问有完美的源码吗,,谢谢大佬;
发表于 2024-6-24 16:22:52 | 显示全部楼层
不能运行,是需要再家个运行参数吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 15:49 , Processed in 0.227945 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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