chuankay 发表于 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外连城的线与多边形是否有奇数个交点(除多边形端点,与边重合等因素),有奇数个交点则目标在多边形内部,若有偶数个交点则目标在多边形外部。(这种方法在数学中已经很老了)

vivienluo 发表于 2013-9-21 11:40:15

不错。
主要是坐标难以确定。
比如一个symbol,获取的坐标是其中心坐标还是其他,有些封装的坐标不是在器件中心,这样判断起来有点困难,比如一个line、shape等也是一样的。这样就可能判断失误。

chuankay 发表于 2013-9-21 15:21:38

vivienluo 发表于 2013-9-21 11:40 static/image/common/back.gif
不错。
主要是坐标难以确定。
比如一个symbol,获取的坐标是其中心坐标还是其他,有些封装的坐标不是在器 ...

对待你描述的问题可能需要尽量多的约束条件了,对于选择器件、线、shape的话确实没什么更好的办法,毕竟是处理图形,可能需要在器件、线、shape选取适当数量的取样点,估计Allegro也是类似的做法。

86232648 发表于 2013-10-7 18:20:07

有没有获取一个区域的dbid,然后直接能选取到对象????

86232648 发表于 2013-10-7 18:20:41


有没有获取一个区域的dbid,然后直接能选取到对象????

chuankay 发表于 2013-10-8 21:14:33

86232648 发表于 2013-10-7 18:20 static/image/common/back.gif
有没有获取一个区域的dbid,然后直接能选取到对象????

这个函数貌似没有,skill实现起来稍微有难度。

86232648 发表于 2013-10-9 21:04:41

chuankay 发表于 2013-10-8 21:14 static/image/common/back.gif
这个函数貌似没有,skill实现起来稍微有难度。

你们是怎样去实现一个任意区域内的对象选取,当然对应的对象也是不一定是规则的?

chuankay 发表于 2013-10-10 00:27:22

86232648 发表于 2013-10-9 21:04 static/image/common/back.gif
你们是怎样去实现一个任意区域内的对象选取,当然对应的对象也是不一定是规则的?

我的做法比较笨:
1. 获取这个“任意区域”的bBox,通过bBox来选择当前范围内目标;
2. 使用射线法遍历所有bBox选中的目标,判断交点数;
3. 如果有弧线的多边形就构建shape,判断目标是否在shape内。
说的比较简单,实际情况可能很复杂。

l888888h 发表于 2014-5-21 09:40:11

选取net的一种思路:
可以先沿多边形的边创建很窄的矩形区域
再使用框选函数
再对list去重

chuankay 发表于 2014-5-23 11:18:08

l888888h 发表于 2014-5-21 09:40 static/image/common/back.gif
选取net的一种思路:
可以先沿多边形的边创建很窄的矩形区域
再使用框选函数


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

目前我的做法是框选函数是以多边形坐标极值创建的矩形,然后用axlGeoPointInShape函数判别,有些不方便。
页: [1] 2
查看完整版本: 关于多边形与圆形选择的看法。