找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 8542|回复: 46

[已解决] 多选直线按指定打断距离打断直线

[复制链接]

已领礼包: 449个

财富等级: 日进斗金

发表于 2013-4-12 18:59:14 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 炫翔 于 2013-4-19 11:25 编辑

大于或等于20 小于或等于100的打断一次 大于100的按除以100来算 比如:105就打断二次 200也是打断二次 以此类推 打断距离为4MM 小于20MM的打断距离为1.5MM 下面是郊果图

点评

此贴充分的体现了彼此沟通、交流能产生的正能量。  发表于 2013-4-14 09:42

本帖被以下淘专辑推荐:

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

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-4-12 19:01:16 | 显示全部楼层
(defun c:tt ()
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (setq ss (ssget))
  (setq i 0)
  (repeat (sslength ss)
    (setq name (ssname ss i))
    (setq ent (entget name))
    (setq pt10 (cdr (assoc 10 ent)))
    (setq pt11 (cdr(assoc 11 ent)))
    (setq dist (distance pt10 pt11))
    (setq ang (angle pt10 pt11))
    (cond
      ((and (<= dist 100) (>= dist 20)) (setq gs 1))
      ((> dist 100.0) (setq gs (1+(fix (/ dist 100)))) )
    ) ;桥位的个数
   
    (setq abc 1)
    (repeat gs
      (setq dist1 (/ dist (1+ gs)))
      (setq pt1 (polar pt10 ang dist1)) ;距离
      (command "circle" pt1 2)
      (setq dist1 (* dist1 2.0))
      (setq abc (1+ abc))
    )
    (setq i (1+ i))
  )
  (setvar "osmode" 3)
  (setvar "osmode" 1)
)
这是我写的代码.不知道哪里出错了.只能画出一个圆.远远也没有达到我想要的!新学LISP还请前辈师兄们多多指点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-4-12 19:04:15 | 显示全部楼层
第一次发贴,完全不知道怎么用.用了三个才搞定!呵呵.
]`S)Y2(4297DHLYT8UT8@$A.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1742个

财富等级: 堆金积玉

发表于 2013-4-12 19:08:44 | 显示全部楼层
给你思路:框选线,循环计算每一条的长度,判断长度,然后找到中点,打断.....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-12 19:14:19 | 显示全部楼层

问下,你这个是什么专业的,什么情况下需要这样打断?

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-4-12 19:19:00 | 显示全部楼层

  1. (setq ss (ssget))
  2.   (setq i 0)
  3.   (repeat (sslength ss)
建议你下,函数SSGET应该使用过滤,选择集里面只放你需要处理的实体,这样你的代码要少,也不容易出错。

比如你要处理线:

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-4-12 19:28:40 | 显示全部楼层
既然你说只能花出一个圆,那么肯定就是这部分代码的问题了,你查看下变量GS等于多少,应该肯定等于1了。

如果不管线多长,GS都等于1,那么就是上面算GS的地方出错了。

  1.     (repeat gs
  2.       (setq dist1 (/ dist (1+ gs)))
  3.       (setq pt1 (polar pt10 ang dist1)) ;距离
  4.       (command "circle" pt1 2)
  5.       (setq dist1 (* dist1 2.0))
  6.       (setq abc (1+ abc))
  7.     )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-4-12 19:34:54 | 显示全部楼层
本帖最后由 newer 于 2013-4-12 19:41 编辑
xtdwynij 发表于 2013-4-12 19:01
(defun c:tt ()
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)

看明白了,你仔细看下代码:


  1.     (repeat gs
  2.       (setq dist1 (/ dist (1+ gs)))
  3.       (setq pt1 (polar pt10 ang dist1)) ;距离
  4.       (command "circle" pt1 2)
  5.       (setq dist1 (* dist1 2.0))
  6.       (setq abc (1+ abc))
  7.     )
循环开始的时候,你取得的第一个点,距离端点10距离DIST。

画完圆后,你按想法把 dist1增量了。

可第二次回循环后,这个dist1又是原来的第一个点的位置了。因为这时候的dist1还是根据dist得到的,而你循环里面并没有改变dist的值,dist1在画圆前永远是定值了。
  1. (/ dist (1+ gs)) --->常量
复制代码
其实不是只能画一个圆,你选择下画过的圆看看,应该好几个都重合在一起了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-4-12 19:36:50 | 显示全部楼层
newer 发表于 2013-4-12 19:28
既然你说只能花出一个圆,那么肯定就是这部分代码的问题了,你查看下变量GS等于多少,应该肯定等于1了。

...

我知道是这部分的问题,GS并不是只等于1.也不是在单单在中间打断.是根据线的长度打断的!长度超过100和等于200时打断二次..然后每过100都打断一次.不到一百也打断一次.  我想是第二次循环错了.但是不知道错在哪里?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-4-12 19:38:18 | 显示全部楼层
Lispboy 发表于 2013-4-12 19:19
建议你下,函数SSGET应该使用过滤,选择集里面只放你需要处理的实体,这样你的代码要少,也不容易出错。

...

谢谢指点!呵呵.我知道这个功能.只是没有用过.正打算解决了就查一下怎么才能只选直线呢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-4-12 19:39:33 | 显示全部楼层
Lispboy 发表于 2013-4-12 19:14
问下,你这个是什么专业的,什么情况下需要这样打断?

另外,如果只是打断的话,试试设计一个合适的线 ...

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

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-4-12 19:54:43 | 显示全部楼层
newer 发表于 2013-4-12 19:34
看明白了,你仔细看下代码:循环开始的时候,你取得的第一个点,距离端点10距离DIST。

画完圆后,你按想 ...

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-4-12 19:59:36 | 显示全部楼层
xtdwynij 发表于 2013-4-12 19:54
是的!循环里面不能计算那个值!我把那个值放在上面了!然后就可以了!感谢版主!呵呵.一放上去就有好多人来回 ...

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

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-4-12 20:15:07 | 显示全部楼层
[pcode=lisp,true];;打断开口:≥20 ≤100的打断1次 开口4;>100的按除以100来算 开口4;< 20的的打断1次 开口1.5
(defun c:tt ()
  (CMDLA0)
  (xyp-MkLaCo "TEST" 1)
  (setq        ss (ssget '((0 . "line")(8 . "0")))
        i  -1
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (setq leng (xyp-get-CurveLength s1))
    (xyp-SubUpd s1 8 "test")
    (cond ((< 0 leng 20) (setq n 2 dw 1.5))
          ((<= 20 leng 100) (setq n 2 dw 4))
          ((< 100 leng)(setq n (+(fix(/ leng 100.))1) dw 4))
    )
    (xyp-Curve-Divide s1 n dw)
  )
  (CMDLA1)
)
[/pcode]院长的伪源码!我还没做好!等做好了再贴上去!可能要久点!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-4-12 20:25:11 | 显示全部楼层
这是郊果图.院长果然高产量!
1111.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 08:13 , Processed in 0.227419 second(s), 68 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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