感谢龙斑竹的热心,(while (and (setq S1 (ssget "C" DIAN1 DIAN3))
(> (sslength S1) 2)
(setq S1 (ssget " " '((0 . "*line"))))
)
(repeat (sslength S1)
(command "_.TRIM" BOX2 "" "F" DIAN1 DIAN2 DIAN3 DIAN4 DIAN1 ""
"")
)
(setq S1 NIL)
)
以上代码段应改为 - (while (and (setq S1 (ssget "cp" (LIST DIAN1 DIAN2 DIAN3 DIAN4)))
- (> (sslength S1) 1)
- (setq S1 (ssget "P" '((0 . "*line"))))
- )
- (setq ci (sslength S1))
- (repeat ci
- (command "_.TRIM" BOX2 "" "F" DIAN1 DIAN2 DIAN3 DIAN4 DIAN1 ""
- "")
- )
- (setq S1 NIL)
- )
,否则当文字为倾斜时会出现死循环。
当然通过这种处理后,也解决了明总所说的问题。
另外,经实验并分析4楼及7楼的剪切方式,觉得采用全部对象作为剪切边界不妥,这样实际上只剪掉了线段中的一段,因此跟多段线的端点密度有关,当很多疏密不一的线通过文字区时,剪出来的边界参差不齐,并且,当同时要处理多个文字,(特别是图件较大,校验时约1m)速度不能忍受。 |