启动Autoc时打开帮助
大家好,每次我启动Autocad时,都会在IE中打开联机Autocad帮助窗口。这很烦人。
我确保在选项/系统/“使用Autodesk网站的联机帮助(如果可用)”下取消选中该框
我正在使用一些自定义工具栏和Lisp。我认为在设置自定义项之前,它不会以这种方式运行,因此我认为这些LISP中的某些内容导致了这种行为。
我的问题是,除了一次禁用一个Lisp程序以查看行为是否发生变化外,什么是追踪原因的最佳方法?这将非常耗时。
还是我走错了路? 不,我认为你在正确的轨道上,我们在升级到AC MEP 2011时经历了同样的事情。如果我没记错的话,那就是Autocad移植工具出了问题。我们升级了5台计算机,2台出现了相同的问题(不同的机器),办公室中所有机器的设置/安装都是相同的。我的修复我试着重新安装它确实修复了一个。另一台计算机必须先卸载,然后重新安装。 在任何办公室,在卸载/重新安装之前尝试修复都应该是S.O.P。 是否有可能将/b启动开关添加到AutoCAD快捷方式中,并且帮助文件本身被专门引用?
我刚刚检查了快捷方式属性,但除了“C:\Program Files\Autodesk\AutoCAD 2011\acad.exe”之外,没有其他开关 当我在启动时运行的某个例程中出错时,AutoCAD将打开帮助。然后我花了大约半个小时的时间试图找出它是哪一个(如果我一次只修改一个程序,通常会更快)。我修复了编程中的错误,AutoCAD停止打开帮助。 我把我的问题缩小到我的层lisp的一部分,我从这里或可能在web上找到的示例中拼凑而成。很抱歉,我不记得原始源代码属于谁。
无论如何,此代码中由星号包围的部分导致Autocad Help弹出。有人能看到是什么导致了这个“错误”吗?
;; First get the active layer
(setq activelayer (getvar "CLAYER"))
;; Make layer 0 active
(setvar "CLAYER" "0")
(defun c:layupd (/ oldcmd laylist)
(setq oldcmd (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(setq laylist '(("BALLOON" "15" "CONTINUOUS")
("BORDER" "33" "CONTINUOUS")
("BOTTOM" "31" "CONTINUOUS")
("CENTER" "35" "CENTER" "")
("CONSTRUCTION" "5" "PHANTOM")
("DIMENSION" "40" "CONTINUOUS")
("FRONT" "83" "CONTINUOUS")
("GHOST" "12" "CONTINUOUS")
("HATCH" "123" "CONTINUOUS")
("HIDDEN" "252" "HIDDEN2")
("PART" "7" "CONTINUOUS")
("REV" "1" "CONTINUOUS")
("SECTION" "5" "PHANTOM2")
("SIDE" "30" "CONTINUOUS")
("NOTES" "40" "CONTINUOUS")
("TOP" "6" "CONTINUOUS")
))
;; Load line types
(command ".linetype""load""hidden" (strcat"acad.lin")"""")
(command ".linetype""load""hidden2" (strcat"acad.lin")"""")
(command ".linetype""load""hiddenx2" (strcat"acad.lin")"""")
(command ".linetype""load""center" (strcat"acad.lin")"""")
(command ".linetype""load""center2" (strcat"acad.lin")"""")
(command ".linetype""load""centerx2" (strcat"acad.lin")"""")
(command ".linetype""load""phantom" (strcat"acad.lin")"""")
(command ".linetype""load""phantom2" (strcat"acad.lin")"""")
(command ".linetype""load""phantomx2" (strcat"acad.lin")"""")
;;****************problem section************************
(foreach lay laylist
(if (not (tblsearch "LAYER" (car lay)))
(command "-layer" "m" (car lay) "C" (cadr lay) (car lay) "")
(command "-layer" "C" (cadr lay) (car lay) ""))
(if (tblsearch "LTYPE" (caddr lay))
(command "-layer" "L" (caddr lay) (car lay) "")
(princ (strcat "\n" (caddr lay) " Linetype could not be found!"))
)
)
;;*************end problem section************************
(setvar "CMDECHO" oldcmd)
(princ))
(c:layupd)
;;Restore the original active layer
(setvar "CLAYER" activelayer)
在模板图形(DWT)中设置图层、线型等不是更简单吗?
作为一种选择,您也可以使用Excel文件来管理图层列表,例如:
我的公司有多个学科,每个学科都有自己的做事方式。因此,我们开发了“图纸构建”软件,其中一个步骤是让用户从保存该学科图层方案的下拉列表(excel文件)中选择文件名。。。随后输入到激活图形中。
当需要更改时,我们会请求新图层或报告打字错误等,并在excel文件中进行更改。
希望这有帮助! 伦德曼,
我感谢你的意见。我不是一个大Lisp程序或VBA的家伙;如果我发现一个例程具有我喜欢的函数,我会将其添加到我的lisp集合中。
尽管如此,我仍然希望通过lisp加载我的层。如果我想处理不包含特定图层的图形,它们仍然会被加载。 我建议修改你的层命令,使它更有效一点。我无法判断代码中的错误是什么,因为它似乎已正确关闭。
以下是我们使用的内容:
;;2010.11.04Layer Setup by Christopher T. Cowgill ;;
;;Truecolor function by Fred Tomke (www.theswamp.org) ;;
;;Coding assistance provided by Opie, RobertB, and irneb (www.augi.com), ronjonp ;;
;;Original code simplification by alanjt (www.augi.com, www.theswamp.org) ;;
;;****************************************************************************************************************************************
(defun truecolor (uColor / oColor)
(setq oColor (vla-getinterfaceobject acadObject "AutoCAD.AcCmColor.18"))
(cond
((= (type uColor) 'INT)
(vla-put-ColorMethod oColor acColorMethodByACI)
(vla-put-ColorIndex oColor uColor)
)
((not (listp uColor)) nil)
((= (length uColor) 3)
(vla-put-ColorMethod oColor acColorMethodByRGB)
(vla-SetRGB oColor (car uColor) (cadr uColor) (last uColor))
)
((= (length uColor) 2)
(vla-SetColorBookColor oColor (car uColor) (cadr uColor))
)
) ; cond
ocolor
) ; truecolor
;;****************************************************************************************************************************************
(defun alllayerset (lst / listlayer name match)
(command "linetype" "_load" "*" "acad" "")
(command "-layer" "SET" "0" "")
(setq listlayer (vla-get-layers acaddocument))
(foreach y lst
(if (wcmatch (car y) "*`**")
()
(if (tblsearch "LAYER" (car y))
()
(vla-add listlayer (car y))
) ;_ end of if
) ;_ end of if
) ;_ end of foreach
(vlax-for x listlayer
(or (vl-position (setq name (strcase (vla-get-name x))) '("0" "DEFPOINTS"))
(if (setq match (vl-remove-if-not
(function (lambda (x) (wcmatch name (strcase (car x)))))
lst
) ;_ end of vl-remove-if-not
) ;_ end of setq
(mapcar (function
(lambda (p v)
(if v
(vl-catch-all-apply
(function vlax-put-property)
(list x p v)
) ;_ end of vl-catch-all-apply
) ;_ end of if
) ;_ end of lambda
) ;_ end of function
'(Freeze Color LineType Plottable Description Truecolor)
(cdar match)
) ;_ end of mapcar
) ;_ end of if
) ;_ end of or
) ;_ end of vlax-for
(setq name nil)
(vla-regen acadDocument acAllViewports)
) ;_ end of defun
我只需要向程序提供一个层及其属性的列表,它就可以处理其余的所有内容。
页:
[1]
2