ZZXXQQ
发表于 2015-7-14 10:57:11
sweetsea 发表于 2015-7-14 08:57 static/image/common/back.gif
要是能把“块名”作为一个变量,加入一个函数,用鼠标点选某个块,将这个块的块名传递给变量,然后再选择 ...
;统计封闭复线内的指定块。明经 ZZXXQQ 2015.7.14
(defun C:TT ()
(if (setq ss1 (ssget ":E:S" '((0 . "INSERT")))) (progn
(setq bnm (assoc 2 (entget(ssname ss 0))))
(if (and (setq S1 (entsel "\nSelect a Polyline 选择多段线 :"))
(setq ENT (entget(car S1)))
(= (cdr(assoc 0 ENT)) "LWPOLYLINE")
(= (cdr(assoc 70 ENT)) 1)) (progn
(setq PLST (LIST))
(foreach N ENT (if (= (car N) 10) (setq PLST (cons (cdr N) PLST))))
(setq SS (ssget "WP" PLST (list '(0 . "INSERT") bnm)))
))
))
(if SS (sslength SS) 0)
)
sweetsea
发表于 2015-7-14 14:22:04
ZZXXQQ 发表于 2015-7-14 10:57 static/image/common/back.gif
;统计封闭复线内的块。明经 ZZXXQQ 2009.6.8
(DEFUN C:TT ()
(IF (AND (SETQ S1 (ENTSEL "\nSelect a Polyline 选择多段线 :"))
(SETQ ENT(ENTGET(CAR S1)))
(= (CDR(ASSOC 0 ENT)) "LWPOLYLINE")
(= (CDR(ASSOC 70 ENT)) 1)) (PROGN
(SETQ PLST (LIST))
(FOREACH N ENT (IF (= (CAR N) 10) (SETQ PLST (CONS (CDR N) PLST))))
(SETQ PLST (REVERSE PLST))
(SETQ SS (SSGET "WP" PLST '((0 . "INSERT")(2 . "门禁读卡器(进口品牌)"))))
))
(IF SS (SSLENGTH SS) 0)
)
之前的老代码加了(2 . "块名")后可以正常统计数量,但是Z版今天新写的代码,加载了lsp文件后,第一次使用tt命令,可以正常统计点选的块数量,紧接着再次使用tt命令点选另一个块,统计的块数量好像还是之前的那个块的,似乎变量没有刷新。
kunki
发表于 2016-4-29 16:31:43
用了Z版21楼的程序,选择对象时报错 错误: 参数类型错误: lselsetp nil
clh521
发表于 2016-4-29 16:59:50
多谢源码,学习了
迷不知途
发表于 2016-4-29 23:56:16
来学习学习!!
bai2000
发表于 2016-4-30 18:47:10
来学习学习!!
kunki
发表于 2016-5-2 18:52:32
Z版21楼的程序,选择了多段线后回车显示如下:
命令: tt
选择对象:
Select a Polyline 选择多段线 :591
命令:
fengche1915@
发表于 2018-9-6 15:29:29
命令: TT
选择对象:
参数类型错误: lselsetp nil
bai2000
发表于 2020-2-4 18:30:08
Grid
发表于 2020-2-11 09:52:07
谢谢,正需要这功能