dbroada 发表于 2022-7-6 06:44:17

阿卡多克规则。lsp

加载acaddoc的规则是什么。lsp?如果搜索路径中有多个实例,那么是只加载第一个实例,还是依次加载所有实例?
 
我问,因为我想NETLOAD的vb。启动时所有机器上的net例程。我们有几个常见的文件夹应该在everybodies搜索路径中,我宁愿把我的netload放在那里,也不必去每台机器。
 
是阿卡多克。lsp是最好的地方吗?

Lee Mac 发表于 2022-7-6 06:50:40

 
打开图形时,AutoCAD将首先搜索工作目录(即活动图形所在的目录),然后搜索ACADDOC的所有支持文件搜索路径。lsp文件,并将加载第一个(且仅第一个)ACADDOC。找到lsp文件。
 
这种行为非常有助于利用,因为您可以有多个ACADDOC。lsp文件具有为特定项目量身定制的定制,并具有每个ACADDOC。lsp位于相关项目图形文件夹中。然后,当打开项目的图形时,AutoCAD将仅加载ACADDOC。lsp文件位于相关项目文件夹中,因为它成为工作目录,并且只有一个ACADDOC。打开图形时加载lsp。

Tiger 发表于 2022-7-6 06:52:19

 
我是否正确理解了您必须首先在该项目文件中打开一个图形才能定义工作目录,然后您打开的下一个图形将具有正确的acaddoc。lsp文件加载了吗?

caddcop 发表于 2022-7-6 06:55:13

有没有人举过任何例子来说明他们是如何在各种项目中利用这一点的?任何Civil 3D特定提示都将不胜感激。CADD经理似乎缺乏使这些产品的某些方面在真实情况下工作所需的信息。

Lee Mac 发表于 2022-7-6 06:58:35

 
你是正确的,但是要澄清的是,你不需要“定义”一个工作目录;每当在AutoCAD中打开图形时,该图形所在的目录将自动成为工作目录,AutoCAD将在SFSP之前的工作目录中搜索ACADDOC。要加载的lsp。

Tiger 发表于 2022-7-6 07:02:10

 
明白了,谢谢!

dbroada 发表于 2022-7-6 07:05:42

谢谢李。我不认为我们中的任何人有阿卡多克。我们自己的lsp。至少有一个(findfile)没有为我透露一个,其他人也不太可能创建自己的。
 
不过还有一个补充问题。我设置了一个小程序,针对两次登录设置一个警报框。我有一次收到了警报框,而我的豚鼠每次打开一幅画时都会收到。这是一个设置还是因为她处于MDI模式(或其他)?

Lee Mac 发表于 2022-7-6 07:07:56

 
不客气!
 
 
没问题;请注意,(findfile)与AutoCAD一样,只会搜索工作目录和SFSP,如果您有ACADDOC,也是如此。其他目录中的lsp文件,这些文件将不会被(findfile)找到,但可以作为&当这些目录成为工作目录时加载。
 
 
如果阿卡多克。可以为每个打开的图形找到lsp(即,它位于公共支持路径中,而不是仅用于其中一个图形的工作目录),每次打开图形时,您都应该收到警报框。
 
存在ACADLSPASDOC系统变量,但此设置控制ACAD是否。lsp文件与每个图形一起加载或仅在应用程序启动时加载,与ACADDOC无关。lsp文件。

BlackBox 发表于 2022-7-6 07:12:34

 
按相反顺序。。。对于Civil 3D,您试图克服哪些问题或障碍?我每天使用Civil 3D进行工作。
 
关于项目特定用途的问题,直接导致:
 
 
... 我(多年来)坚持我们的CAD用户不使用Acad[.lsp[.fas[.vlx]]或AcadDoc[.lsp[.fas[.vlx]]]进行个人或项目定制,而使用另一种机制,我稍后将与大家分享。我这样做的原因很简单。。。正是这种内置行为(在用户定义的SFSP之前从DwgPrefix加载)允许恶意代码利用此漏洞,并可能感染用户的计算机和网络。
 
我们的Acad。lsp和阿卡多克。lsp文件位于每个配置文件的SFSP内的网络上,我们不允许在公共位置编译代码,以避免意外的恶意行为。幸运的是,我们有足够的硬件规格,即使编译的LISP代码也几乎没有性能增益(如果有的话)。
 
为了加载特定于用户的代码,此代码段包含在AcadDoc中。lsp:
 

((lambda (user / file)
(if (setq file (findfile (strcat user ".lsp")))
    (load file)
)
)
(getvar 'loginname)
)

 
 
实际上,一个简单的适应将加载特定于项目的代码:
 

((lambda (projectCode / file)
(if (setq file (findfile projectCode))
    (load file)
)
)
"project.lsp" ;; <-- any name of your choosing, NOT Acad.lsp, or AcadDoc.lsp
)

 
... 以及位于此处的LISP文件:
 

C:\foo\

 
... 这:
 

C:\foo\someFolder\someOtherFolder\foo.lsp

BlackBox 发表于 2022-7-6 07:13:15

 
当然,您提供的是相对路径,而不仅仅是文件名。
 
如果调用:

Command: sfsp+

SFSP+
"C:\foo\" has been added to SFSP.

Command:
Command: (findfile "someFolder\\someOtherFolder\\foo.lsp")
"C:\\foo\\someFolder\\someOtherFolder\\foo.lsp"

 
只搜索工作目录和SFSP。
页: [1] 2
查看完整版本: 阿卡多克规则。lsp