Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10107|回复: 13

关于多边形与圆形选择的看法。

[复制链接]
发表于 2013-9-21 11:12:26 | 显示全部楼层 |阅读模式
本帖最后由 chuankay 于 2013-9-21 11:16 编辑

这两种选择方式尽管不是很必要,但是用skill实现确实有点纠结,下面是这两种选择模式的实现思路,大家来吐槽。
圆形:
获取圆形的db——circle
获取圆形的圆心——circleXY
获取circle的bBox ——box = circle->bBox
用box选择函数选择box内的所有目标对象——List
方式1——遍历List中的对象到圆心的距离,若在半径之内就是在圆形内部了。
方式2——将圆形构建shape,判断List所有目标是否在shape内,参考axlGeoPointInShape函数。
多边形:
同上,获取box,并选择box内所有对象List
方式1——将多边形构建shape,判断List所有的目标是否在shape内,参考axlGeoPointInShape函数。
方式2——判断List内所有目标的xy到box外连城的线与多边形是否有奇数个交点(除多边形端点,与边重合等因素),有奇数个交点则目标在多边形内部,若有偶数个交点则目标在多边形外部。(这种方法在数学中已经很老了)
发表于 2013-9-21 11:40:15 | 显示全部楼层
不错。
主要是坐标难以确定。
比如一个symbol,获取的坐标是其中心坐标还是其他,有些封装的坐标不是在器件中心,这样判断起来有点困难,比如一个line、shape等也是一样的。这样就可能判断失误。
 楼主| 发表于 2013-9-21 15:21:38 | 显示全部楼层
vivienluo 发表于 2013-9-21 11:40
不错。
主要是坐标难以确定。
比如一个symbol,获取的坐标是其中心坐标还是其他,有些封装的坐标不是在器 ...

对待你描述的问题可能需要尽量多的约束条件了,对于选择器件、线、shape的话确实没什么更好的办法,毕竟是处理图形,可能需要在器件、线、shape选取适当数量的取样点,估计Allegro也是类似的做法。
发表于 2013-10-7 18:20:07 | 显示全部楼层
有没有获取一个区域的dbid,然后直接能选取到对象????
发表于 2013-10-7 18:20:41 | 显示全部楼层

有没有获取一个区域的dbid,然后直接能选取到对象????
 楼主| 发表于 2013-10-8 21:14:33 | 显示全部楼层
86232648 发表于 2013-10-7 18:20
有没有获取一个区域的dbid,然后直接能选取到对象????

这个函数貌似没有,skill实现起来稍微有难度。
发表于 2013-10-9 21:04:41 | 显示全部楼层
chuankay 发表于 2013-10-8 21:14
这个函数貌似没有,skill实现起来稍微有难度。

你们是怎样去实现一个任意区域内的对象选取,当然对应的对象也是不一定是规则的?
 楼主| 发表于 2013-10-10 00:27:22 | 显示全部楼层
86232648 发表于 2013-10-9 21:04
你们是怎样去实现一个任意区域内的对象选取,当然对应的对象也是不一定是规则的?

我的做法比较笨:
1. 获取这个“任意区域”的bBox,通过bBox来选择当前范围内目标;
2. 使用射线法遍历所有bBox选中的目标,判断交点数;
3. 如果有弧线的多边形就构建shape,判断目标是否在shape内。
说的比较简单,实际情况可能很复杂。
发表于 2014-5-21 09:40:11 | 显示全部楼层
选取net的一种思路:
可以先沿多边形的边创建很窄的矩形区域
再使用框选函数
再对list去重
 楼主| 发表于 2014-5-23 11:18:08 | 显示全部楼层
l888888h 发表于 2014-5-21 09:40
选取net的一种思路:
可以先沿多边形的边创建很窄的矩形区域
再使用框选函数

不太明白,以下几点请指点:
(1)选取net是指选择多边形内部相同net属性的元素?
(2)沿多边形的边创建很窄的矩形区域,这个区域是有角度的细长矩形?还是沿路径创建很多小矩形?创建这样的区域的目的是?
(3)框选函数是以多边形坐标极值创建的矩形?还是在多边形内部的矩形?

目前我的做法是框选函数是以多边形坐标极值创建的矩形,然后用axlGeoPointInShape函数判别,有些不方便。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-5-2 13:18 , Processed in 0.136102 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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