找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2962|回复: 21

[研讨] 批量线(多义线)编程深入探讨(一)

[复制链接]
发表于 2013-5-3 13:33:34 | 显示全部楼层 |阅读模式

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

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

×
鉴于1-5论坛中探讨的已经很成熟了,我们直接从6,7开始。暨
6、  批量线的打断
7、  打断后的批量线自动闭合
要求实现的功能:
1.自动打断:点击红色的多义线,自动打断跟该线相交的其它多义线;
2.自动画线,自动闭合:被打断的多义线沿打断线自动画线,自动闭合;
3.自动标注:根据打断前多义线标号,自动标注打断后的多义线序号。
希望大家探讨编程思路,并实现功能。
未标题-1.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-3 14:24:14 | 显示全部楼层
给出编程思路如下:
1、选择红线,计算顶点列表pts
2、(ssget "cp" pts '((0 . "*polyline"))) 选择多段线得到选择集SS,并将选择集SS的每条多段线编号,并将编号添加到扩展数据中,
3、(ssget "wp" pts '((0 . "*polyline"))) 选择与红线不相交的多段线选择集ss1,并将该选择集的元素从选择集SS中删除,然后删除之
3、(setq EndEnt (entlast)) 记录图形最后一个元素,然后用(command "trim" "F" ...) 命令模式剪裁多段线,多剪裁几次,确保所有多段线被剪裁干净
4、取得EndEnt图元后生成的所有多段线,加入选择集SS,选择集SS就是所有被剪裁过的多段线,
5、逐个处理SS中的多段线,根据多段线的起点和终点在红线上的位置,得到多段线起点和中点间应该添加的节点,其新编号根扩展数据中的编号来重新编号!

点评

难点应该是怎样把裁剪后新增加的多义线找出来,怎样自动绘制多义线。  发表于 2013-5-3 15:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-3 15:46:57 | 显示全部楼层
感谢牢固版主的精彩思路。有一点我说的不全,也没有画出,图中与红线不相交的多义线还有还多条,如果将其都删除的话,程序运行结束后,还得需要重新建立实体。能不能考虑不删除实体,把打断多义线后新增加的实体找出来。个人感觉这种方式可能更好。但感觉实现起来很难。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-3 16:19:53 | 显示全部楼层

与红线不相交的多段线删与不删,由你自定!不影响程序思路!改成(ssget "F" pts '((0 . "*polyline")))栏选即可!打断后的新实体如何寻找,很简单,我再思路里已经说的很清楚了,用entnext函数找出 endent后所有图元!
[pcode=lisp,true](whiile (setq endent (entnext endent)) (ssadd endent ss))[/pcode]
其实一点也不复杂,希望你能循着这个思路把程序写出来!

点评

谢谢固版主的精心指点,我会尽快写出程序。  发表于 2013-5-4 14:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-5-3 17:37:51 | 显示全部楼层
凑个热闹,楼主想得到打断后的多段线实体,可以在打断前设下标记。打断后,获得标记后所有新加入到数据库的实体就行了。

[pcode=lisp,true]
;;打断前
    (setq ent (entlast))
;|
......................执行打断的代码
|;
    (while (setq ent (entnext))
        (setq newelist (cons ent newelist))
    )
;;newelist 就是打断后新生成的实体
[/pcode]

点评

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

使用道具 举报

已领礼包: 86个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-5-3 19:25:19 | 显示全部楼层
突然有了个想法,是不是可以把红色框中的所有线给TRIM掉? 就不用打断了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

已领礼包: 1632个

财富等级: 堆金积玉

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-3 22:32:42 | 显示全部楼层
ScmTools 发表于 2013-5-3 19:57
还要考虑带有圆弧的多段线

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

使用道具 举报

已领礼包: 1632个

财富等级: 堆金积玉

发表于 2013-5-4 08:56:11 | 显示全部楼层
本帖最后由 ScmTools 于 2013-5-4 08:57 编辑

谢谢固版的讲解, 当初看到题意时,我想到的思路是直接取多段线全部等分点集,然后按点集修剪或打断来实现。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 218个

财富等级: 日进斗金

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

使用道具 举报

 楼主| 发表于 2013-5-9 17:24:56 | 显示全部楼层
主要的技术障碍已解决,将于近期附上解决程序。(目前暂未研究带有圆弧的多义线情况)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 11:10 , Processed in 0.397362 second(s), 64 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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