找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 897|回复: 9

[编程申请]:如何实现多段线的部分克隆?

[复制链接]
发表于 2004-4-30 17:32:50 | 显示全部楼层 |阅读模式

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

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

×
最初的想法:想克隆从1->2->3的这一部分,但是法帖数天,无人问津。自己想了几个笨的法子.希望各位大侠不惜赐教。

有一多边形,我在上面选取三个点,并且通过measure取得图中的点(为了试验我把步长设为0.5),我想把1号点,2号点,3号点之间的点一次连起来,这样就可以实现这样就可以取得与多边形1-》3的近似曲线。请问怎么实现啊?给个例子提示一下,或者有什么好的想法,大家来讨论讨论。

如果此问题解决了,可以举一反三,扩展到曲线,弧。
哪位高人给个思路,或者给个例子,我在此空间上找了好久,没有类似的例子。 再或者哪位高人写个程序。
真心希望能够答复,共同探讨一下也是好的。期待着。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-5-1 07:14:08 | 显示全部楼层

Re: [编程申请]:如何实现线段的部分克隆?

最初由 yindb 发布
[B]最初的想法:想克隆从1->2->3的这一部分,但是法帖数天,无人问津。自己想了几个笨的法子.希望各位大侠不惜赐教。

有一多边形,我在上面选取三个点,并且通过measure取得图中的点(为了试验我把步长设为0.5),我?.. [/B]

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

使用道具 举报

发表于 2004-5-1 11:42:42 | 显示全部楼层
1. 标题有误"线段"应为"多线段"
2. 下面是2000的程序, 我现在在2005运行了一下, 有点小BUG, 你再调试调试.
(defun c:test (/ p ent )
  (setvar "osmode" 0)
  (setq ent (entsel "\nPick Polyline:"))
  (setq   p (getpoint "\npick Reference point:"))
  (setq  p1 (getpoint "\nSecond point:"))
  (vl-cmdf "explode" ent "")
  (vl-cmdf "copy" (ssget "c" (polar p (/ pi 4) 0.01)(polar p (* 1.25 pi) 0.01))
                        "" p p1 "")
  (setq entl (entget (entlast)))
  (vl-cmdf "undo" 2 "")
  (entmake (cdr entl)))
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-4 02:44:00 | 显示全部楼层
严格的说,炸开了,就不能算“克隆”了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-4 06:00:51 | 显示全部楼层
最初由 陌生人 发布
[B]严格的说,炸开了,就不能算“克隆”了 [/B]

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-5-4 09:18:13 | 显示全部楼层

Re: [编程申请]:如何实现线段的部分克隆?

最初由 yindb 发布
[B]最初的想法:想克隆从1->2->3的这一部分,但是法帖数天,无人问津。自己想了几个笨的法子.希望各位大侠不惜赐教。

有一多边形,我在上面选取三个点,并且通过measure取得图中的点(为了试验我把步长设为0.5),我?.. [/B]


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

使用道具 举报

 楼主| 发表于 2004-5-8 09:38:45 | 显示全部楼层

我用了一下您的这个程序,但是不是和我说的一样,你的方法是实现了顶点间的部分克隆,我想说的是任意两点间的克隆,第二个点就是起到定位的作用,定位是取哪个部分的多段线。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-5-8 13:26:54 | 显示全部楼层
最初由 yindb 发布
[B]
我用了一下您的这个程序,但是不是和我说的一样,你的方法是实现了顶点间的部分克隆,我想说?.. [/B]

  1. (defun c:XDTB_Curve_C2p        (/ e p1 p2 e1 p)
  2.   (if (and (setq e (xdrx_entsel
  3.                      "\n拾取曲线起点: "
  4.                      '((0 . "*polyline,line,spline,arc"))
  5.                    )
  6.            )
  7.            (setq p1 (cadr (xdrx_curve_ClosestPoint (car e) (last e))))
  8.            (setq p2 (getpoint p1 "\n结束点: "))
  9.            (setq p2 (cadr (xdrx_curve_ClosestPoint (car e) p2)))
  10.       )
  11.     (progn
  12.       (xdrx_begin)
  13.       (xdrx_entity_TransformedCopy (car e) (xdrx_matrix_identity 3))
  14.       (xdrx_sysvar_push "osmode")
  15.       (xdrx_setenttodb (car e))
  16.       (setvar "osmode" 0)
  17.       (command ".break" e "f" p1 p1)
  18.       (xdrx_sysvar_pop)
  19.       (xdrx_setenttodb (setq e1 (entlast)))
  20.       (xdrx_sysvar_push "osmode")
  21.       (setvar "osmode" 0)
  22.       (if (xdrx_ison p2 (car e))
  23.         (progn
  24.           (entdel e1)
  25.           (command ".break" e "f" p2 p2)
  26.           (entdel (car e))
  27.           (setq e1 (entlast))
  28.         )
  29.         (progn
  30.           (entdel (car e))
  31.           (command ".break" (list e1 p2) "f" p2 p2)
  32.           (entdel (entlast))
  33.         )
  34.       )
  35.       (if (setq p (getpoint p1 "\n目标点: "))
  36.         (command ".move" (list e1 p1) "" p1 p)
  37.       )
  38.       (xdrx_sysvar_pop)
  39.       (xdrx_end)
  40.     )
  41.   )
  42.   (princ)
  43. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-9 09:40:59 | 显示全部楼层
没用过lisp,这个怎么用啊?有arx的代码吗?看来真得看看lisp了,这里用lisp得人好多啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-5-9 09:59:14 | 显示全部楼层
最初由 yindb 发布
[B]没用过lisp,这个怎么用啊?有arx的代码吗?看来真得看看lisp了,这里用lisp得人好多啊! [/B]


ARX问题请发贴到ARX论坛。

如果用ARX,你可以用AcDbEntity::transformedCopy 拷贝源多段线生成新的多段线实体后,编辑顶点,用AcDbPolyline::removePointAt(...)把需要的子段外的顶点删除掉就可以了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 15:10 , Processed in 0.195950 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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