找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1137|回复: 10

[已解决] 样条曲线转多线保持拟合控制点位置数量不变

[复制链接]

已领礼包: 6881个

财富等级: 富甲天下

发表于 2018-11-15 13:30:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
样条曲线转多线保持拟合控制点位置数量不变
手工选择多条 或 自动将全图中的样条曲线

按原拟合控制点位置数量不变,改为多段线。

谢谢大师的指点



保持拟合点位置和数量不变改为多段线.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2018-11-15 17:16:43 | 显示全部楼层
本帖最后由 lisperado 于 2018-11-15 17:22 编辑

  1. (defun c:tt (/ s e l)
  2.   (prompt "\n请选取样条曲线 SPLINE ")
  3.   (if (setq s (ssget '((0 . "SPLINE") (-4 . "!=") (74 . 0))))
  4.     (repeat (setq i (sslength s))
  5.       (setq e (ssname s (setq i (1- i)))
  6.             l (mapcar 'cdr (vl-remove-if-not ''((x) (= 11 (car x))) (entget e)))
  7.             )
  8.       (entmakex        (vl-list* '(0 . "LWPOLYLINE")
  9.                           '(100 . "AcDbEntity")
  10.                           '(100 . "AcDbPolyline")
  11.                           '(70 . 0)
  12.                           (cons 90 (length l))
  13.                           (mapcar '(lambda (x) (cons 10 x)) l)
  14.                           )
  15.                 )
  16.       )
  17.     (princ "\n选取无效!")
  18.     )
  19.   (princ)
  20.   )

点评

谢谢您 果然是好程序 1、不知如何把原有的样条曲线删除? 2、如再进一步,不知如何自己把全图中的样条曲线自己按此方法改为多段线? 谢谢您的指导  详情 回复 发表于 2018-11-15 23:13
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2018-11-15 23:13:05 | 显示全部楼层

谢谢您
果然是好程序

1、不知如何把原有的样条曲线删除?

2、如再进一步,不知如何自己把全图中的样条曲线自己按此方法改为多段线?

谢谢您的指导
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-11-16 06:38:45 | 显示全部楼层
本帖最后由 lisperado 于 2018-11-16 06:41 编辑

1. 简单,循环repeat中
(setq e …..)
( entdel e )
(entmakex …. )

2. 虽然中文不是很了解,可以试一试
if 换成 or
repeat 换成 while

(or
(while (setq s (ssget "_:S:E:L" '((0 . "SPLINE") (-4 . "!=") (74 . 0)))
(setq e (ssname s 0 ) l … ) ; setq
(entdel e)
...
...
...

) ; while
(princ "\n选取无效!")
) ; or

点评

再请大师试试指导一下 如何不用手工选择,自动把全图中的样条曲线按之前的方法改为多线? 谢谢您  详情 回复 发表于 2018-11-16 11:38
衷心感谢您的耐心指点 向您致敬!  详情 回复 发表于 2018-11-16 09:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6434个

财富等级: 富甲天下

发表于 2018-11-16 08:08:51 | 显示全部楼层
谢谢大侠的程序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2018-11-16 09:10:34 | 显示全部楼层
lisperado 发表于 2018-11-16 06:38
1. 简单,循环repeat中
(setq e …..)
( entdel e )

衷心感谢您的耐心指点
向您致敬!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2018-11-16 11:38:48 | 显示全部楼层
lisperado 发表于 2018-11-16 06:38
1. 简单,循环repeat中
(setq e …..)
( entdel e )

再请大师试试指导一下
如何不用手工选择,自动把全图中的样条曲线按之前的方法改为多线?
谢谢您
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-11-16 12:24:03 | 显示全部楼层
ynhh 发表于 2018-11-16 11:38
再请大师试试指导一下
如何不用手工选择,自动把全图中的样条曲线按之前的方法改为多线?
谢谢您

其实不难干嘛不参考ssget函数自行修改调试?至少错误中学习!

请参考我第一个回复(沙发)的原代码,只修改一行:

(if
(setq s (ssget "X" (list '(0 . "SPLINE") '(-4 . "!=") '(74 . 0) (cons 410 (getvar 'CTAB)))))

(repeat ...
...
(entdel e)

)
...

点评

谢谢您的耐心多次指导 只是我很笨 多次麻烦您了 最后一次就对了,能自动改全图内容 再次衷心感谢您  详情 回复 发表于 2018-11-16 13:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6881个

财富等级: 富甲天下

 楼主| 发表于 2018-11-16 13:19:48 | 显示全部楼层
lisperado 发表于 2018-11-16 12:24
其实不难干嘛不参考ssget函数自行修改调试?至少错误中学习!

请参考我第一个回复(沙发)的原代码,只 ...

谢谢您的耐心多次指导
只是我很笨
多次麻烦您了
最后一次就对了,能自动改全图内容
再次衷心感谢您
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-1-5 19:33:32 | 显示全部楼层
为什么我复制这个代码在CAD2012下运行,提示“选取无效”,
将(if (setq s (ssget '((0 . "SPLINE") (-4 . "!=") (74 . 0))))
改成(if (setq s (ssget '((0 . "SPLINE")(74 . 0))))
结果什么也没画出来,只有一个点。这个程序对样条曲线有什么要求么?

点评

(ssget '((0 . "SPLINE") (-4 . "!=") (74 . 0)))这个的意思是选择 组码74不等于0的样条曲线 你去查看下组码74的含义是什么  详情 回复 发表于 2019-1-5 20:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2019-1-5 20:02:37 | 显示全部楼层
zhoujun74518 发表于 2019-1-5 19:33
为什么我复制这个代码在CAD2012下运行,提示“选取无效”,
将(if (setq s (ssget '((0 . "SPLINE") (-4 . ...

(ssget '((0 . "SPLINE") (-4 . "!=") (74 . 0)))这个的意思是选择 组码74不等于0的样条曲线

你去查看下组码74的含义是什么




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-26 18:57 , Processed in 0.195379 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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