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

谢谢,正需要这功能
页: 1 2 [3] 4
查看完整版本: [求助]统计所选多线段封闭区域内块的数量