明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1778|回复: 11

[提问] 如何修改Lee-mac尺寸重叠检查lsp为手动选择范围检查

[复制链接]
发表于 2020-11-7 14:03:56 | 显示全部楼层 |阅读模式
本帖最后由 tigcat 于 2020-11-9 14:16 编辑

;|源程序来自http://www.lisp123.com/bzl/2015/0112/315.html
ss2lst子函数由明经大侠“cghdy”补充
|;
(defun c:tt(/ E SS SS1 SS2 N P1 P2 LSTSS1 LSTSS2 SSS)
  (defun getdxf(s num)(cdr(assoc num s)))
  ;;; 选择集转表
(defun SS2LST (ss / lst n ssnamen)
        (setq n -1
                lst '()
        )
        (while (setq ssnamen (ssname ss (setq n (1+ n))))
                (setq lst (cons ssnamen lst))
        )
        (reverse lst)
)
  (setq ss(ssget '((0  . "dimension"))) n 0 SSS (SSADD))
  (repeat (sslength ss)
    (setq e(ssname ss n)
          s(entget e)
          p1(getdxf s 10)
          clz(abs(-(car(getdxf s 13))(car(getdxf s 14))))
          P2(list (- (car p1)clz)(cadr p1)(caddr p1))
          )
    (SETQ SS1(SSGET "C" P1 P1 '((0  . "dimension")))
          LSTSS1(SS2LST SS1)
          SS2(SSGET "C" P2  P2 '((0  . "dimension")))
          LSTSS2(SS2LST SS2)
          )
    (SSDEL E SS1)
    (SSDEL E SS2)
    (IF (AND (EQUAL LSTSS1 LSTSS2)
             (>(LENGTH LSTSS1)0)
             (>(LENGTH LSTSS2)0)
             )
      (repeat(setq m(sslength ss1))
             (SSADD (ssname ss1(setq m(1- m))) SSS)
        )
    )
    (setq n(1+ n))
    )
(SSSETFIRST SSS SSS)
(princ)
)

上面的程序经大侠修改后能用了,跟原网站说的一样,有很多的漏洞。比如只能检查两道尺寸,一道尺寸要全部包住另一个尺寸。现在经大神提醒,大名鼎鼎的Lee-mac有这个程序(见下面附件DimensionOverlapV1-2.lsp),不过他的程序是一运行检查整个图纸,我觉得最好调为手动选择检查范围好,整个图纸的话太慢了。大侠能不能修改成检查某个范围内的图纸。

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-11-9 14:32:49 | 显示全部楼层
tigcat 发表于 2020-11-9 11:42
大侠,我把子函数复制进去运行后没有选中有问题的尺寸,不知道怎么回事。要不改成尺寸线有相交重叠的尺寸变 ...

(defun c:tt(/ E SS SS1 SS2 N P1 P2 LSTSS1 LSTSS2 SSS)
  (defun getdxf(s num)(cdr(assoc num s)))
  ;;; 选择集转表
(defun SS2LST (ss / lst n ssnamen)
        (setq n -1
                lst '()
        )
        (while (setq ssnamen (ssname ss (setq n (1+ n))))
                (setq lst (cons ssnamen lst))
        )
        (reverse lst)
)
  (setq ss(ssget '((0  . "dimension"))) n 0 SSS (SSADD))
  (repeat (sslength ss)
    (setq e(ssname ss n)
          s(entget e)
          p1(getdxf s 10)
          clz(abs(-(car(getdxf s 13))(car(getdxf s 14))))
          P2(list (- (car p1)clz)(cadr p1)(caddr p1))
          )
    (SETQ SS1(SSGET "C" P1 P1 '((0  . "dimension")))
          LSTSS1(SS2LST SS1)
          SS2(SSGET "C" P2  P2 '((0  . "dimension")))
          LSTSS2(SS2LST SS2)
          )
    (SSDEL E SS1)
    (SSDEL E SS2)
    (IF (AND (EQUAL LSTSS1 LSTSS2)
             (>(LENGTH LSTSS1)0)
             (>(LENGTH LSTSS2)0)
             )
      (repeat(setq m(sslength ss1))
             (SSADD (ssname ss1(setq m(1- m))) SSS)
        )
    )
    (setq n(1+ n))
    )
;(SSSETFIRST SSS SSS)
        (COMMAND "CHANGE" SSS "" "PROPERTIES" "C" "1" "")
(princ)
)
回复 支持 1 反对 0

使用道具 举报

发表于 2020-11-9 10:51:19 | 显示全部楼层
;;; 选择集转表
(defun ss2lst (ss / lst n ssnamen)
        (setq n -1
                lst '()
        )
        (while (setq ssnamen (ssname ss (setq n (1+ n))))
                (setq lst (cons ssnamen lst))
        )
        (reverse lst)
)
 楼主| 发表于 2020-11-7 18:42:31 | 显示全部楼层
 楼主| 发表于 2020-11-9 11:42:25 | 显示全部楼层
本帖最后由 tigcat 于 2020-11-9 12:05 编辑
cghdy 发表于 2020-11-9 10:51
;;; 选择集转表
(defun ss2lst (ss / lst n ssnamen)
        (setq n -1
大侠,我把子函数复制进去运行后没有选中有问题的尺寸,不知道怎么回事。要不改成尺寸线有相交重叠的尺寸变个颜色可以吗?
 楼主| 发表于 2020-11-9 12:17:34 | 显示全部楼层
我后来发现了,只有两个尺寸时才起作用,3个尺寸就不好使了
 楼主| 发表于 2020-11-9 14:43:34 | 显示全部楼层
cghdy 发表于 2020-11-9 14:32
(defun c:tt(/ E SS SS1 SS2 N P1 P2 LSTSS1 LSTSS2 SSS)
  (defun getdxf(s num)(cdr(assoc num s)))
...

谢谢大侠。
 楼主| 发表于 2020-11-9 14:53:03 | 显示全部楼层
希望有大侠帮忙改lee-mac的程序为手动选择范围,上面的那段lisp123网站的代码有很多地方存在bug,不是很好用。
发表于 2020-11-9 16:05:23 | 显示全部楼层
tigcat 发表于 2020-11-9 14:53
希望有大侠帮忙改lee-mac的程序为手动选择范围,上面的那段lisp123网站的代码有很多地方存在bug,不是很好 ...

http://bbs.mjtd.com/thread-182310-1-1.html
 楼主| 发表于 2020-11-9 16:43:50 | 显示全部楼层
cghdy 发表于 2020-11-9 16:05
http://bbs.mjtd.com/thread-182310-1-1.html

大神,谢谢,您这把链接也贴出来,算是送佛送到西,帮人帮到底了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 14:22 , Processed in 0.204237 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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