请检查我的代码以了解accur
大家好。我做了一个小程序来插入我们的尺寸标准。最近刚转到Autocad 2015,它的工作原理与以前的版本有点奇怪。当我打开一个图形时,我要做的第一件事就是运行这个代码,然后得到以下结果。
Command: INSERTDIM
Initializing...too many arguments
(defun c:Insertdim ( )
(if (not (tblsearch "STYLE" "STANDARD"))
(command "_.-style" "STANDARD" "SIMPLEX.SHX" 0 1.0 0 "_N" "_N" "_N")
)
(setvar "CMDECHO" 0)
(setvar "LUNITS" 4)
(setvar "DIMASSOC" 2)
(setvar "DIMBLK" "_ARCHTICK")
(setvar "DIMLDRBLK" ".")
(setvar "DIMSCALE" 48)
(setvar "DIMASZ" 0.09375)
(setvar "DIMEXE" 0.0625)
(setvar "DIMEXO" 0.0625)
(setvar "DIMDLE" 0)
(setvar "DIMDLI" 0.38)
(setvar "DIMTIH" 0)
(setvar "DIMTOH" 0)
(setvar "DIMTAD" 1)
(setvar "DIMZIN" 3)
(setvar "DIMTXT" 0.125)
(setvar "DIMALTF" 25.4)
(setvar "DIMGAP" 0.0625)
(setvar "DIMALTD" 2)
(setvar "DIMTOFL" 0)
(setvar "DIMUNIT" 4)
(setvar "DIMDEC" 4)
(setvar "DIMALTU" 2)
(setvar "DIMAUNIT" 0)
(setvar "DIMJUST" 0)
(setvar "DIMALTTZ" 0)
(setvar "DIMTXSTY" "STANDARD")
(command "_.-dimstyle" "_s" "STANDARD" "y")
(princ)
);end defun
如果我立即再次运行该程序,从我的判断,它运行得很好。有什么想法吗?
谢谢,伙计们。 提示:
(tblsearch "DIMSTYLE" "STANDARD") (tblsearch "DIMSTYLE" "STANDARD")
罗伊,
感谢您的回复,但标准不是图形中始终存在的默认dimstyle吗? 那要看情况而定。如果图纸是(或开始时是)公制,则答案是“否”。
在帝国绘画的BricsCAD中,我可以重命名“标准”dimstyle,但不能重命名“标准”文字样式。那么假设您的图形是英制的,为什么代码中有(tblsearch“STYLE”“STANDARD”)? 说得好,但模板是英制的。嗯。经过进一步的故障排除,我在其他7台计算机上测试了这个问题,对于出现这个错误“初始化…太多参数”来说,这是一个50%的错误。这确实很奇怪。不确定这里发生了什么。命令仍然有效,但有点担心这个错误仍然存在。不管怎样,继续下一个。谢谢你回复我的问题。 如果我看到初始化。。。参数太多了,我认为对话框或其他命令即将启动,或者acad中的另一个应用程序。lsp?可能是松开了_u。只是使用风格?先禁用对话框(initdia、filedia、cmddia、nomutt等)或尝试使用其他命令格式,如vl-cmdf/command-s?
gr.R。 是的,我尝试了你的建议,但仍然得到了同样的结果。
(defun c:Insertdim ( )
(vl-load-com)
; (if (not (tblsearch "STYLE" "STANDARD"))
(vl-cmdf "-style" "STANDARD" "SIMPLEX.SHX" 0 1.0 0 "N" "N" "N")
; )
(setvar "CMDECHO" 0)
(setvar "LUNITS" 4)
(setvar "DIMASSOC" 2)
(setvar "DIMBLK" "_ARCHTICK")
(setvar "DIMLDRBLK" ".")
(setvar "DIMSCALE" 48)
(setvar "DIMASZ" 0.09375)
(setvar "DIMEXE" 0.0625)
(setvar "DIMEXO" 0.0625)
(setvar "DIMDLE" 0)
(setvar "DIMDLI" 0.38)
(setvar "DIMTIH" 0)
(setvar "DIMTOH" 0)
(setvar "DIMTAD" 1)
(setvar "DIMZIN" 3)
(setvar "DIMTXT" 0.125)
(setvar "DIMALTF" 25.4)
(setvar "DIMGAP" 0.0625)
(setvar "DIMALTD" 2)
(setvar "DIMTOFL" 0)
(setvar "DIMUNIT" 4)
(setvar "DIMDEC" 4)
(setvar "DIMALTU" 2)
(setvar "DIMAUNIT" 0)
(setvar "DIMJUST" 0)
(setvar "DIMALTTZ" 0)
(setvar "DIMTXSTY" "STANDARD")
(vl-cmdf "-dimstyle" "s" "STANDARD" "y")
(princ)
)
非常奇怪。我尝试了所有的建议,但仍然得到了相同的结果。有没有其他方法可以编写代码来消除这个问题>? 在这里工作,我没有autocad 2015,所以我必须在家里测试这个。所有机器是否具有相同的autocad版本、相同的轮廓/acad lsp?是否是另一个在启动时加载的应用程序导致了这个问题?真的很奇怪。。。
如果您禁用了这两个命令功能,因此只有setvars在运行,您是否仍然存在相同的问题?只是为了确定没有一个变量被拒绝。
如果我重写代码,我可能会做一些类似(mapcar)(lamda(var val)(setvar val var))(list“dim…..”(列表0…)但这只是形式,不会影响你的日常生活。此外,您的代码在50%的机器上运行,因此您的代码不应该成为问题。但是当我回到家,我也会在那里尝试。
顺便说一句,我不确定你的最后一个命令行是否(总是)能正常工作。
这里是Tharwat帖子的链接:
http://www.cadtutor.net/forum/showthread.php?76226-通过lisp命令设置当前尺寸样式
gr.Rlx 好的,我手动运行了每一行,所有系统变量都正常。我将Dimstyle的设置替换为Tharwat;s代码。(感谢Tharwat)我仍然感到烦恼。
(defun c:Insertdim ( )
(vl-load-com)
; (if (not (tblsearch "STYLE" "STANDARD"))
(vl-cmdf "-style" "STANDARD" "SIMPLEX.SHX" 0 1.0 0 "N" "N" "N")
; )
(setvar "CMDECHO" 0)
(setvar "LUNITS" 4)
(setvar "DIMASSOC" 2)
(setvar "DIMBLK" "_ARCHTICK")
(setvar "DIMLDRBLK" ".")
(setvar "DIMSCALE" 48)
(setvar "DIMASZ" 0.09375)
(setvar "DIMEXE" 0.0625)
(setvar "DIMEXO" 0.0625)
(setvar "DIMDLE" 0)
(setvar "DIMDLI" 0.38)
(setvar "DIMTIH" 0)
(setvar "DIMTOH" 0)
(setvar "DIMTAD" 1)
(setvar "DIMZIN" 3)
(setvar "DIMTXT" 0.125)
(setvar "DIMALTF" 25.4)
(setvar "DIMGAP" 0.0625)
(setvar "DIMALTD" 2)
(setvar "DIMTOFL" 0)
(setvar "DIMUNIT" 4)
(setvar "DIMDEC" 4)
(setvar "DIMALTU" 2)
(setvar "DIMAUNIT" 0)
(setvar "DIMJUST" 0)
(setvar "DIMALTTZ" 0)
(setvar "DIMTXSTY" "STANDARD")
; (vl-cmdf "-dimstyle" "s" "STANDARD" "y")
(_SetDimStyleCurrent "Standard")
(princ)
;;By TharWalt
(defun _SetDimStyleCurrent (dim / acdoc)
(vl-load-com)
(setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(if (tblsearch "DIMSTYLE" dim)
(vla-put-activeDimstyle
acdoc
(vla-item (vla-get-Dimstyles acdoc) dim)
)
)
(princ)
);;
) 在我的2012机器上,一切正常,所以我仍然怀疑错误不在于你的程序,而是与其他机器有关。您的所有命令都有适当数量的参数,因此在启动时加载了其他一些参数,并且似乎在代码执行时还没有完成评估。从远处很难看出有什么问题。。。如果一台机器出现此问题,则可能是安装错误,但如果更多机器出现此问题,则一定是它们共享的问题。我记得有一个例行程序来比较两台计算机之间的所有设置变量,但我必须查找它。如果我找到它或认为我(或其他人)有更好的解决方案,我会尽快让你知道。。。
gr.R
找到要比较的变量:
https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/compare-autocad-variables-between-two-drawings/td-p/2139735
页:
[1]
2