如何修改Lee-mac尺寸重叠检查lsp为手动选择范围检查
本帖最后由 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" P2P2 '((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),不过他的程序是一运行检查整个图纸,我觉得最好调为手动选择检查范围好,整个图纸的话太慢了。大侠能不能修改成检查某个范围内的图纸。
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" P2P2 '((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)
)
;;; 选择集转表
(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)
) 原文链接http://www.lisp123.com/bzl/2015/0112/315.html 本帖最后由 tigcat 于 2020-11-9 12:05 编辑
cghdy 发表于 2020-11-9 10:51
;;; 选择集转表
(defun ss2lst (ss / lst n ssnamen)
(setq n -1
大侠,我把子函数复制进去运行后没有选中有问题的尺寸,不知道怎么回事。要不改成尺寸线有相交重叠的尺寸变个颜色可以吗? 我后来发现了,只有两个尺寸时才起作用,3个尺寸就不好使了 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)))
...
谢谢大侠。 希望有大侠帮忙改lee-mac的程序为手动选择范围,上面的那段lisp123网站的代码有很多地方存在bug,不是很好用。 tigcat 发表于 2020-11-9 14:53
希望有大侠帮忙改lee-mac的程序为手动选择范围,上面的那段lisp123网站的代码有很多地方存在bug,不是很好 ...
http://bbs.mjtd.com/thread-182310-1-1.html cghdy 发表于 2020-11-9 16:05
http://bbs.mjtd.com/thread-182310-1-1.html
大神,谢谢,您这把链接也贴出来,算是送佛送到西,帮人帮到底了。
页:
[1]
2