明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2518|回复: 11

[源码] 框选直线,在框内端点连接成样条曲线

[复制链接]
发表于 2022-4-15 07:50:59 | 显示全部楼层 |阅读模式
  1. ;;说明:框选直线,在框内端点连接成样条曲线
  2. (defun C:ES(/ dxf10 dxf11 edata ent isptinrectang n pt1 pt2 ptlst ss)
  3.   ;;;判断p点是否在P1,P2构成的矩形框内
  4.   ;;;(IsPtInRectang (getpoint) (getpoint) (getpoint))
  5.   (defun IsPtInRectang(p1 p2 p) (vl-every '>= (mapcar '* (mapcar '- p p1) (mapcar '- p2 p)) '(0 0)))
  6.   (if (and (setq pt1 (getpoint "\n指定第一个角点:"))(setq pt2 (getcorner pt1 "指定第二个角点,确保连接的点在框内:")) (setq ss (ssget "C" pt1 pt2 '((0 . "LINE")))))
  7.     (progn
  8.       (setq ptlst nil n -1)
  9.       (while (setq ent (ssname ss (setq n (1+ n))))
  10.         (setq edata (entget ent) dxf10 (cdr (assoc 10 edata)) dxf11 (cdr (assoc 11 edata)))
  11.         (if (IsPtInRectang pt1 pt2 dxf10) (setq ptlst (cons dxf10 ptlst)))
  12.         (if (IsPtInRectang pt1 pt2 dxf11) (setq ptlst (cons dxf11 ptlst)))
  13.       )
  14.       (setq ptlst (vl-sort ptlst (function (lambda(p1 p2) (< (car p1) (car p2))))))
  15.       (entmake (append (list '(0 . "SPLINE")
  16.                          '(100 . "AcDbEntity")
  17.                          '(100 . "AcDbSpline")
  18.                          '(71 . 3)
  19.                        )
  20.                  (mapcar '(lambda (pt) (cons 11 pt)) ptlst)
  21.                )
  22.       )
  23.     )
  24.   )
  25.   (prin1)
  26. )


本帖子中包含更多资源

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

x

评分

参与人数 4明经币 +4 收起 理由
lee50310 + 1 赞一个!
xyp1964 + 1 赞一个!
hhh454 + 1 很给力!
bssurvey + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-4-20 06:27:11 | 显示全部楼层
zixuan203344 发表于 2022-4-15 08:16
建议:下端按最近点排序吧,你按X从小到大排序,不具备通用性

楼主的代码,只是给了一个思路吧。按你的意思,也不具备通用性,比如,当直线都是水平时,连线就混乱了。
 楼主| 发表于 2022-4-15 09:03:29 | 显示全部楼层
zixuan203344 发表于 2022-4-15 08:16
建议:下端按最近点排序吧,你按X从小到大排序,不具备通用性

我也想过,不过最近比较懒,具备最基本的使用就可以了,其他的懒得写!
 楼主| 发表于 2023-2-13 14:09:21 | 显示全部楼层
广易精通 发表于 2023-2-12 12:34
楼主你好!我想生成多段线可以吗?组码怎么对不上,麻烦赐教

可以啊,多段线顶点组码是10
发表于 2022-4-15 08:13:23 | 显示全部楼层
感谢分享,源码都得支持
发表于 2022-4-15 08:16:28 | 显示全部楼层
建议:下端按最近点排序吧,你按X从小到大排序,不具备通用性
发表于 2022-4-15 09:06:03 | 显示全部楼层
谢谢大神的分享,
发表于 2022-4-15 20:25:48 | 显示全部楼层
感谢楼主分享,学习
发表于 2022-4-20 15:30:04 | 显示全部楼层
很不错呀 感谢分享
发表于 2022-4-20 18:22:50 | 显示全部楼层

很不错呀 感谢分享
发表于 2023-2-12 12:34:41 | 显示全部楼层
楼主你好!我想生成多段线可以吗?组码怎么对不上,麻烦赐教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 15:43 , Processed in 0.214040 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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