明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2170|回复: 5

[提问] 圆弧堆中过滤出交叉口

[复制链接]
发表于 2014-2-27 20:33:22 | 显示全部楼层 |阅读模式
30明经币
本帖最后由 chenjian2159 于 2014-2-27 21:01 编辑

工作中,画道路的时候,有时候道路线中含有圆弧,而道路交叉口也是圆弧,需要在一堆圆弧中找出哪些圆弧是道路交叉口的圆弧,哪些是道路线中的圆弧,交叉口圆弧的半径可能都不一样,没什么规律,道路线是根据道路中心线相两边偏移相同的距离得到的。想了很久不知道有什么好方法,请明经的高手们帮忙解决下,万分感激!!!!

附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2014-2-27 22:13:25 | 显示全部楼层
  1. (defun c:tt ( / co e el i la ss)
  2. (defun mklaco (la co)
  3.   (if (= (tblsearch "layer" la) nil)
  4.     (command "layer" "m" la "c" co la "")
  5.     (command "layer" "t" la "s" la "c" co la "")
  6.   )
  7. )
  8. (mklaco "交叉口半径" 3)
  9.         (if (setq ss (ssget "x" '((0 . "arc") (8 . "道路线"))))
  10.         (repeat (setq i (sslength ss))
  11.             (setq e (ssname ss (setq i (1- i)))
  12.                     el (entget e)
  13.             )
  14.             (if (equal (cdr (assoc 40 el)) 20 10)
  15.                     (entmod (subst (cons 8 "交叉口半径") (assoc 8 el) el))
  16.             )
  17.         )
  18.     )
  19. )
回复

使用道具 举报

发表于 2014-2-28 10:28:34 | 显示全部楼层
好判断
方案1:看左右相邻。若邻居长,自身短,则是。
方案2:不看相邻,只算增长系数,即可。
回复

使用道具 举报

发表于 2014-2-28 10:38:42 | 显示全部楼层
zml84 发表于 2014-2-28 10:28
好判断
方案1:看左右相邻。若邻居长,自身短,则是。
方案2:不看相邻,只算增长系数,即可。

专业 .....
回复

使用道具 举报

发表于 2014-2-28 11:31:45 | 显示全部楼层
  1. (defun c:tt (/ ss n el dr)
  2.   (while (setq ss (ssget '((0 . "arc"))))
  3.     (repeat (setq n (sslength ss))
  4.       (setq el (entget(ssname ss (setq n (1- n)))))
  5.       (setq dr (- (cdr (assoc 51 el)) (cdr (assoc 50 el))))
  6.       (if (< dr 0) (setq dr (+ dr pi pi)))
  7.       (if (> dr (/ pi 3)) ;;圆心角大于60度(具体大小可根据实际情况自己设置),则认为是交叉口
  8.         (progn
  9.           (if (assoc 370 el)
  10.             (setq el (subst (cons 370 40) (assoc 370 el) el))
  11.             (setq el (append el (list (cons 370 40))))
  12.             )
  13.           (if (assoc 62 el)
  14.             (setq el (subst (cons 62 3) (assoc 62 el) el))
  15.             (setq el (append el (list (cons 62 3))))
  16.             )
  17.           (entmod el)
  18.           )
  19.         )
  20.       )
  21.     )
  22.   (princ)
  23.   )
回复

使用道具 举报

发表于 2014-2-28 12:09:42 | 显示全部楼层
本帖最后由 xyp1964 于 2014-2-28 12:41 编辑

  1. ;;只适于所提供的dwg文件

  2. (if (setq ss (ssget '((0 . "circle") (40 . 20)))) (sssetfirst ss ss))

点评

跑题了!  发表于 2014-2-28 12:16
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-25 10:06 , Processed in 0.180109 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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