循环退出出错,请大师们帮忙解决一下。
源码来自http://bbs.mjtd.com/forum.php?mod=viewthread&tid=172592&highlight=%C6%AB%D2%C6自己修改了一点,程序能正常使用在高版本CAD退出时出现; 错误: 参数类型错误: VLA-OBJECT nil
在07版本测试没有问题,。
请大师们帮帮忙~~~~~~~~谢谢啦!!
(defun c:tt ()
(setq *error*_bak *error*)
(setq *error* *error*_non)
(setq osmode_bak (getvar "osmode"))
(setvar "osmode" 0)
(setvar 'cmdecho 0)
(vl-load-com)
(initget 2)
(setq getds (getreal "\n输入偏移距离<7.5>:"))
(if (not getds)
(setq getds 7.5)
)
(initget "Q S F")
(setq
nj-ppy (getkword
"\n输入选项:[向内偏移(Q)/向外偏移(S)/双向偏移(F)]<Q>:"
)
)
(if (not nj-ppy)
(setq nj-ppy "Q")
)
(while
(if (ssget ":s" '((0 . "Arc,Circle,Ellipse,*Line")))
(vlax-for obj (vla-get-activeselectionset
(vla-get-activedocument (vlax-get-acad-object))
)
(cond
((= nj-ppy "Q")
(vla-offset obj getds) ;内
)
((= nj-ppy "S")
(vla-offset obj (* getds -1)) ;外
)
((= nj-ppy "F")
(vla-offset obj getds) ;内
(vla-offset obj (* getds -1)) ;外
)
)
)
(vlax-release-object obj)
)
(setq clay (getvar "clayer"))
(setq SS1 (ssget "p"))
(if (= (tblsearch "layer" "中心线") nil)
(entmake (list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
'(70 . 0)
'(290 . 1)
(cons 2 "中心线")
(cons 62 1)
)
)
(setvar "clayer" "中心线")
)
(command "_change" ss1 "" "properties" "layer" "中心线" "")
)
(SETVAR "CLAYER" CLAY)
(setq *error* *error*_bak)
(setvar "osmode" osmode_bak)
(princ)
)
你不觉得你发少了*error*_non函数的代码吗? 本帖最后由 bssurvey 于 2020-3-12 10:26 编辑
(while
(if (ssget ":s" '((0 . "Arc,Circle,Ellipse,*Line")))
(vlax-for obj (vla-get-activeselectionset
(vla-get-activedocument (vlax-get-acad-object))
)
(cond
((= nj-ppy "Q")
(vla-offset obj getds) ;內
)
((= nj-ppy "S")
(vla-offset obj (* getds -1)) ;外
)
((= nj-ppy "F")
(vla-offset obj getds) ;內
(vla-offset obj (* getds -1)) ;外
)
)
)
; (vlax-release-object obj) 這個是多餘的
)
页:
[1]