找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1593|回复: 15

[求助] 请教怎样匹配窗线刷

[复制链接]

已领礼包: 1336个

财富等级: 财源广进

发表于 2014-10-30 20:51:03 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 434939575 于 2014-10-30 20:53 编辑

请教各位老师:我的目的想实现这样的刷子。请各位指导指导!或提供思路。怎样得到第1跟竖线的名字。我的方法坐标表按X排列。再根据坐标SSGET "W"选择。这种方法感觉很迟钝。。(我这个外框是另外的层,里面是LINE线)

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

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-30 21:01:51 | 显示全部楼层
多去开源函数库论坛看看写过的函数

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-30 21:04:19 | 显示全部楼层
另外,关于实体组织,也是后续方便编程很重要的一环,比如你这个,外框还是尽量用封闭的 多段线比较好。你找到一个就都找到了,否则可不好都找出来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

 楼主| 发表于 2014-10-30 21:11:13 | 显示全部楼层
感谢老大指点。太热心了。外框是PLINE的闭合线。

点评

1、用封闭的外框多段线选出里面所有的LINE 2、所有LINE,每个LINE构建一个表 (角度 距离窗左下角的距离 LINE实体名) 整个就是 ( (角度1 距离窗左下角的距离1 LINE实体名)...(角度2 距离窗左下角的距离1 L  详情 回复 发表于 2014-10-30 23:19
你要找里面 最左边的白色线?  详情 回复 发表于 2014-10-30 21:50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-30 21:19:26 | 显示全部楼层
你这个应用没有说明哪个方向不变,不能称为 刷子,变形可以看看这个
http://bbs.xdcad.net/thread-672209-1-1.html

点评

感谢大师支持。我的意思窗楣不变。适应这个样式。  发表于 2014-10-30 21:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-30 21:50:29 | 显示全部楼层
434939575 发表于 2014-10-30 21:11
感谢老大指点。太热心了。外框是PLINE的闭合线。

你要找里面 最左边的白色线?

点评

嗯,白线是等分割。水平线是窗楣。在套用的时候,(上部窗楣是不变)。希望指点思路。  发表于 2014-10-30 21:54
嗯,白线是等分割。水平线是窗楣。在套用的时候,(上部窗楣是不变)。  发表于 2014-10-30 21:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-30 22:01:45 | 显示全部楼层
等分只要数量,水平是要距离

点评

感谢大师再次指点,确实是等分,(假如是左边和右边间隔小点)如:左边500.中间两格800.右边500. 我的意思假如我左边按X排序。能否有适当的函数得到这个坐标位置的图元名。  发表于 2014-10-30 22:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-30 22:33:43 | 显示全部楼层
竖向是取间距和总长的比例返到新框,水平取上部距离
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-10-30 23:19:14 | 显示全部楼层
434939575 发表于 2014-10-30 21:11
感谢老大指点。太热心了。外框是PLINE的闭合线。

1、用封闭的外框多段线选出里面所有的LINE
2、所有LINE,每个LINE构建一个表 (角度  距离窗左下角的距离 LINE实体名)
      整个就是 ( (角度1  距离窗左下角的距离1 LINE实体名)...(角度2  距离窗左下角的距离1 LINE实体名) )


3、所有角度一样的归并到一个表


     (  (0.0 ( (距离1 LINE实体1)  (距离2 LINE实体2).... )
        (1.5708 ( (距离1 LINE实体1)  (距离2 LINE实体2).... )
     )


4、你想找竖直的,就把 1.5708 的子表提出来, 关联表按距离排升序,第一个实体就是你要的最左边的。
     你想找水平最下的,就把0.0 的子表提出来,。。。。。。。。。。。。。。。。。。。。。。。。。


上面说的这些,开源函数库都有现成的函数 XD::List:GroupByIndex or XD::AssocList:MergeItemByNumKey
最直接霸道的 XD::Pickset:TableSort 你可以去开源函数库论坛找到相应函数,看看代码怎么写的。
或者用上面的函数名搜索论坛,看看一些应用程序是怎么写的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-10-31 11:02:01 | 显示全部楼层
434939575 发表于 2014-10-31 09:42
再次感谢大大的支持!

xd::list:groupbyindex  在开源函数库下载
  1. (defun c:tt (/ e pts lss ss bp lst bp rp p up xLine yLine)
  2.   (if
  3.     (and (setq e (car (xdrx_entsel "\nPick Pline: " '((0 . "*Polyline")))))
  4.          (xdrx_pickset_highlight e)
  5.          (setq pts (xdrx_entity_box e))
  6.          (setq lss (ssget "C" (car pts) (caddr pts) '((0 . "line"))))
  7.          (setq ss (ssget '((0 . "*polyline"))))
  8.     )
  9.      (progn
  10.        (mapcar 'set '(bp rp p up) pts)
  11.        (setq lst   (mapcar '(lambda (x)
  12.                               (list (rem (xdrx_getpropertyvalue x "angle") pi)
  13.                                     (car (xdrx_entity_box x))
  14.                                     x
  15.                               )
  16.                             )
  17.                            (xdrx_pickset->ents lss)
  18.                    )
  19.              lst   (vl-sort (xd::list:groupbyindex lst 1e-3)
  20.                             '(lambda (e1 e2) (< (car e1) (car e2)))
  21.                    )
  22.              xLine (mapcar '(lambda (x)
  23.                               (xdrx_point_dist2line
  24.                                 (cadr x)
  25.                                 up
  26.                                 p
  27.                               )
  28.                             )
  29.                            (cdar lst)
  30.                    )
  31.              yLine (mapcar '(lambda (x)
  32.                               (list (xdrx_point_dist2line
  33.                                       (caddr (xdrx_entity_box (cadr x)))
  34.                                       up
  35.                                       p
  36.                                     )
  37.                                     (/ (distance (car x) bp)
  38.                                        (distance bp rp)
  39.                                     )
  40.                               )
  41.                             )
  42.                            (vl-sort (mapcar 'cdr (cdadr lst))
  43.                                     '(lambda (b1 b2)
  44.                                        (< (caar b1) (caar b2))
  45.                                      )
  46.                            )
  47.                    )
  48.        )
  49.        (mapcar
  50.          '(lambda (x / bp rp p up)
  51.             (mapcar 'set '(bp rp p up) (xdrx_entity_box x))
  52.             (mapcar '(lambda (a / p1)
  53.                        (xdrx_line_make
  54.                          (setq p1 (polar up (* pi -0.5) a))
  55.                          (polar p1 0. (distance up p))
  56.                        )
  57.                      )
  58.                     xLine
  59.             )
  60.             (mapcar
  61.               '(lambda (a / p1)
  62.                  (xdrx_line_make
  63.                    (setq p1 (polar bp 0. (* (cadr a) (distance bp rp))))
  64.                    (polar p1 (* pi 0.5) (- (distance up bp) (car a)))
  65.                  )
  66.                )
  67.               yLine
  68.             )
  69.           )
  70.          (xdrx_pickset->ents ss)
  71.        )
  72.      )
  73.   )
  74.   (if e (xdrx_pickset_highlight e t))
  75.   (princ)
  76. )

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 18:25 , Processed in 0.217311 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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