找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3172|回复: 13

[编程申请]:沿路径搜索图块

[复制链接]
发表于 2002-4-3 06:26:20 | 显示全部楼层 |阅读模式

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

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

×
有个搞电气的朋友给我提了如下要求:
已知:一些图块用LINE实体相连,Line 有可能是打断的,间距小于变量space.
     (即电路图)
求解:给定其中一个LINE后,自动搜索出所有相关连的图块.


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

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-4-3 06:39:46 | 显示全部楼层
思路:

  点起始的LINE,求包围盒,然后OFFSET包围盒(往外)SPACE距离得到新的矩形框,然后构造这个矩形框的选择集,然后求这个选择集的包围盒子,递归下去,直到选择集的包围盒子不能在构造出选择集为止。

XDRX_API提供了几个函数可以让你轻松的完成代码,而且代码肯定不多。

169. xdrx_getentitybox

功能:求任何实体的包围盒

调用格式:(xdrx_getentitybox <实体名或选择集>...<实体名或选择集>)

返回值:包围盒表(左下点 右下点 右上点 左上点)

说明:若实体名多个或者是选择集,那么求所有实体的最大的包围盒。


137. xdrx_pointsoffset

功能:将点集偏移指定距离

调用格式:(xdrx_pointsoffset <距离> <p1>....<pn>)

说明:往外偏移,距离为正

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

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2002-4-3 07:12:55 | 显示全部楼层
我理解你的意思大概是:一些电器元件符号块用一些Line连着(就是电线吧),需要根据这一根根电线找出线路上所有的元件信息,这样可以作为自动生成系统图的基础和依据,对吗?

如果只是这些Line为搜索条件,几乎不太可能实现,因为我知道,电气图上的这些线不是在同一直线上的啊,除非在画这些电线Line对象时就附加了Xrecord或Xdata,且每个insert的Block也记录了其前后两根Line的Handle...这样或许可以实现.

据我所知目前AutoCAD上的电气软件还没有谁能根据平面布线自动生成系统图的...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-4-3 07:57:36 | 显示全部楼层

Re: [编程申请]:沿路径搜索图块

最初由 y0yxt 发布
[B]有个搞电气的朋友给我提了如下要求:
已知:一些图块用LINE实体相连,Line 有可能是打断的,间距小于变量space.
     (即电路图)
求解:给定其中一个LINE后,自动搜索出所有相关连的图块.


朋友要得比较急,... [/B]


方法2:

1. 点开始线,求得两个端点

2. 构造过端点的INSERT实体选择集

3. 求INSERT的轮廓线(或者上面帖子的包围盒)

4. 求开始线和轮廓线的两个交点,然后得到距离较直线端点远的点

5. 构造4求得的点的LINE实体选择集

6. 得到LINE,然后递归从1开始做,直到步骤5得不到LINE或者步骤2得不到INSERT选择集

说明:构造过一个点的实体选择集,可以给个SPACE距离的框作为C的参数

XDRX_API有足够的支持,做这些事情。

可以用到的函数有:


30.xdrx_GetPtSs


功能:构造通过一点的符合过滤要求的实体选择集

调用格式:(xdrx_GetPtSs <pt> [提示字符串]  [拾取窗半宽] [英文层名或中文层索引名] [内部数据库选择集编号][过滤表])         

说明:1.层名: 可以写作 "abc", "a*", "a??", "*" 等, 省略层名等价于 "*"。
     2.内部数据库选择集编号: 该参数为 1 - 10, 将取得的选择集存入xdrx内部数据库中的 ARX 变量,
       并将 (ssname) 当前实体指针 i 置 0。
     3.过滤表为LISP中的过滤表,如'((8 . "abc")(0 . "line")....),也支持AND,OR,NOT等
     4.若过滤表中提供层组码8,则前面的“英文层名或中文索引名”选项不起作用。

返回值:成功返回  选择集, 失败返回 nil。


145. xdrx_searchoutline

功能:求给定选择集内的实体的连通区域的最大轮廓

调用格式:(xdrx_searchoutline <选择集> <宽度>)
         (xdrx_searchoutline <block实体名> <宽度>)
         (xdrx_searchoutline <hatch实体名> <宽度>)

说明:适用任意实体,及其由任意实体生成的BLOCK
     生成的任意比例的INSERT或嵌套的INSERT.

返回值:若不给宽度参数,则返回最大轮廓线的顶点表,可能有多个边界。
       若给宽度,且>=0 ,若找出,则用LWPOLYLINE创建最大轮廓线.返回T
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-4-3 08:00:33 | 显示全部楼层
我也不是搞这个专业的,画图时就附加信息显然是较好的思路,但我朋友提供的图上显然没有。
上述问题我相信应该是能编出的,只是时间太紧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-4-3 08:22:40 | 显示全部楼层
最初由 y0yxt 发布
[B]我也不是搞这个专业的,画图时就附加信息显然是较好的思路,但我朋友提供的图上显然没有。
上述问题我相信应该是能编出的,只是时间太紧 [/B]


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

使用道具 举报

 楼主| 发表于 2002-4-3 09:14:57 | 显示全部楼层
谢谢。不好意思,让大家久等了(刚才插优盘时死机了)。

朋友的图太大,我自己用天正画一个示意性的文件,让专业人士见笑了.
水蓝色为电线(line),绿色为设备(Insert) acadR14

(另:我以前没用过天正,刚发现天正好像能自动裁减和搜索墙线,不知为何不实现上述功能?)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-4-3 15:43:31 | 显示全部楼层
最初由 y0yxt 发布
[B]谢谢。不好意思,让大家久等了(刚才插优盘时死机了)。

朋友的图太大,我自己用天正画一个示意性的文件,让专业人士见笑了.
水蓝色为电线(line),绿色为设备(Insert) acadR14

(另:我以前没用过天正,刚发现?.. [/B]


你要得到下面图中的,标记处的“断开”的水平位置的那排LINE和INSERT?


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

使用道具 举报

发表于 2002-4-3 20:08:00 | 显示全部楼层
ssget有个"F"选项,如果构造出一系列的点集,然后用"F"选项及过滤条件就可以选择到块。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-4-3 21:40:30 | 显示全部楼层
对,是水平线路。
注意:line 在块处是断开的,不连续。但与其他line相交断开处是在一条直线上
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-4-4 01:06:16 | 显示全部楼层
经过连续奋战,终于完成程序。待整理后上传。

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

使用道具 举报

发表于 2002-5-10 01:10:39 | 显示全部楼层
可不可以先给我一份,谢谢!借我参考参考!可以不?大家帮我看看这算法要怎样实现?见图(附件)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-10 06:25:36 | 显示全部楼层
求图块边界的模块算法还有一些问题。
最近太忙,未能及时整理,见谅。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-5-10 06:49:41 | 显示全部楼层
我看了你的图形,和我程序有些出入。我的程序是针对天正电气的,故有以下假定:
1.线路为LINE OR ARC
2.相交线打断
程序较为复杂,因工作忙,尚未整理好,阅读起来较困难。若有问题可直接探讨。
如果你是自己编程的话,最好是在开始布置回路时就建立好关联,这样搜索范围小,也不容易出错。不当之处请指正。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-5 10:41 , Processed in 0.486516 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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