找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3594|回复: 15

[已解决] 隧洞轮廓点坐标数据排序

[复制链接]

已领礼包: 1449个

财富等级: 财源广进

发表于 2016-12-1 21:08:19 | 显示全部楼层 |阅读模式
悬赏120D豆已解决
说明:1、左边的图及数据为现场测量后直接绘制的图,坐标未经过排序,坐标点连线不能反应出实际的开挖轮廓线;
          2、右边的图及数据为人工修正的开挖轮廓线的图,反应实际的开挖轮廓线,坐标数据顺序为实际需要的数据顺序;
         3、左右两图的轮廓点数据坐标值完全一样,只是顺序不一样。
         4、对断面数据量很大时如何进行数据排序,能否有一小程序进行排序,以满足实际需要?
         5、可能描述的不一定很清楚,见示例图。
         希望有朋友能给予解答,先此谢过。


QQ截图20161201214932.png

示例图.rar

18.42 KB, 下载次数: 13, 下载积分: D豆 -1 , 活跃度 1

最佳答案

查看完整内容

试试, 选文字的时候要选数字。 [pre] (defun c:tt () (xdrx_initssget "\n框选数字文字:") (if (and (setq ss (xdrx_ssget '((0 . "TEXT")))) (setq ss (xd::pickset:tablesort ss 0 3 '> '
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-1 21:08:20 | 显示全部楼层
本帖最后由 newer 于 2016-12-2 11:01 编辑

试试, 选文字的时候要选数字。
隧道断面排序.gif


(defun c:tt ()
  (xdrx_initssget "\n框选数字文字<退出>:")
  (if (and
        (setq ss (xdrx_ssget '((0 . "TEXT"))))
        (setq ss (xd::pickset:tablesort ss 0 3 '> '<))
        (setq tb (XD::List:IsTable ss))
      )
    (progn
      (xdrx_begin)
      (setq pts (mapcar
                  '(lambda (x)
                     (list (atof (xdrx_getpropertyvalue (car x) "textstring"))
                           (atof (xdrx_getpropertyvalue (cadr x)
                                                        "textstring"
                                 )
                           )
                     )
                   )
                  ss
                )
       )
       (setq cir (apply 'xdrx_circle_make (xdrx_points_mincircle pts))
             pts (xdrx_points_sortOnCurve (entlast) pts)
             i 0
             pts1 (mapcar 'cadr pts)
             tb  (mapcar '(lambda(x)(list (itoa (setq i (1+ i)))(car x)(cadr x)))pts1)
             tb (append (list (list "多段线点坐标" "" "")(list "序号" "X坐标" "Y坐标")) tb)
       )
       (xdrx_entity_delete cir)
       (if (not #suidao_h)
         (setq #suidao_h 0.25)
       )
       (if (setq h (getreal (xdrx_prompt "\n文字高<" #suidao_h ">:" t)))
         (setq #suidao_h h)
       )
       (setq cir (xdrx_polyline_make pts1 t))
       (setq i 0)
       (mapcar '(lambda(x)(xdrx_text_make (cadr x) (itoa (setq i (1+ i))) #suidao_h 0.0)) (reverse pts))
       (xd::text:init 1)
       (xd::table:makefromlist tb '(0 0 0) #suidao_h (/ #suidao_h 1.5))
       (xdrx_table_setrowheight (entlast) 0 (/ (* 7 #suidao_h) 3.0))
       (xd::drag:simplemove (entlast) "\n表格插入点:" 8 t)
       (xdrx_end)
    )
  )
  (princ)
)



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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-1 21:54:28 | 显示全部楼层
以后有求助,除了传DWG图外,最好配上图片贴上来,方便论坛查看。你的意思是将现场生成的坐标 排序 生成右边的结果?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1449个

财富等级: 财源广进

 楼主| 发表于 2016-12-1 22:05:48 | 显示全部楼层
就是,通过程序进行排序得到右边数据表的顺序,谢谢版主
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-1 22:12:30 | 显示全部楼层

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

使用道具 举报

已领礼包: 1449个

财富等级: 财源广进

 楼主| 发表于 2016-12-1 22:21:18 | 显示全部楼层
可能是我没表达清楚,左边的图是根据左边的数据直接在CAD进行绘图的,但不是反应实际的情况,实际的情况应是右边的图,即应该根据右边的数据绘出来的图才能满足实际情况的。右边的数据是我根据手工将图修正好后提取出来贴上来给大家看的。因此需要进行个坐标排序,左边数据排序后得到右边表格的数据,然后直接给图即可满足要求。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-1 22:49:30 | 显示全部楼层
本帖最后由 newer 于 2016-12-1 22:52 编辑

和我问你的不矛盾啊,初始数据就是左边的表格, 然后生成右边的表格和右边的图形? 还有序号1 不一定非和你右边的图形一样吧?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1449个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 1449个

财富等级: 财源广进

 楼主| 发表于 2016-12-2 17:48:39 | 显示全部楼层
图已能画好,多谢版主。下来再慢慢看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-2 18:51:56 | 显示全部楼层

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

使用道具 举报

已领礼包: 1449个

财富等级: 财源广进

 楼主| 发表于 2016-12-2 20:33:09 | 显示全部楼层
版主对晓东插件真的是非常熟悉,佩服,佩服。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-2 20:58:58 | 显示全部楼层

其实没用几个XDRX API, 关键是算法,然后找实现的API函数。

你这个问题,
1、主要是点按圆的排序,所以要先生成圆,就用了API的最小包围圆的函数xdrx_points_mincircle
2、排序就用的通用的点表沿着曲线排序函数xdrx_points_sortoncurve

这两部做完了,程序也就出来了,剩下的是构造表格的数据,然后用通用的表格生成函数xd::table:makefromlist生成表格在0,0,0点,最后用拖动函数xd::drag:simplemove移动到你指定的地方就OK了。

算法有了,写代码就很容易了。API几乎提供涵盖了所有的需要的操作的函数。看API手册就指定函数的用法了,平时常用的也就那么几个函数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 1449个

财富等级: 财源广进

 楼主| 发表于 2016-12-2 21:06:37 | 显示全部楼层
以前弄过一个批量绘制隧洞开挖断面图的程序,但就这个坐标排序没弄好,有时就画出如示例图中的结果,现在好,再好好学习学习一下,再次感谢。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-2 21:44:12 | 显示全部楼层

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

使用道具 举报

发表于 2021-5-21 23:33:38 | 显示全部楼层
其实加一个角度判断就行,求每个轮廓上的节点和轨道中桩点的角度,以360度这个范围排序,连线就自然是一个环形了。 这个我是实现过
隧道断面数据处理演示.GIF
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 21:36 , Processed in 0.504761 second(s), 64 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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