找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2539|回复: 5

【LISP程序】规划中处理交叉路口-by eachy

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-1-10 19:50:31 | 显示全部楼层 |阅读模式

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

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

×
;;这是一个很简单的程序,用于规划中处理交叉路口(交点打断)
;;问题:只能处理line pline(可以拟合) arc,对spline错
;;
(defun c:brkroad (/ mm ss e intl int1 pl x)
  (xdrx_begin '("cmdecho" "0"))
  (xdrx_ucson)
  (princ "\n窗选路口(每次处理一个路口)...")
  (setq mm 0.1)
  (setq    ss (ssget
        '((0 . "line,arc,*polyline,spline") ;|(8 . "ground")|;)
      )
  )
  (if ss
    (progn
      (setq intl (xdrx_getinters ss)
        pt     (xdrx_getlastpts)
      )
      (setvar "aperture" (getvar "pickbox"))
      (c:xdrx_setmark)
      (while (setq int1 (car intl))
    (setq ss (ssget    "_c"
            (polar int1 (* 1.25 pi) (* 0.1 bl))
                    ;bl为出图比例
            (polar int1 (* 0.25 pi) (* 0.1 bl))
         )
    )
    ;;(setq ss (xdrx_getptss int1 mm 1)) 以上选择集用getptss后不能处理spline arc
    (xdrx_setsstodb ss 0)
    (while (setq e (xdrx_getentdata 0))
      (command ".break" (list e int1) int1)
    )
    (setq intl (cdr intl))
      )
      (setq ss (xdrx_getss)
        pl (xdrx_searchoutline ss)
      )
      (if pl
    (progn
      (setq pl (apply 'xdrx_pointsoffset (cons (* 0.1 bl) pl)))
                    ;十子路口
      (command ".erase" "wp")
      (foreach x pl (command x))
      (command "" "")
      (command)
    )
    (command ".erase" "w" (car pt) (cadr pt) "") ;丁字路口
      )
    )
  )
  (xdrx_ucsoff)
  (xdrx_end)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-4-20 22:32:21 | 显示全部楼层
牢固 发表于 2013-4-19 12:03
批量交点打断,除了Spline曲线外,其他曲线最好都不要用Break命令,以提高效率!
嗯嗯,不只这个程序,能尽量不用command就尽量不用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-5-19 01:36:55 | 显示全部楼层
不错,很需要,解决了规划路口处理问题,效率很高!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2014-10-1 00:40:10 来自手机 | 显示全部楼层
不错,再加上下

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-10-1 01:28:24 | 显示全部楼层
77077 发表于 2014-10-1 00:40
不错,再加上下

12年前的帖子给翻上来了,现在要写这个,代码就很短了。

xdtb_cross_road.gif


  1. (defun c:tt ()
  2.   (xdrx_begin)
  3.   (if (and
  4.         (setq p1 (getpoint "\n窗口第一点<退出>:"))
  5.         (setq p2 (getcorner p1 "\n窗口第二点<退出>:"))
  6.         (setq ss (ssget "c" p1 p2 '((0 . "*LINE,ARC"))))
  7.         (setq ss (xdrx_curve_intersectbreak ss))
  8.         (xdrx_object_regen ss)
  9.         (setq ss1 (ssget "w" p1 p2 '((0 . "*LINE,ARC"))))
  10.       )
  11.     (xdrx_entity_delete ss1)
  12.   )
  13.   (xdrx_end)
  14.   (princ)
  15. )

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-18 21:24 , Processed in 0.465970 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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