系统变量/LISP到Repo
我试图找出是否存在一个系统变量,该变量将保存打开的平台(AutoCAD、Civil 3D等)上的信息。我知道如何找到软件的版本,我需要的是将其应用于LISP中的if/then类型例程,其中。。。。
如果用户正在运行AUTOCAD且版本>19.1,则执行此操作;或
如果用户正在运行CIVIL 3D,并且版本>19.1,则执行此操作。
背景知识,处理可信位置问题,在我所在的公司中,我有一个将配置应用于CAD安装的自动化过程。该过程的一部分涉及受信任的位置,其中,AutoCAD在Civil 3D中不需要相同的位置。我希望在LISP开始时进行条件代码检查,该检查将应用于AutoCAD或Civil 3D,取决于“系统变量检查”,这将使过程确认应用程序。
有人有什么想法吗?我肯定有什么东西在那里,只是还没有找到它,没有ACADVER,虽然有用,但只回复版本,而不是实际使用的平台/软件。
非常感谢任何帮助或见解。。。。。。 您是否考虑过只获取acad对象的名称?
(setq acadObjName (vla-get-name (vlax-get-acad-object)))
对于reg autocad,它应该是“autocad”,对于civil 3d,它应该是“autocad civil 3d(年份)”
至少对我来说是这样。 谢谢你的回复,我会检查一下,看看这是否符合我的要求。我测试完后会回复。 此外,您可以随时关闭受信任的位置。。。也许在所有情况下都不可取,但有另一种选择。 没错,这是我们IT部门不想做的事情,但是的,这是一种选择。
基本上,我得到了一个调色板按钮(实际上有几个),作为配置过程的一部分,自动配置用户的软件。我希望创建一个条件函数,如果用户运行AutoCAD,则执行1,2,3,如果用户运行Civil 3D,则执行4,5,6。AutoCAD似乎不需要用户的应用程序数据等任何可信位置(或在后台处理),而Civil 3D确实需要多条路径,准确地说是3条,指向用户的唯一配置文件路径等。如果我可以找到列出软件/平台的变量,那么我可以将其作为条件要求来执行。 这可能是你想要的,我作为一个单独的函数运行,在主程序之前加载它。这是为了打开Civ3D界面
;vercheck.lspversion check for *aecc objects
(defun ah:vercheck ( / vrsn appstr)
(vl-load-com)
(if ((lambda (vrsn)
(cond
((vl-string-search "R17.2" vrsn) (setq appstr "6.0")) ;09
((vl-string-search "R18.0" vrsn) (setq appstr "7.0")) ;10
((vl-string-search "R18.1" vrsn) (setq appstr "8.0")) ;11
((vl-string-search "R18.2" vrsn) (setq appstr "9.0")) ;12 ?
((vl-string-search "R19.0" vrsn) (setq appstr "10.0")) ;13
((vl-string-search "R19.1" vrsn)(setq appstr "11.0"));;2014
((vl-string-search "R20.0" vrsn)(setq appstr "12.0"));;2015
((alert "This version of C3D not supported!"))
)
)
(vlax-product-key)
) ; end if condition progn is true
(progn
(cond (*AeccDoc*)
((setq *AeccDoc*
(vlax-get
(cond (*AeccApp*)
((setq *AeccApp*
(vla-getinterfaceobject
(cond (*Acad*)
((setq *Acad* (vlax-get-acad-object)))
)
(strcat "AeccXUiLand.AeccApplication." appstr)
)
)
)
)
'ActiveDocument
)
)
)
) ; end main cond
) ; end progn
) ; end if vsrn
)
页:
[1]