明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1230|回复: 4

[讨论] 【e派】多段线弧心列表

[复制链接]
发表于 2016-1-7 12:59 | 显示全部楼层 |阅读模式
  1. ;; tt(多段线圆弧圆心点集)
  2. ;; 方法1
  3. ;; 复制多段线,炸开过滤ARC,取圆心组表ptn,删除新实体,返回ptn
  4. ;; 优点:适于polyline和lwpolyline实体
  5. ;; 问题:伪源码太多,程序啰嗦
  6. (defun xyp-PlineCerter (s1 / s0 s2 ss ptn)
  7.   (setq s0 (entlast)
  8.         s2 (xyp-copy s1)
  9.   )
  10.   (xyp-explodeqf s2)
  11.   (setq ss (xyp-SSelEntnext s0)
  12.         ptn (vl-remove-if-not '(lambda (x) (xyp-etype x "arc"))(xyp-Ss2List ss))
  13.         ptn (mapcar '(lambda (x) (xyp-DXF 10 x)) ptn)
  14.   )
  15.   (xyp-erase ss)
  16.   ptn
  17. )

  18. ;; 方法2
  19. ;; 直接过滤有凸点的点,利用osnap函数直接取圆心坐标
  20. ;; xyp-LwpCerter 多段线圆弧圆心点集 (xyp-LwpCerter ename)
  21. ;; 优点:代码精简
  22. ;; 问题:只适于lwpolyline实体
  23. (defun xyp-LwpCerter (s1 / lst a b ptn)
  24.   (setq lst (vl-remove-if-not '(lambda (x) (member (car x) '(10 42)))(entget s1)))
  25.   (while (and (setq a (car lst)) (setq b (cadr lst)))
  26.     (setq lst (cddr lst))
  27.     (if        (/= (cdr b) 0)(setq ptn (cons (osnap (cdr a) "cen") ptn)))
  28.   )
  29.   (reverse ptn)
  30. )

  31. (defun c:tt ()
  32.   (if (and (setq s1 (car (entsel "\n选择多段线: ")))
  33.            (setq ptn (xyp-LwpCerter s1))
  34.       )
  35.     (progn
  36.       (xyp-Pline ptn nil)
  37.       (mapcar '(lambda (x) (xyp-Cross x 10 0)) ptn)
  38.     )
  39.   )
  40.   (princ)
  41. )

评分

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

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2016-1-7 14:00 | 显示全部楼层
直接计算即可,我只有vb代码
http://bbs.mjtd.com/forum.php?mo ... &fromuid=332660
发表于 2016-1-7 14:10 | 显示全部楼层
好东西,谢谢版主分享。
发表于 2016-1-7 20:07 | 显示全部楼层
收藏下。感谢分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 15:42 , Processed in 0.405316 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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