找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 8057|回复: 35

[求助] 求一个 纬地道路横断面 文字避让处理 的程序

[复制链接]

已领礼包: 127个

财富等级: 日进斗金

发表于 2013-10-25 11:32:34 | 显示全部楼层 |阅读模式

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

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

×
不知道能否实现  如下图     一般道路都是20米 一个断面   而一条道路都是10几公里  如果手动修改  很浪费时间  

希望高手能写一个 文字避让的程序  来解放 道路设计者的手{:soso_e113:}


附上图片和 dwg文件

文字避让.jpg

文字避让.zip

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

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

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-10-25 13:10:09 | 显示全部楼层
上面那图是软件做出来的? 这种东西应该在标注的时候处理是最好的。

点评

是软件自己生成的 现在都是自己手工挪 很费时间!!!  详情 回复 发表于 2013-10-25 14:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-10-25 14:13:12 来自手机 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-10-25 14:18 编辑

原生图修改也可以做,就是针对性强而已
比如只选两侧字及线,不包括其它,这些软件生成实体是固定顺序的,只要按规则成组选,就能知道移动第几个实体了,不要期望写通用程序

点评

我现在就是手工搞的 比如选这全选2% 3%偏移 然后手工偏移标高 1:1.5再全选偏移 而且 1:1.5这个坡度的位置还不一样 最后还是要进行手工处理 然后复查 这些纯手工的 路短点还好 路长了 还是比较麻烦的  详情 回复 发表于 2013-10-25 14:54
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-10-25 14:51:14 | 显示全部楼层
newer 发表于 2013-10-25 13:10
上面那图是软件做出来的? 这种东西应该在标注的时候处理是最好的。

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-10-25 14:54:43 | 显示全部楼层
Free-Lancer 发表于 2013-10-25 14:13
原生图修改也可以做,就是针对性强而已
比如只选两侧字及线,不包括其它,这些软件生成实体是固定顺序的, ...

我现在就是手工搞的  
比如选这全选2% 3%偏移  然后手工偏移标高  1:1.5再全选偏移 而且 1:1.5这个坡度的位置还不一样  最后还是要进行手工处理 然后复查

这些纯手工的 路短点还好  路长了  还是比较麻烦的  
软件的细节没做好!




点评

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

使用道具 举报

已领礼包: 8779个

财富等级: 富甲天下

发表于 2013-10-25 15:18:48 | 显示全部楼层
不光是纬地道路横断面,纬地涵洞、纬地挡墙生成的图纸都有这问题,目前只能手工自己移动。纬地软件的标注是一个个组,彼此重叠,软件细节相当糟糕。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-25 15:25:13 | 显示全部楼层
spp_wall 发表于 2013-10-25 14:54
我现在就是手工搞的  
比如选这全选2% 3%偏移  然后手工偏移标高  1:1.5再全选偏移 而且 1:1.5这个坡度 ...

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-10-25 21:13:36 | 显示全部楼层
本帖最后由 q3_2006 于 2013-10-26 07:15 编辑
  1. ;;不具通用性,纯粹好玩。。
  2. ;;E派版。。其实也没用什么自定义函数,我懒得写全用现成的。。。
  3. (defun c:tt( / bgtxt1 bgtxt2 bptxt1 bptxt2 hp1 hp2 lst p0 p1 p2 p3 ptlst s1 ss th)
  4. (vl-cmdf "_.undo" "be")
  5. (setq ss (ssget '((0 . "*POLYLINE") (8 . "sjx")))
  6.   lst (xyp-ss2list ss)
  7. )
  8. (print "\n在图面点取任一标注文本以获取文字高度:")
  9. (setq th (xyp-DXF 40 (car(entsel))))
  10. (vl-cmdf "zoom" "a")
  11. ;(setq th (getreal "\n标注文字高:"))
  12. (foreach s1 lst
  13. (setq ptlst (xyp-Get-Vertexs s1 1))
  14. (setq p0 (nth 0 ptlst) p1 (nth 1 ptlst) p2 (nth 1 (reverse ptlst)) p3 (nth 0 (reverse ptlst)))
  15. (setq hp1 (ssget "f" (list p1 (polar p1 (/ pi 2) (* th 5))) '((0 . "*POLYLINE,text") (8 . "shuju"))))
  16. (setq hp2 (ssget "f" (list p2 (polar p2 (/ pi 2) (* th 5))) '((0 . "*POLYLINE,text") (8 . "shuju"))))
  17. (setq bptxt1 (ssget "f" (list p1 (polar p1 pi (* th 5))) '((0 . "text") (8 . "shuju"))))
  18. (setq bptxt2 (ssget "f" (list p2 (polar p2 0 (* th 5))) '((0 . "text") (8 . "shuju"))))
  19. (setq bgtxt1 (ssget "f" (list p1 (polar p1 (* pi 0.3) (* th 5))) '((0 . "text") (8 . "标高"))))
  20. (setq bgtxt2 (ssget "f" (list p2 (polar p2 (* pi 0.7) (* th 5))) '((0 . "text") (8 . "标高"))))
  21. (vl-cmdf "move" hp1 "" p1 (polar p1 (/ pi 2) (* th 2)))
  22. (vl-cmdf "move" hp2 "" p2 (polar p2 (/ pi 2) (* th 2)))
  23. (vl-cmdf "move" bptxt1 "" p1 (polar p1 (angle p1 p0) (/ (distance p1 p0) 4)))
  24. (vl-cmdf "move" bptxt2 "" p2 (polar p2 (angle p2 p3) (/ (distance p2 p3) 4)))
  25. (vl-cmdf "mirror" bgtxt1 "" p1 (polar p1 (* pi 0.5) (* th 3)) "y")
  26. (vl-cmdf "mirror" bgtxt2 "" p2 (polar p2 (* pi 0.5) (* th 3)) "y")
  27.   )
  28.   (vl-cmdf "_.undo" "e")
  29. )
因为是我常做的事。。方法很笨,但基本能解决问题!

点评

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-10-25 22:42:48 | 显示全部楼层
q3_2006 发表于 2013-10-25 21:13
因为是我常做的事。。方法很笨,但基本能解决问题!

好像左侧的标高有点问题!!!!!!  右侧的 实现了!!!!谢谢

有空帮忙看看!!
左侧不成功.jpg

点评

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-10-26 07:16:17 | 显示全部楼层
spp_wall 发表于 2013-10-25 22:42
好像左侧的标高有点问题!!!!!!  右侧的 实现了!!!!谢谢

有空帮忙看看!!

1楼已经改了。。。

点评

好像 只适合我发的那张图!! 我在其他图上用 达不到说的效果 看看能再帮忙改改么! 发一张 比较全的图 你帮忙看看!!! 谢谢!!  详情 回复 发表于 2013-10-26 11:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-10-26 11:40:23 | 显示全部楼层
q3_2006 发表于 2013-10-26 07:16
1楼已经改了。。。

好像  只适合我发的那张图!!

我在其他图上用  达不到说的效果   看看能再帮忙改改么!  

发一张  比较全的图  你帮忙看看!!! 谢谢!!

横断面.zip

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

点评

处理得很好呀。。没问题  详情 回复 发表于 2013-10-26 12:25
给你写个验证程序,选择每个断面,看看那些文字是不是固定顺序,直到了这个,程序就是很简单了  详情 回复 发表于 2013-10-26 12:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-26 12:06:14 | 显示全部楼层
本帖最后由 st788796 于 2013-10-26 12:07 编辑
spp_wall 发表于 2013-10-26 11:40
好像  只适合我发的那张图!!

我在其他图上用  达不到说的效果   看看能再帮忙改改么!  

给你写个验证程序,选择每个断面,看看那些文字是不是固定顺序,直到了这个,程序就是很简单了
每个断面固定是 34 个实体,按生成顺序排序,需要移动的实体在每组的固定位置
  1. (defun c:tt (/ ss el i)
  2.   (if (setq ss (ssget))
  3.     (progn
  4.       (setq el (vl-sort (xdrx_pickset->ents ss)
  5.    '(lambda (e1 e2)
  6.       (< (xdrx_getpropertyvalue e1 "ObjectID")
  7.          (xdrx_getpropertyvalue e1 "ObjectID")
  8.       )
  9.     )
  10.         )
  11.       )
  12.       (setq i 1)
  13.       (mapcar
  14. '(lambda (x)
  15.     (setq box (xdrx_entity_box x)
  16.    cen (xdrx_line_midp (car box) (nth 2 box))
  17.    txt (xdrx_text_make cen (itoa i) 0.4 0.)
  18.    i (1+ i)
  19.     )
  20.     (xdrx_group_make "*" (XD::Entity->PickSet (list txt x)))
  21.   )
  22. el
  23.       )
  24.     )
  25.   )
  26.   (princ)
  27. )



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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-10-26 12:25:37 | 显示全部楼层
spp_wall 发表于 2013-10-26 11:40
好像  只适合我发的那张图!!

我在其他图上用  达不到说的效果   看看能再帮忙改改么!  

处理得很好呀。。没问题

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-26 13:36:41 | 显示全部楼层
本帖最后由 st788796 于 2013-10-26 13:37 编辑
q3_2006 发表于 2013-10-26 12:25
处理得很好呀。。没问题

试试这个,根据自己的图分析后调整,断面有 32 32 34 三种情况,用上面的分析程序,以后自己可以修改
  1. (defun c:tt (/ XD::List:DivedBy ss mat0 vmat lmat rmat)
  2.   (defun XD::List:DivedBy (lst / ll nl)
  3.     (while lst
  4.       (if (/= (strcase (car (xdrx_getpropertyvalue (car lst) "Layer")))
  5.        "DMX"
  6.    )
  7. (setq ll (cons (car lst) ll))
  8. (setq nl (cons (reverse (cons (car lst) ll)) nl)
  9.        ll nil
  10. )
  11.       )
  12.       (setq lst (cdr lst))
  13.     )
  14.     (reverse nl)
  15.   )
  16.   (if (setq ss
  17.       (ssget
  18.         '((0 . "Text,*polyline,line")
  19.    (8 . "shuju,zhix,dmx,lc,sjx,标高")
  20.   )
  21.       )
  22.       )
  23.     (progn
  24.       (setq mat0 (xdrx_matrix_identity 3)
  25.      vmat (xdrx_matrix_settranslation mat0 '(0. 1.5 0.))
  26.      lmat (xdrx_matrix_settranslation mat0 '(-6.0 0. 0.))
  27.      rmat (xdrx_matrix_settranslation mat0 '(6. 0. 0.))
  28.       )
  29.       (mapcar
  30. '(lambda (x)
  31.     (mapcar '(lambda (a)
  32.         (xdrx_entity_transform a vmat)
  33.       )
  34.      (list (nth 1 x) (nth 2 x) (nth 7 x) (nth 8 x))
  35.     )
  36.     (cond
  37.       ((= (length x) 34)
  38.        (xdrx_entity_transform (nth 15 x) lmat)
  39.        (xdrx_entity_transform (nth 21 x) rmat)
  40.       )
  41.       ((= (length x) 33)
  42.        (xdrx_entity_transform (nth 14 x) lmat)
  43.        (xdrx_entity_transform (nth 20 x) rmat)
  44.       )
  45.       ((= (length x) 32)
  46.        (xdrx_entity_transform (nth 13 x) lmat)
  47.        (xdrx_entity_transform (nth 19 x) rmat)
  48.       )
  49.       (t)
  50.     )
  51.   )
  52. (XD::List:DivedBy
  53.    (vl-sort
  54.      (xdrx_pickset->ents ss)
  55.      '(lambda (e1 e2)
  56.         (> (xdrx_getpropertyvalue e1 "ObjectID")
  57.     (xdrx_getpropertyvalue e2 "ObjectID")
  58.         )
  59.       )
  60.    )
  61. )
  62.       )
  63.     )
  64.   )
  65.   (princ)
  66. )

点评

我 知道意思了 是每个断面的实体赋予 一个序号 然后按照一定的规律 挪动与序号相对应的实体 虽然你给的源码 但是我看不懂! 比如 xdrx_matrix_identity XD:istivedBy vmat (xdrx_matrix_settran  详情 回复 发表于 2013-10-26 15:21
明白版主的意思了,我自己的图没这个问题,都是用来处理别人的图。。。有的软件不是很完美,用的人又完全不用脑子。。烂图多了去了!  详情 回复 发表于 2013-10-26 13:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2013-10-26 13:46:43 | 显示全部楼层
st788796 发表于 2013-10-26 13:36
试试这个,根据自己的图分析后调整,断面有 32 32 34 三种情况,用上面的分析程序,以后自己可以修改

明白版主的意思了,我自己的图没这个问题,都是用来处理别人的图。。。有的软件不是很完美,用的人又完全不用脑子。。烂图多了去了!

点评

记住那些软件再不完美,批量生成是也是循环,这个循环就是实体生成顺序,后期处理利用这个才能事半功倍  详情 回复 发表于 2013-10-26 14:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-20 07:55 , Processed in 0.431173 second(s), 74 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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