这是一个标注节点桩号的程序,这个程序在WIN7系统下是正常的,但是WIN10系统下运行到一半就退出来了,请坛里的大神帮我看看是怎么回事吧,小弟在此先谢谢了
具体问题是这样的,运行JJ命令,在多段线上选区第一个点,输入第一个点的桩号,比如1000,然后选第二个点,输入第二个点的桩号,比如1200,然后再随便找一个点就可以标出这个点的桩号。现在WIN10系统下输入第二个点的桩号就退出了。
;;;标注节点桩号.by cocoorange 17.04.16
;;;--------------------------------------------------
;;小数点后数字加1
;strlen 以整数形式返回一个字符串中字符的个数
;atoi 将一个字符串转换成整数
;entmod 修改对象(图元)的定义数据
;itoa 将整数转换成字符串,并返回转换结果
;strcat 将多个字符串拼接成一个长字符串后返回
;subst 在表中搜索某旧项,并将表中出现的每一个旧项用新项代替,然后返回修改后所得的表
;substr返回字符串中的一个子字符串
;定义出错处理函数trap1
(defun trap1 (errmsg) ;
(setvar "osmode" 4143) ;捕捉设置,出错之后重设捕捉
(setvar "CMDECHO" 1) ;打开回显
(setq *error* temperr)
) ;错误处理函数
;;jj程序主体
(defun C:jj()
(setq cmd_old (getvar "CMDECHO")) ;获取原始回显值
(setq os_old (getvar "osmode")) ;获取原始捕捉值
(setvar "CMDECHO" 0) ;关闭回显
(setq temperr *error*)
(setq *error* trap1)
(vl-load-com)
(setvar "osmode" 0)
(vl-cmdf "UCS" "") ;切换世界坐标系
(setq el (car (entsel "\n选择桩号线:"))) ;entsel通过一个点选择一个图元,返回图元名称el
(setvar "osmode" 4143)
(setq ep1 (getpoint "\n选择桩号基准点1:")) ;选择桩号基点
(setq k1 (getreal "\n输入基点1桩号值:")) ;输入基点桩号值
(setq ep2 (getpoint "\n选择桩号基准点2:"))
(setq k2 (getreal "\n输入基点2桩号值:"))
(setvar "osmode" 0)
(setq 1ep1 (vlax-curve-getClosestPointTo el ep1 nil)) ;
(setq ep1dist1 (vlax-curve-getDistAtPoint el 1ep1)) ;
(setq 2ep2 (vlax-curve-getClosestPointTo el ep2 nil)) ;
(setq ep2dist2 (vlax-curve-getDistAtPoint el 2ep2))