明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4016|回复: 10

[已解答] 如何选择符合长度要求的直线(框选)

[复制链接]
发表于 2013-12-9 22:42 | 显示全部楼层 |阅读模式
3明经币
框选后如何选中符合长度小于100的直线,试了几次没成功,哪位帮解决一下,谢谢!!!

最佳答案

发表于 2013-12-9 22:42 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2013-12-10 22:16 编辑
  1. (defun c:tt ()
  2. (if (setq ss (ssget '((0 . "LINE")))) (progn
  3.   (setq i -1 ss1 (ssadd))
  4.   (repeat (sslength ss)
  5.    (setq ent (entget (setq en (ssname ss (setq i (1+ i))))))
  6.    (if (< (distance (cdr(assoc 10 ent)) (cdr(assoc 11 ent))) 100)
  7.     (ssadd en ss1)
  8.    )
  9.   )
  10. ))
  11. ss1
  12. )

点评

反了,人家要小于,你给人大于了^_^  发表于 2013-12-10 09:27
回复

使用道具 举报

发表于 2013-12-9 22:54 | 显示全部楼层
用'fi过滤器试试,再不行,只能编程了
回复

使用道具 举报

发表于 2013-12-9 23:01 | 显示全部楼层
CAD自带命令qselect

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2013-12-10 09:20 | 显示全部楼层
ZZXXQQ 发表于 2013-12-10 08:48

命令: tt
选择对象: 指定对角点: 找到 2 个
选择对象:
<Selection set: 2c1>

怎么不行,,

点评

选择上一次选择集 P,  发表于 2013-12-10 09:25
回复

使用道具 举报

发表于 2013-12-10 09:28 | 显示全部楼层
xskfq 发表于 2013-12-10 09:20
命令: tt
选择对象: 指定对角点: 找到 2 个
选择对象:

把Z版程序的第6行“>”改为“<”。
回复

使用道具 举报

 楼主| 发表于 2013-12-10 09:54 | 显示全部楼层
ll_j 发表于 2013-12-10 09:28
把Z版程序的第6行“>”改为“

不行,好像不对
回复

使用道具 举报

发表于 2013-12-10 10:08 | 显示全部楼层
xskfq 发表于 2013-12-10 09:54
不行,好像不对

错是没错的,只是返回的选择集没有亮显。
这样试试:
MOVE
选择对象: (c:tt)           ;作为内部函数,可以定义的时候去掉c:
选择对象: 指定对角点: 找到 4 个
选择对象:
<Selection set: 2e>
找到 2 个
选择对象:
回复

使用道具 举报

发表于 2013-12-10 10:31 | 显示全部楼层
本帖最后由 snddd2000 于 2013-12-10 10:38 编辑

  1. (defun ssgetXlenline (Operator Len / ss ss1 i ent en ptslst)
  2. ;;;  (SSGETXLENLINE < 100 )
  3.   (if (setq ss (ssget "X" '((0 . "LINE"))))
  4.     (progn
  5.       (setq i -1
  6.             ptslst nil
  7.             ss1        (ssadd)
  8.       )
  9.       (repeat (sslength ss)
  10.         (setq ent (entget (setq en (ssname ss (setq i (1+ i))))))
  11.         (if
  12.           (Operator (distance (cdr (assoc 10 ent)) (cdr (assoc 11 ent)))
  13.                     Len
  14.           )
  15.            (setq
  16.              ptslst (cons (list (assoc 10 ent) (assoc 11 ent)) ptslst)
  17.            )
  18.         )
  19.       )
  20.       (ssget (APPEND
  21.                (list (cons -4 "<OR"))
  22.                (apply 'append
  23.                       (mapcar
  24.                         '(lambda (x)
  25.                            (LIST (cons -4 "<AND")
  26.                                  (car X)
  27.                                  (last X)
  28.                                  (cons -4 "AND>")
  29.                            )
  30.                          )
  31.                         ptslst
  32.                       )
  33.                )
  34.                (list (cons -4 "OR>"))
  35.              )
  36.       )
  37.     )
  38.   )
  39. )
回复

使用道具 举报

发表于 2013-12-10 11:08 | 显示全部楼层
xskfq 发表于 2013-12-10 09:54
不行,好像不对

(defun c:tt ()
(SETQ SS1 NIL)
(if (setq ss (ssget '((0 . "LINE")))) (progn
  (setq i -1 ss1 (ssadd))
  (repeat (sslength ss)
   (setq ent (entget (setq en (ssname ss (setq i (1+ i))))))
   (if (< (distance (cdr(assoc 10 ent)) (cdr(assoc 11 ent))) 100)
    (ssadd en ss1)
   )
  )
))
(sssetfirst nil ss1)
)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 18:16 , Processed in 0.327381 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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