明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2410|回复: 21

[提问] 请帮忙改写成指定长度删除 不小于且大于的不删除。

[复制链接]
发表于 2018-9-6 21:30 | 显示全部楼层 |阅读模式
本帖最后由 htlaser 于 2018-9-6 21:34 编辑

类似快速选择-直线-长度相同
请帮忙改写成指定长度删除   不小于且大于的不删除。主要用于客户来图,3D图转平面图倒圆角边转CAD图的小边线。

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2018-9-12 01:11 | 显示全部楼层
Andyhon 发表于 2018-9-10 17:40
Command: sxd1

删除大于一定长度的直线

能不能将这个改成亮显,读代码能力实在太差了。只能看懂小部分。真抱歉又要麻烦您了。
  1. (defun c:tt ( / dis l len mnd mxd t0 tol un x)
  2.   (setq tol 0.000001)                  ; 精度
  3.   (setq dis 100)                       ; 长度
  4.   (setq mxd (+ dis tol))               ; 最大长度
  5.   (setq mnd (- dis tol))               ; 最小长度
  6.   (and
  7.     (setq un (vl-catch-all-apply 'ssget '(((0 . "LINE")))))
  8.     (vl-catch-all-error-p un)
  9.     (setq un nil)
  10.   )                                    ; 获取选择集
  11.   ;(setq t0 (* 86400 (getvar "TDUSRTIMER"))) ; 选择完成进入耗时
  12.   (and un
  13.     (repeat (setq len (sslength un))
  14.       (setq l (cons (ssname un (setq len (1- len))) l))
  15.     )
  16.   )                                    ; 获取图元表
  17.   (setq un nil)                        ; 清空选择集
  18.   (setq l (vl-remove-if-not '(lambda (x) (setq x (entget x)) (setq x (distance (cdr (assoc 10 x)) (cdr (assoc 11 x))))
  19.         (and (< x mxd) (> x mnd) ) ) l ) )
  20.   ;(setq t0 (- (* 86400 (getvar "TDUSRTIMER")) t0))
  21.   ;(prompt (strcat "\n过滤耗时 " (rtos t0 2 3) " 秒"))
  22.   (foreach x l
  23.     (redraw x 3)
  24.   )
  25.   (princ)
  26. )

 楼主| 发表于 2018-9-12 09:43 | 显示全部楼层
本帖最后由 htlaser 于 2018-9-12 09:47 编辑
Andyhon 发表于 2018-9-12 07:54
亮显?

亮显那些!?


(defun c:sxdd ( / dis l len mnd mxd t0 tol un x)
  (setq tol 0.05)   ; 类似模糊精度
  (setq dis (getreal "\n请输入需要选择直线的长度值"))  ; 长度  
  (setq mxd (+ dis tol)); 最大长度
  (setq mnd (- dis tol)); 最小长度
  (and(setq un (vl-catch-all-apply 'ssget '(((0 . "LINE")))))
                (vl-catch-all-error-p un)
    (setq un nil)); 获取选择集
  ;(setq t0 (* 86400 (getvar "TDUSRTIMER"))) ; 选择完成进入耗时
  (and un (repeat (setq len (sslength un))
                                         (setq l (cons (ssname un (setq len (1- len))) l)))) ; 获取图元表
  ;(setq un nil)  ; 清空选择集
  (setq l
                (vl-remove-if-not '(lambda (x)
                (setq x (entget x))
    (setq x (distance (cdr (assoc 10 x)) (cdr (assoc 11 x))))
    (and (< x mxd) (> x mnd) ) ) l)
  )
  (setq t0 (- (* 86400 (getvar "TDUSRTIMER")) t0))
  (prompt (strcat "\n过滤耗时 " (rtos t0 2 3) " 秒"))
  (foreach x l
    (redraw x 3))
        (sssetfirst nil  ) ;这里不知道怎么添加
  (princ)
)

点评

学习了谢谢你之前分享的源码  发表于 2020-10-5 21:57
发表于 2018-9-10 17:40 | 显示全部楼层
本帖最后由 Andyhon 于 2018-9-10 17:57 编辑


Command: sxd1

删除大于一定长度的直线
请输入可容许的最小线段长度==>> 0.395

请输入可容许的最大线段长度==>> 0.405

Select objects: All 127 found

Select objects:

Test OK!
(princ "\n 删除大于一定长度的直线")
  ===>
  (princ "\n 删除介于一定长度的直线")

发表于 2018-9-7 10:00 | 显示全部楼层
Try this

本帖子中包含更多资源

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

x
 楼主| 发表于 2018-9-9 15:38 | 显示全部楼层

谢谢您 程序还是有问题
 楼主| 发表于 2018-9-9 15:39 | 显示全部楼层
htlaser 发表于 2018-9-9 15:38
谢谢您 程序还是有问题

别找了一个程序 还是有小问题  相同长度 有角度的也是不能被选中 只能加大值。

本帖子中包含更多资源

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

x
发表于 2018-9-9 15:58 | 显示全部楼层
请贴出错误讯息&配合程序试用图(*.Dwg)
 楼主| 发表于 2018-9-10 16:32 | 显示全部楼层
Andyhon 发表于 2018-9-9 15:58
请贴出错误讯息&配合程序试用图(*.Dwg)

筛选出0.4长的线

本帖子中包含更多资源

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

x
发表于 2018-9-12 07:54 | 显示全部楼层
亮显?

亮显那些!?
 楼主| 发表于 2018-9-12 09:34 | 显示全部楼层
Andyhon 发表于 2018-9-12 07:54
亮显?

亮显那些!?

(setq dis 100)                       ; 长度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 03:26 , Processed in 0.255473 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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