找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 841|回复: 7

[求助] [求助]:合并s拟合后的多段线为何形状又变成拟合前?

[复制链接]
发表于 2005-11-23 09:29:01 | 显示全部楼层 |阅读模式

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

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

×
我编写了一个把多条多段线连接成一条的程序,可当选取得多段线是s拟合后的多段线时,运行完程序图形又变成了拟合前的形状,不知应该怎样修改?

(defun c:j( / ENT DATA OCMD )
(SETQ OCMD (GETVAR "CMDECHO"))
(SETVAR "CMDECHO" 0 )
(setq ent (entsel "选择需要连接的线段:\n"))
(setq data (entget (car ent)))
(setq name (cdr (assoc 0 data)))
(if (OR(= name "LWPOLYLINE")(= name "POLYLINE"))
     (command "pedit" ent "j" "all" "" "")
     (command "pedit" ent "y" "j" "all" "" "")
)
  (SETVAR "CMDECHO" OCMD)
  (PRINC "Objects have been joined.")
  (PRINC)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-23 12:29:41 | 显示全部楼层
并未加F选项。
修改程序:
  1. [FONT=courier new](defun c:test (/ ent name OCMD)
  2.   (SETQ OCMD (GETVAR "CMDECHO"))
  3.   (SETVAR "CMDECHO" 0)
  4.   (setq        ent  (car (entsel "\n选择需要连接的线段 : "))
  5.         name (cdr (assoc 0 (entget ent)))
  6.   )
  7.   (if (OR (= name "LWPOLYLINE") (= name "POLYLINE"))
  8.     (command "pedit" ent "j" "all" "" "f" "")
  9.     (command "pedit" ent "y" "j" "all" "" "f" "")
  10.   )
  11.   (SETVAR "CMDECHO" OCMD)
  12.   (redraw ent 3)
  13.   (PRINC)
  14. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-23 13:56:21 | 显示全部楼层
可是这样连接后的线和连接前比较是有变形的,能不能保证和原来的形状一样呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-23 21:48:19 | 显示全部楼层
最初由 wangwangnn 发布
[B]可是这样连接后的线和连接前比较是有变形的,能不能保证和原来的形状一样呢? [/B]

为什么要提到“拟合”呢?
  1. [FONT=courier new](defun c:test (/ ent name OCMD)
  2.   (SETQ OCMD (GETVAR "CMDECHO"))
  3.   (SETVAR "CMDECHO" 0)
  4.   (setq        ent  (car (entsel "\n选择需要连接的线段 : "))
  5.         name (cdr (assoc 0 (entget ent)))
  6.   )
  7.   (if (OR (= name "LWPOLYLINE") (= name "POLYLINE"))
  8.     (command "pedit" ent "j" "all" "" "")
  9.     (command "pedit" ent "y" "j" "all" "" "")
  10.   )
  11.   (SETVAR "CMDECHO" OCMD)
  12.   (redraw ent 3)
  13.   (PRINC)
  14. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-23 22:44:44 | 显示全部楼层
这是cad本身的规则,没法改变的。
先合并再重新拟合难免会变形,因此另一个思路是先炸碎拟合的曲线,然后将所有碎片(都是line)连接起来,能够保证原来的形状,缺点是顶点会增加很多。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-23 22:52:44 | 显示全部楼层
最初由 841594 发布
[B]这是cad本身的规则,没法改变的。
先合并再重新拟合难免会变形,因此另一个思路是先炸碎拟合的曲线,然后将所有碎片(都是line)连接起来,能够保证原来的形状,缺点是顶点会增加很多。 [/B]

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

使用道具 举报

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

使用道具 举报

发表于 2005-11-24 08:55:47 | 显示全部楼层
最初由 狂刀 发布
[B]炸碎是为了保持"形",这个方法是可行的,符号楼主的需要 [/B]

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 22:11 , Processed in 0.187108 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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