找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1555|回复: 19

[求助] 两相切且各自闭合多段线合并成一条闭合的多段线

[复制链接]
发表于 2018-8-29 21:49:23 | 显示全部楼层 |阅读模式

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

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

×
两个各自闭合且相切或相交的多段线(A、B)有一段共同的边界,要将公共边去掉,合并成C 那样的闭合多段线(如图),请问如何写函数?
未标题-1.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 590个

财富等级: 财运亨通

发表于 2018-8-30 13:35:10 | 显示全部楼层
本帖最后由 namezg 于 2018-8-30 13:55 编辑

(defun c:ZG_OutLine2 (/ zg-ss-entnext cmdecho_bak ss ssp enl)
        ;; [调用](zg-ss-entnext en)                       
        ;; [功能] 获取在图元 en 之后产生的图元的选择集   
        ;; [参数] en--图元名                              
        ;; [返回] 选择集                                 
        ;; [测试]1.(setq en (entlast))                    
        ;;         执行创建图元的命令,如 LINE,BOUNDARY   
        ;;         (setq ss (zg-ss-entnext en))           
        ;;       2.(setq ss (zg-ss-entnext (car(entsel))))
        (defun zg-ss-entnext (en / ss)
                (if en
                        (progn
                                (setq ss (ssadd))
                                (while (setq en (entnext en))
                                        (if (not (member (cdr (assoc 0 (entget en))) '("ATTRIB" "VERTEX" "SEQEND")))
                                                (ssadd en ss)
                                        )
                                )
                                (if (zerop (sslength ss)) (setq ss nil))
                                ss
                        )
                        (ssget "_x")
                )
        )
        (setq cmdecho_bak (getvar "cmdecho"))
        (setvar "cmdecho" 0)
        (if (setq ss (ssget))
                (progn
                        (setq enl (entlast))
                        (command "_.region" ss "");生成面域
                        (setq ssp (zg-ss-entnext enl));这里不能用(setq ss2 (ssget "p"))
                        (if ssp (command "_.union" ssp ""));面域交集
                        (setq ssp (ssget "p"))
                        (if ssp (command "_.explode" ssp));打散面域交集
                        (setq ssp (ssget "p"))
                        (setq enl (entlast))
                        (if ssp (command "_.pedit" "M" ssp "" "Y" "J" "0.0" ""));连接成多段线
                        (setq ssp (zg-ss-entnext enl));这里不能用(setq ss2 (ssget "p"))
                        (sssetfirst nil ssp);打开夹点句柄并选择对象
                )
        )
        (setvar "cmdecho" cmdecho_bak)
        (princ)
)

点评

高手出招,就是不一样,谢谢!  详情 回复 发表于 2018-8-30 20:32

评分

参与人数 1D豆 +10 收起 理由
XDSoft + 10 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-29 22:09:42 | 显示全部楼层
本帖最后由 newer 于 2018-8-29 22:16 编辑

变REGION,然后UNION,最后再变回曲线

用API,一个函数解决
(xdrx_get_union (car (entsel))(car (entsel)))

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2018-8-29 22:57:51 | 显示全部楼层
看newer的动画,完全满足要求。刚才测试了下,出现“错误: no function definition: XDRX_GET_UNION”。不知何因。另,本人才疏学浅,不知API为何东东,还烦请赐教。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6434个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 568个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2018-8-30 07:47:38 | 显示全部楼层
真龙天子 发表于 2018-8-29 22:57
看newer的动画,完全满足要求。刚才测试了下,出现“错误: no function definition: XDRX_GET_UNION”。不 ...

要安装晓东API才行,不同CAD版本安装的还不一样,我也一直没有搞懂。而且还要用API写几个程序,老大才能给你最新版。

点评

老黄,不要误人子弟啊,你说的都是哪年的事了,API现在每月至少更新5次,最新的版本是2018年8月28日更新的,随时随地可以下载最新版,而且同一的安装程序,安装时候自己勾选CAD版本就可以了。 http://bbs.xdcad.net  详情 回复 发表于 2018-8-30 11:04
你从唐朝穿越来的啊,最新版随时都在更新啊,而且有个统一的安装程序,不同的CAD版本自动安装啊,黄总还活在5年前啊  详情 回复 发表于 2018-8-30 10:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-30 07:58:46 | 显示全部楼层
连黄老师都还没搞懂,我等菜鸟就难了。能否先取得两多段线的拐点坐标表,将两表中共同的拐点坐标去除后合并两表,再用合并后的表画多段线?

点评

都可以写二次开发程序了,连个下载API,然后安装有什么难的吗? http://bbs.xdcad.net/source/plugin/disad/click.php?19  详情 回复 发表于 2018-8-30 10:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-8-30 09:09:05 | 显示全部楼层
这个也可以根据点坐标计算,把点坐标按顺序排序,如果A中其中一段与B中其中一段重合,那么就把剩下的组合起来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2018-8-30 09:19:47 | 显示全部楼层
真龙天子 发表于 2018-8-30 07:58
连黄老师都还没搞懂,我等菜鸟就难了。能否先取得两多段线的拐点坐标表,将两表中共同的拐点坐标去除后合并 ...

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-8-30 10:55:47 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2018-8-30 07:47
要安装晓东API才行,不同CAD版本安装的还不一样,我也一直没有搞懂。而且还要用API写几个程序,老大才能 ...

你从唐朝穿越来的啊,最新版随时都在更新啊,而且有个统一的安装程序,不同的CAD版本自动安装啊,黄总还活在5年前啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-8-30 10:58:33 | 显示全部楼层
真龙天子 发表于 2018-8-30 07:58
连黄老师都还没搞懂,我等菜鸟就难了。能否先取得两多段线的拐点坐标表,将两表中共同的拐点坐标去除后合并 ...

都可以写二次开发程序了,连个下载API,然后安装有什么难的吗?
http://bbs.xdcad.net/source/plugin/disad/click.php?19

评分

参与人数 1D豆 +5 收起 理由
/db_自贡黄明儒_ + 5 现在安装确实比较方便

查看全部评分

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-30 11:04:07 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2018-8-30 07:47
要安装晓东API才行,不同CAD版本安装的还不一样,我也一直没有搞懂。而且还要用API写几个程序,老大才能 ...

老黄,不要误人子弟啊,你说的都是哪年的事了,API现在每月至少更新5次,最新的版本是2018年8月28日更新的,随时随地可以下载最新版,而且同一的安装程序,安装时候自己勾选CAD版本就可以了。
http://bbs.xdcad.net/thread-668896-1-1.html

===========================================================================

什么是XDRX API?
   XDRX API是用ARX(C++)写的几千个可以让LISP调用的函数库,使用这些函数写成的LISP应用程序,执行前需要加载API。
XDRX API 有时间限制吗?
   没有

*
重要更新*
  • 从2016.10.11版本开始,提供XDRX API 安装程序,自动化安装。
  • 从2018.02.08版本开始,支持AutoCAD 2017,2018。
  • 从2018.03.28版本开始,支持AutoCAD 2019。

2018年08月28日更新

评分

参与人数 1D豆 +5 收起 理由
/db_自贡黄明儒_ + 5 确实现在比较方便。

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 04:41 , Processed in 0.566151 second(s), 68 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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