下面是我自己写的一个程序,主要功能就是把单线变成双线。
但是有一些缺陷。
缺陷1:如果变成双线的对象在屏幕显示以外,那么就会出错。第二条镜像的线就会镜像的别的地方去。
缺陷2:运行的速度很慢,运行的时候命令行一直会出现命令出错XXX的提示,不过程序还是能正常的跑完。
哪位能帮我看看,有什么办法可以解决?- (defun c:DoubleLine ( / WaterPipeWidth 1_osmode num index a ss1 name1 ent1 spt mpt )
- (setq ss1 (ssget (list (cons 0 "line"))))
- ;(setq WaterPipeWidth (getreal "\n输入宽度:"))
- (PROMPT "\nEnter a Value:")
- (SETQ a (/(GETREAL)2))
- (setq num (sslength ss1))
- (setq index 0)
- (setq 1_osmode (getvar "osmode"))
- (setvar "osmode" 0)
- (repeat num
- (setq name1 (ssname ss1 index))
- (setq ent1 (entget name1))
- (setq spt (cdr (assoc 10 ent1)))
- (setq mpt (cdr (assoc 11 ent1)))
- (command "offset" a name1 spt "" "" "")
- (command "mirror" "l" "" spt mpt "n" "" """")
- (COMMAND "CHPROP" name1 "" "c" "9" "lt" "center2" "" "")
- (setq index (1+ index))
- )
- (setvar "osmode" 1_osmode)
- (princ)
- )
|