AyTrane 发表于 2022-7-5 20:01:32

2015 upgrad的LISP错误

大家好!
我们最近将办公室从2013年升级到AutoCAD 2015。我们有几个LISP例程似乎不喜欢新版本。其中一个例程存储弧的长度,供以后使用。
 

; * ARC LENGTH
; * Returns the length of an arc
; * From JefferyPSanders.com

(defun getArc(en)
   (command "lengthen" en "")
   (getvar "perimeter")
)
 
当例程到达上述语句时,VLIDE将出错并显示“函数已取消”。
 
这在2013年曾经运行得很好,你认为主要的变化是什么,使上述代码不再工作?有没有想过用不同的方法来完成相同的任务?
 
提前谢谢!
 
当做
艾特灵

ymg3 发表于 2022-7-5 20:24:36

艾川,
 
不知道Acad 2015为什么会出问题,但你应该
使用vlax曲线函数。
 

(defun getlength (/ en)
(setq en (car (entsel)))               
(vlax-curve-getDistAtParam en (vlax-curve-getEndParam en))
)

BIGAL 发表于 2022-7-5 20:44:19

另一种方法是,您需要一个cond来检查每个对象类型,只需使用dumpit来查找变量。
 
(setq obj (vlax-Ename->Vla-Object (car (entsel))))
(princ (vla-get-arclength obj)) ; this is arc
;(princ (vla-get-length obj)) ; this is pline and a line
;(princ (vla-get-Circumference obj)) ; this is a circle

AyTrane 发表于 2022-7-5 20:56:46

谢谢你们!我不得不做一些定制,但vlax曲线是正确的路径。
 

(vl-load-com)
(Defun getArc (en)
   (vlax-curve-getDistAtParam en (vlax-curve-getEndParam en))
)

asos2000 发表于 2022-7-5 21:07:56

将命令替换为命令-S
页: [1]
查看完整版本: 2015 upgrad的LISP错误