drafting1768 发表于 2022-7-5 20:50:10

新版本-问题执行

你好提前感谢任何人提供的任何帮助!我刚刚获得了AutoCAD(2015)的新版本。从2007年升级。我遇到的问题是,我无法从旧版本导入我的CUI,因为它所在的计算机已死亡。我正试图从头开始定制我的新版本,我的lisp例程遇到了一个严重的问题。我尝试使用APPLOAD加载它们,它告诉我加载的是lsp文件。然后,我尝试在图纸中执行它,我得到:
 
命令:APPLOAD
距离lsp已成功加载。
DISTBEAR。LSP已成功加载。
命令:
命令:
命令:
命令:DISTBEAR
未知命令“DISTBEAR”。按F1键获取帮助。
 
我错过了什么???
 
这是越来越关键,因为我严重腿筋没有我可靠的lisp例程!
 
谢谢

Debalance 发表于 2022-7-5 21:02:24

你能展示一下源代码吗?

drafting1768 发表于 2022-7-5 21:06:09

 
以下是其中之一:
 
(defun get\u endpts(/a b)(命令“OSNAP”“ENDP”)(setq a(getpoint“\n输入第一点:”)(setq b(getpoint“\n输入第二点:”)(命令“OSNAP”“NONE”)(列表a b))(defun c:setdim();(initget(+1 2 4));(setq scalefactor(getreal“\n输入比例因子:”)(if(非setmap)(加载“setmap”))(setmap)(setq scalefactor#mapsc);(initget 1“Y Y N N”);(setq angflg(问题“是否要打印方位角?”)(setq angflg“Y”angmessage“WILL”);(cond(angflg;(if(not(setq dimrotation(getangle“\n输入角度旋转:)));(setq dimrotation#mapang);(setq DIMROTATION 0););(initget 1“1 5”);(setq secprec(atoi(getkword“\n四舍五入秒到最近”));)(setq dimrotation 0 secprec 5 secsmessage“5”)(警报(strcat”DIMLINE设置:\n\n比例因子设置为:“(rtos scalefactor 2 6)”\nzimuths“angmessage”打印“\n秒四舍五入到”secsmessage“\”“”\n\n\n要更改比例因子,请使用LISP下拉列表中的MAP SETTINGS CSF\+ROTATION。\n\n要更改其他设置,请键入SETDIM2。“”)(setq dimset T)(princ);(chgsize(*(/scalex 1000)1.95));defun setdim(defun c:setdim2()(initget(+1 2 4));(setq scalefactor(getreal“\N输入比例因子:”)(if(not setmap)(load“setmap”)(setq scalefactor#mapsc)(initget 1“Y Y N N”)(setq angflg(问题“是否要打印方位角?”)(if angflg(progn(setq-DIMROTATION 0 angMessage“WILL”)(initget 1“1 5”)(setq-secsMessage(getkword“\nRound off seconds to nearest”)(setq-secprec(atoi-secsMessage))(setq-angMessage“WILL”)(setq-angMessage“不会”)(警报(strcat“DIMLINE设置:\n\n缩放因子设置为:“(rtos缩放因子2 6)”\nzimuths“angMessage”打印)“\n秒四舍五入到”secsmessage“\”“”\n\n\n要更改比例因子,请使用LISP下拉列表中的MAP SETTINGS CSF\+ROTATION。“”)(setq dimset T);(chgsize(*(/scalex 1000)1.95))(defun c:dimline(/L A B ucsflg)(load“F1”)(cond((非dimset)(c:setdim))(if(/=(getvar“WORLDUCS”)1)(progn(命令“UCS”“W”)(setq ucsflg T));progn);if(setq L(getline))(dimfunc(getassoc 10 L)(getassoc 11 L)(placetxt(getassoc 10 L)(getassoc 11 L))(如果UCSflg(命令“UCS”“P”))(defun c:dimpts(/ENDPTS UCSflg)(load“F1”)(cond((非dimset)(c:setdim))(如果(/=(getvar“WORLDUCS”)1)(progn(命令“UCS”“W”)(setq UCSflg T));progn);if(dimfunc(car(setq ENDPTS(get\u ENDPTS)))(cadr ENDPTS)(placetxt(car ENDPTS)(cadr ENDPTS))(if UCSflg(命令“UCS”“P”))(defun dimfunc(a b below/angab distab ctrpt d)(setq angab(角度a b))(setq distab(距离a b))(setq ctrpt(polar a angab(/distab 2)))(setq d(/distab scalefactor))(cond(below(cond((和(>angab(+北0.1744))(angab(+北0.1744))(

BIGAL 发表于 2022-7-5 21:14:06

提交的代码中没有DISTBEAR,你要找的是C:DISTBEAR看看提交的代码a C:这意味着你可以在键盘上键入命令。

drafting1768 发表于 2022-7-5 21:22:19

谢谢你的帮助,比格尔。如果你不介意看一看的话,我还有一个?这是我更喜欢使用的Lisp程序而不是DISTBEAR(旧习惯难改)。我已经解决了它不能正常加载的问题,但现在它不能正常运行。也许自编写以来,某些内容已经发生了更改,并且不会以相同的方式执行?再次提前感谢!这个被称为DIMLINE,并且存在C:DIMLINE。
 
(defun get\u endpts(/a b)(命令“OSNAP”“ENDP”)(setq a(getpoint“\n输入第一点:”)(setq b(getpoint“\n输入第二点:”)(命令“OSNAP”“NONE”)(列表a b))(defun c:setdim();(initget(+1 2 4));(setq scalefactor(getreal“\n输入比例因子:”)(if(非setmap)(加载“setmap”))(setmap)(setq scalefactor#mapsc);(initget 1“Y Y N N”);(setq angflg(问题“是否要打印方位角?”)(setq angflg“Y”angmessage“WILL”);(cond(angflg;(if(not(setq dimrotation(getangle“\n输入角度旋转:)));(setq dimrotation#mapang);(setq DIMROTATION 0););(initget 1“1 5”);(setq secprec(atoi(getkword“\n四舍五入秒到最近”));)(setq dimrotation 0 secprec 5 secsmessage“5”)(警报(strcat”DIMLINE设置:\n\n比例因子设置为:“(rtos scalefactor 2 6)”\nzimuths“angmessage”打印“\n秒四舍五入到”secsmessage“\”“”\n\n\n要更改比例因子,请使用LISP下拉列表中的MAP SETTINGS CSF\+ROTATION。\n\n要更改其他设置,请键入SETDIM2。“”)(setq dimset T)(princ);(chgsize(*(/scalex 1000)1.95));defun setdim(defun c:setdim2()(initget(+1 2 4));(setq scalefactor(getreal“\N输入比例因子:”)(if(not setmap)(load“setmap”)(setq scalefactor#mapsc)(initget 1“Y Y N N”)(setq angflg(问题“是否要打印方位角?”)(if angflg(progn(setq DIMROTATION 0 angMessage“WILL”)(initget 1“1 5”)(setq secsMessage(getkword”\n四舍五入秒到最近”)(setq secprec(atoi secsMessage))(setq angMessage“不会”)(警报(strcat”DIMLINE设置:\n\n比例因子设置为:“(rtos scalefactor 2 6)”\nzimuths“angMessage”打印“\n秒四舍五入到”secsmessage“\”“”\n\n\n要更改比例因子,请使用LISP下拉列表中的MAP SETTINGS CSF\+ROTATION。“”)(setq dimset T);(chgsize(*(/scalex 1000)1.95))(defun c:dimline(/L A B ucsflg)(load“F1”)(cond((非dimset)(c:setdim))(if(/=(getvar“WORLDUCS”)1)(progn(命令“UCS”“W”)(setq ucsflg T));progn);if(setq L(getline))(dimfunc(getassoc 10 L)(getassoc 11 L)(placetxt(getassoc 10 L)(getassoc 11 L))(如果UCSflg(命令“UCS”“P”))(defun c:dimpts(/ENDPTS UCSflg)(load“F1”)(cond((非dimset)(c:setdim))(如果(/=(getvar“WORLDUCS”)1)(progn(命令“UCS”“W”)(setq UCSflg T));progn);if(dimfunc(car(setq ENDPTS(get\u ENDPTS)))(cadr ENDPTS)(placetxt(car ENDPTS)(cadr ENDPTS))(if UCSflg(命令“UCS”“P”))(defun dimfunc(a b below/angab distab ctrpt d)(setq angab(角度a b))(setq distab(距离a b))(setq ctrpt(polar a angab(/distab 2)))(setq d(/distab scalefactor))(cond(below(cond((和(>angab(+北0.1744))(angab(+北0.1744))(

BIGAL 发表于 2022-7-5 21:25:59

你需要把你的代码放在代码括号里,在开始时使用在结束时没有空格,管理员会支持你的。
 
Ok仍然缺少位(加载“F1”)。(加载“setmap”)(placetxt(getassoc 10 L)(getassoc 11 L))无placetext代码
 
也许在你的代码中修复这一行是Smiley,只要看看帖子,在你的代码中删除这一行,不知道这是否有什么不同。因为它确实使用了很多defuns,所以需要真正确定它在哪里停止,在哪一个里面停止。
 
我会手动完成每一步,看看DIMLINE并遵循这些步骤,如果你使用VLIDE,你可以很确定地一行一行地通过它,这样它就会停止,你可以看到在哪里。http://www.lee-mac.com对于vlide教程。
 
要真正让某个人调试它,请按照我第一次建议的那样,通过粘贴dimline、setdim、F1、getassoc中使用的所有defuns来创建一个新的lisp

drafting1768 发表于 2022-7-5 21:32:27

太好了,谢谢!这是我在第一份工作中继承的古老代码,我从来没有认真考虑过它,因为它在最新的升级之前工作得很好。看起来它需要一些认真的工作。谢谢你的帮助,非常感谢!

Cad64 发表于 2022-7-5 21:37:44

正如BIGAL所提到的,在发布代码时请使用代码标签。我已经编辑了你的帖子,包括标签。
 
代码发布准则:http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南

drafting1768 发表于 2022-7-5 21:47:56

谢谢,Cad64!下次会知道的!

SLW210 发表于 2022-7-5 21:55:24

欢迎来到CADTutor,drafting1768!
 
我把你的帖子移到了AutoLISP、Visual LISP和DCL论坛,请尝试在相关论坛发布你的问题,它为你提供了更快、更合适的回答。
页: [1]
查看完整版本: 新版本-问题执行