明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 664571221

[提问] 各位大神看下,求输入TT,选择线,只选中垂直方向的线

[复制链接]
 楼主| 发表于 2025-6-10 16:50:01 | 显示全部楼层
水仙的错 发表于 2025-6-7 12:40
有只选择直线多段线的横线吗?

(defun cTT (/ all-vertical bulge-flag chk-pts-vertical data ent filter-ss i moshi pline-pts ss str)
        (setq moshi t);为t选择水平,其它为垂直
        (setq str (if (= moshi t)"水平""垂直"))
  (defun chk-pts-vertical (pts moshi / x0)
    (if (null pts)
      T
      (progn
        (setq x0 (if (= t moshi)(cadar pts)(caar pts)))
        (not (vl-some '(lambda (pt) (not (equal x0 (if(= t moshi)(cadr pt)(car pt)) 1e-4))) (cdr pts)))
      )
    )
  )
  
  (prompt "\n选择多段线: ")
  (setq ss (ssget '((0 . "LWPOLYLINE"))))
  (if ss
    (progn
      (setq filter-ss (ssadd))
      (repeat (setq i (sslength ss))
        (setq ent (ssname ss (setq i (1- i)))
              data (entget ent)
              pline-pts '()
              bulge-flag T)
        (foreach x data
          (cond
            ((= (car x) 10)
             (setq pline-pts (cons (cdr x) pline-pts)))
            ((= (car x) 42)
             (if (not (equal (cdr x) 0.0 1e-6))
               (setq bulge-flag nil))
            )
          )
        )
        (setq all-vertical (chk-pts-vertical pline-pts moshi))
        (if (and bulge-flag
                 all-vertical
                 (> (length pline-pts) 1))
          (ssadd ent filter-ss)
        )
      )
      (sssetfirst nil filter-ss)
      (prompt (strcat "\n已选中 " (itoa (sslength filter-ss)) " 个"str"多段线"))
    )
    (prompt "\n未选择有效对象")
  )
  (princ)
)
(princ "\n垂直多段线过滤命令已加载,输入 LTT 执行。")
(princ)咏君修改
回复 支持 反对

使用道具 举报

发表于 2025-6-11 19:19:49 | 显示全部楼层
楼上的只能选择多段线横线,能直线和多段线都可以选吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-24 01:41 , Processed in 0.165741 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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