找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 279491611

[已解决] 批量通过文本内容选择与之平行的线

[复制链接]

已领礼包: 1345个

财富等级: 财源广进

 楼主| 发表于 2013-12-27 09:45:26 | 显示全部楼层
本帖最后由 279491611 于 2013-12-27 10:03 编辑
newer 发表于 2013-12-26 23:08
改写了程序,重新下载9楼的代码执行看看。

颜色,图层,块都考虑了。

首先谢谢版主这么晚还在帮我们想办法。 这应该是一个结构设计计算类软件生成的, 估计是 MIDAS 或 SAP2000 之类的。别人转转而给的图,具体软件名称不得而知。图就是一个平面图,和旁边的一个立面图。附件里只是一部分。应该是一个网架类的结构。 至于这样做的目的,主要是通过这些平,立面图,把杆件按断面分类,利用图形中的杆件位置,重建一个模型。
其实: 主要的目的 就是 杆件(直线)位置不能变,
           直线要与上面的文本(断面) 发生关联。(比如: 做成一个块,同一图层,同一颜色)

           不同内容的文本对应的直线要区分开来(比如:图层 或 颜色)
           杆件(直线)同一种断面(直线上对应的文本内容) 在同一图层。
           最终就是把不同断面的杆件(直线)分别另存一个DXF文件。再把这些DXF文件导入 其他软件重建模型.


修改过的程序还是有部分直线没有处理好。是否我的思路有问题,是否应该通过直线找文字呢?还是采用其他办法,比如说数据提取之类的,提取成文本在EXCEL 中处理?

点评

通过文字找线是正确的,出现你说的线位置不对,只能是同文本的块名字相同,但是现在程序块重名的概率1/(26*26*26)^3 你要是能遇到能重名简直能中头奖了。  详情 回复 发表于 2013-12-27 16:31
你说的直线有问题是什么,你按我的操作,操作右侧的弧的部分,哪个位置有问题,你截取图贴上来,我这里没看到线不对。  详情 回复 发表于 2013-12-27 16:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-27 11:29:35 | 显示全部楼层
对一组图形,线生成顺序和文字的生成顺序应该是对应的,可能的方案

1 线 对应文字(或文字 对应线)
2 全部线 接对应文字 (或全部文字 对应线)

批量的不可能是随机,后处理程序利用这个才能简单高效

点评

如果是软件自动生成的..完全可以用句柄找最近...那样更简单..  详情 回复 发表于 2013-12-27 11:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-12-27 11:42:57 | 显示全部楼层
st788796 发表于 2013-12-27 11:29
对一组图形,线生成顺序和文字的生成顺序应该是对应的,可能的方案

1 线 对应文字(或文字 对应线)

如果是软件自动生成的..完全可以用句柄找最近...那样更简单..

点评

肯定是软件自动生成的,至于他是生成机制,我就搞不懂了。  详情 回复 发表于 2013-12-27 11:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1345个

财富等级: 财源广进

 楼主| 发表于 2013-12-27 11:47:16 | 显示全部楼层
q3_2006 发表于 2013-12-27 11:42
如果是软件自动生成的..完全可以用句柄找最近...那样更简单..

肯定是软件自动生成的,至于他是生成机制,我就搞不懂了。

点评

你传的是原始图吧 可以分析下每组图形的句柄顺序  详情 回复 发表于 2013-12-27 12:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-27 12:46:01 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2013-12-27 12:48 编辑
279491611 发表于 2013-12-27 11:47
肯定是软件自动生成的,至于他是生成机制,我就搞不懂了。


你传的是原始图吧
可以分析下每组图形的句柄顺序

原来怎么流水出来的,还照原来的流水处理

点评

用过点的选择集最通用,按句柄什么的,要受限制了。  详情 回复 发表于 2013-12-27 16:28
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1345个

财富等级: 财源广进

 楼主| 发表于 2013-12-27 12:56:47 | 显示全部楼层
不好意思,原图也是经过处理,套图框。加尺寸及说明之类的处理过。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1345个

财富等级: 财源广进

 楼主| 发表于 2013-12-27 12:57:50 | 显示全部楼层
st788796 发表于 2013-12-27 12:46
你传的是原始图吧
可以分析下每组图形的句柄顺序

不好意思,原图也是经过处理,套图框。加尺寸及说明之类的处理过。或者版本转换之类的不确定的操作。

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

使用道具 举报

已领礼包: 1345个

财富等级: 财源广进

 楼主| 发表于 2013-12-27 13:02:05 | 显示全部楼层
newer 发表于 2013-12-26 23:08
改写了程序,重新下载9楼的代码执行看看。

颜色,图层,块都考虑了。

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-12-27 16:14:33 | 显示全部楼层
279491611 发表于 2013-12-27 09:45
首先谢谢版主这么晚还在帮我们想办法。 这应该是一个结构设计计算类软件生成的, 估计是 MIDAS 或 SAP2000 ...

你说的直线有问题是什么,你按我的操作,操作右侧的弧的部分,哪个位置有问题,你截取图贴上来,我这里没看到线不对。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-12-27 16:28:02 | 显示全部楼层
st788796 发表于 2013-12-27 12:46
你传的是原始图吧
可以分析下每组图形的句柄顺序

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-27 16:31:32 | 显示全部楼层
其实这种图不管怎么改, 自动生成部分没有动就是规律的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-12-27 16:31:58 | 显示全部楼层
279491611 发表于 2013-12-27 09:45
首先谢谢版主这么晚还在帮我们想办法。 这应该是一个结构设计计算类软件生成的, 估计是 MIDAS 或 SAP2000 ...

通过文字找线是正确的,出现你说的线位置不对,只能是同文本的块名字相同,但是现在程序块重名的概率1/(26*26*26)^3 你要是能遇到能重名简直能中头奖了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-27 19:58:31 | 显示全部楼层
本帖最后由 st788796 于 2013-12-27 20:15 编辑
newer 发表于 2013-12-27 16:31
通过文字找线是正确的,出现你说的线位置不对,只能是同文本的块名字相同,但是现在程序块重名的概率1/(2 ...

写了一个验证程序, 这个软件是先生成全部线,然后顺序生成文字
既然是自动生成,肯定要有规则,找到了事半功倍

结合 XD::List:GroupByIndex 可以实现相同文字的顺序编号!

老大既然坚持 Pickset 那就继续完善了:)

  1. (defun c:tt (/ ss lss ln ts tn)
  2.   (if (and (setq ss (ssget '((0 . "LINE,TEXT"))))
  3.            (setq lss (ssget "P" '((0 . "LINE")))) ;_line
  4.            (setq ln (xdrx_pickset->ents lss))
  5.            (setq ts (xdrx_pickset_subtract ss lss))
  6.            (setq tn (xdrx_pickset->ents ts))
  7.       )
  8.     (progn
  9.       (mapcar '(lambda (x y / lyr)
  10.                  (setq lyr (xdrx_getpropertyvalue y "Textstring"))
  11.                  (xdrx_setpropertyvalue
  12.                    (xdrx_object_get "layer" lyr)
  13.                    "Color"
  14.                    (atoi lyr)
  15.                  )
  16.                  (xdrx_entity_setlayer x lyr)
  17.                  (xdrx_entity_setlayer y lyr)
  18.                  (xdrx_group_make "*" x y)
  19.                )
  20.               ln
  21.               tn
  22.       )
  23.       (xdrx_entity_setcolor ss 256)
  24.     )
  25.   )
  26.   (princ)
  27. )





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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-27 20:40:04 | 显示全部楼层
再多写几句,对楼主提供样图全选处理
  1. (defun c:tt (/ ss lss ln ts tn lst)
  2.   (if (and (setq ss (ssget '((0 . "LINE,TEXT"))))
  3.            (setq lss (ssget "P" '((0 . "LINE")))) ;_line
  4.            (setq ln (xdrx_pickset->ents lss))
  5.            (setq ts (xdrx_pickset_subtract ss lss))
  6.            (setq tn (xdrx_pickset->ents ts))
  7.       )
  8.     (progn
  9.       (setq lst
  10.              (mapcar '(lambda (x y / lyr)
  11.                         (setq lyr (xdrx_getpropertyvalue y "Textstring"))
  12.                         (xdrx_setpropertyvalue
  13.                           (xdrx_object_get "layer" lyr)
  14.                           "Color"
  15.                           (atoi lyr)
  16.                         )
  17.                         (xdrx_entity_setlayer x lyr)
  18.                         (xdrx_entity_setlayer y lyr)
  19.                         (list lyr (list x y))
  20.                       )
  21.                      ln
  22.                      tn
  23.              )
  24.       )
  25.       (xdrx_entity_setcolor ss 256)
  26.       (setq lst (XD::List:GroupByIndex lst 0))
  27.       (mapcar '(lambda (x / i bn)
  28.                  (setq i  1
  29.                        bn (car x)
  30.                  )
  31.                  (mapcar '(lambda (a)
  32.                             (xdrx_block_make
  33.                               (strcat bn "_" (itoa i))
  34.                               (XD::Entity->Pickset a)
  35.                               (cadr (xdrx_curve_getpoint (car a)))
  36.                               t
  37.                             )
  38.                             (setq i (1+ i))
  39.                           )
  40.                          (cdr x)
  41.                  )
  42.                )
  43.               lst
  44.       )
  45.     )
  46.   )
  47.   (princ)
  48. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-28 14:53:46 | 显示全部楼层
本帖最后由 st788796 于 2013-12-28 14:59 编辑

这个状态条很好玩
  1. (defun c:tt (/ ss lss ln ts tn lst i j)
  2.   (if (and (setq ss (ssget '((0 . "LINE,TEXT"))))
  3.            (setq lss (ssget "P" '((0 . "LINE")))) ;_line
  4.            (setq ln (xdrx_pickset->ents lss))
  5.            (setq ts (xdrx_pickset_subtract ss lss))
  6.            (setq tn (xdrx_pickset->ents ts))
  7.       )
  8.     (progn
  9.       (setq i 0)
  10.       (xdrx_statusbar_begin "颜色及图层处理中" (length tn))
  11.       (setq
  12.         lst
  13.          (mapcar '(lambda (x y / lyr)
  14.                     (xdrx_statusbar_setpos (setq i (1+ i)))
  15.                     (setq lyr (xdrx_getpropertyvalue y "Textstring"))
  16.                     (xdrx_setpropertyvalue
  17.                       (xdrx_object_get "layer" lyr)
  18.                       "Color"
  19.                       (atoi lyr)
  20.                     )
  21.                     (xdrx_entity_setlayer x lyr)
  22.                     (xdrx_entity_setlayer y lyr)
  23.                     (list lyr (list x y))
  24.                   )
  25.                  ln
  26.                  tn
  27.          )
  28.       )
  29.       (xdrx_entity_setcolor ss 256)
  30.       (xdrx_statusbar_end)
  31.       (setq lst        (XD::List:GroupByIndex lst 0)
  32.             j        0
  33.       )
  34.       (xdrx_statusbar_begin "图块制作中" (length tn))
  35.       (mapcar '(lambda (x / i bn)
  36.                  (setq i  1
  37.                        bn (car x)
  38.                  )
  39.                  (mapcar '(lambda (a)
  40.                             (xdrx_statusbar_setpos (setq j (1+ j)))
  41.                             (xdrx_block_make
  42.                               (strcat bn "_" (itoa i))
  43.                               (XD::Entity->Pickset a)
  44.                               (cadr (xdrx_curve_getpoint (car a)))
  45.                               t
  46.                             )
  47.                             (setq i (1+ i))
  48.                           )
  49.                          (cdr x)
  50.                  )
  51.                )
  52.               lst
  53.       )
  54.       (xdrx_statusbar_end)
  55.       (princ
  56.         (strcat "\nOk! 共制作 " (itoa (length tn)) " 个图块!")
  57.       )
  58.     )
  59.   )
  60.   (princ)
  61. )
ganjian.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 20:45 , Processed in 0.506962 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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