乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 79|回复: 15

[编程交流] LISP for:如果图层冻结

[复制链接]

4

主题

16

帖子

12

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:05:23 | 显示全部楼层 |阅读模式
您好,我找到并修改了一个lisp例程,我想知道它是否在正确的轨道上。还要提到的是,我并不真正理解它的所有机制,但首先,我想实现以下目标:
 
-我有一层名为“Arch-Niveau 1”
-我想进入命令提示符“a11”
-它会读到如果层被冻结或解冻,如果它被冻结,它会解冻它(?对不起,糟糕的英语),如果层被解冻,它会冻结它
 
就是这样!
 
可以添加的是:
要检查层是否存在,如果不存在,请创建它。
将对另外两个名为“Arch-Niveau 2”命令“a22”和“Arch-Niveau 3”命令“a33”的层执行相同的操作。清楚了吗?
 
现在,我找到并修改的lisp是:
 
  1. (defun c:a11 (/ lay ldef flag)
  2. (setq layn "Arch - Niveau 1")
  3. (command "_.LAYER")
  4. (if (not (tblsearch "LAYER" layn))
  5.      (command "_Make" layn)
  6.      (progn
  7.        (setq ldef (tblsearch "LAYER" layn)
  8.              flag (cdr (assoc 70 ldef)))
  9.        (and (= (logand flag  1)  1)
  10.             (command "_Thaw" layn))
  11.        ))
  12. (command "")
  13. )

 
该lisp会查看它是否存在,如果不存在,则创建它并仅解冻该层。
 
我不确定我是否想理解所有的机制,因为我对“not”、“progn”、“flag”、“and”和“logand”(!!!!)
 
你能帮我完成Lisp程序吗?
谢谢!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:11:04 | 显示全部楼层
嗨,Troispistols,欢迎来到CADTutor
 
对于您的任务,我会将创建、冻结或解冻层的操作委托给子功能,并将层名称传递给子功能,例如:
 
  1. (defun c:a11 nil (FreezeThawLayer "Arch - Niveau 1"))
  2. (defun c:a22 nil (FreezeThawLayer "Arch - Niveau 2"))
  3. (defun c:a33 nil (FreezeThawLayer "Arch - Niveau 3"))
  4. (defun FreezeThawLayer ( layer / dx en )
  5.    (if (null (setq en (tblobjname "LAYER" layer)))
  6.        (entmake
  7.            (list
  8.               '(0 . "LAYER")
  9.               '(100 . "AcDbSymbolTableRecord")
  10.               '(100 . "AcDbLayerTableRecord")
  11.                (cons 2 layer)
  12.               '(70 . 0)
  13.            )
  14.        )
  15.        (setq en (entget en)
  16.              dx (assoc 70 en)
  17.              en (entmod (subst (cons 70 (boole 6 1 (cdr dx))) dx en))
  18.        )
  19.    )
  20.    (princ)
  21. )
回复

使用道具 举报

4

主题

16

帖子

12

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:14:13 | 显示全部楼层
哇!我很高兴你的回答非常迅速有效!谢谢你抽出时间,我很高兴!
 
在一个有两个矩形的新图形中,它工作得很好,但在我现有的图形中,有时工作有时不工作。
 
现在我关闭Acad并重新打开我的绘图,重新加载lisp,当我点击“a1”时什么也没有发生(是的,我将其更改为“a1”而不是“a11”)
 
  1. (defun c:a1 nil (FreezeThawLayer "Arch - Niveau 1"))
  2. (defun c:a2 nil (FreezeThawLayer "Arch - Niveau 2"))
  3. (defun c:a3 nil (FreezeThawLayer "Arch - Niveau 3"))
  4. (defun FreezeThawLayer ( layer / dx en )
  5.    (if (null (setq en (tblobjname "LAYER" layer)))
  6.        (entmake
  7.            (list
  8.               '(0 . "LAYER")
  9.               '(100 . "AcDbSymbolTableRecord")
  10.               '(100 . "AcDbLayerTableRecord")
  11.                (cons 2 layer)
  12.               '(70 . 0)
  13.            )
  14.        )
  15.        (setq en (entget en)
  16.              dx (assoc 70 en)
  17.              en (entmod (subst (cons 70 (boole 6 1 (cdr dx))) dx en))
  18.        )
  19.    )
  20.    (princ)
  21. )

 
 
 
谢谢,我希望你能帮我
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:17:29 | 显示全部楼层
不客气
 
有关我在代码中使用的技术的信息,请参阅以下链接:
 
图层DXF参考
 
布尔异或技术
 
使用Entmake(x)创建层
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:22:27 | 显示全部楼层
Troispistols,请阅读代码发布指南并编辑您的帖子以格式化代码。
回复

使用道具 举报

4

主题

16

帖子

12

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:28:58 | 显示全部楼层
我编辑了最后一个答案,希望能再次得到帮助,谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:33:00 | 显示全部楼层
 
该程序每次对我来说都能工作,它是一个简单的代码,所以我不知道是什么导致它失败的-层是否正在冻结/解冻,但对象可能没有更新?
 
也许这会解决这个问题:
 
  1. (defun c:a1 nil (FreezeThawLayer "Arch - Niveau 1"))
  2. (defun c:a2 nil (FreezeThawLayer "Arch - Niveau 2"))
  3. (defun c:a3 nil (FreezeThawLayer "Arch - Niveau 3"))
  4. (defun FreezeThawLayer ( layer / dx en in ss )
  5.    (if (null (setq en (tblobjname "LAYER" layer)))
  6.        (entmake
  7.            (list
  8.               '(0 . "LAYER")
  9.               '(100 . "AcDbSymbolTableRecord")
  10.               '(100 . "AcDbLayerTableRecord")
  11.                (cons 2 layer)
  12.               '(70 . 0)
  13.            )
  14.        )
  15.        (if
  16.            (and
  17.                (setq en (entget en)
  18.                      dx (assoc 70 en)
  19.                      en (entmod (subst (cons 70 (boole 6 1 (cdr dx))) dx en))
  20.                )
  21.                (setq ss (ssget "_X" (list (cons 8 layer))))
  22.            )
  23.            (repeat (setq in (sslength ss))
  24.                (entupd (ssname ss (setq in (1- in))))
  25.            )
  26.        )
  27.    )
  28.    (princ)
  29. )
回复

使用道具 举报

4

主题

16

帖子

12

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:36:59 | 显示全部楼层
好的,谢谢。它似乎已经解决了问题。这是一个“建筑平面图”的一个区块,其中三层中的每一层都有许多层(一个区块对应一层),如果它能帮助你理解发生了什么的话。
 
谢谢,看起来很好!
 
给人印象深刻的
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:38:17 | 显示全部楼层
太好了,很高兴我的代码现在能为你工作
回复

使用道具 举报

4

主题

16

帖子

12

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-6 08:41:45 | 显示全部楼层

 
现在,我第一次无法通过单击工具栏上的按钮打开图层管理器(设置为旧图层管理器变量),该按钮显示:

                               
登录/注册后可看大图

  1. See the end of this message for details on invoking
  2. just-in-time (JIT) debugging instead of this dialog box.
  3. ************** Exception Text **************
  4. Autodesk.AutoCAD.Runtime.Exception: eInvalidInput
  5.   at Autodesk.AutoCAD.DatabaseServices.Database.set_Clayer(ObjectId id)
  6.   at Autodesk.AutoCAD.LayerManager.LayerViewManager.set_CurrentLayer(LayerRecord value)
  7.   at Autodesk.AutoCAD.LayerManager.LayerViewManager.UpdateCurrentLayerAndView()
  8.   at Autodesk.AutoCAD.LayerManager.LayerManagerControl.LoadConfiguration(Boolean bCheckExcessFilters)
  9.   at Autodesk.AutoCAD.LayerManager.LayerManagerControl.InitializeLayerManager(Boolean bCheckExcessFilters)
  10.   at Autodesk.AutoCAD.LayerManager.LayerManagerControl.Initialize(Boolean bCheckExcessFilters)
  11.   at Autodesk.AutoCAD.LayerManager.MainForm.Initialize()
  12.   at Autodesk.AutoCAD.LayerManager.MainForm.RunForm(IntPtr owner, LayerFilter filter)
  13.   at Autodesk.AutoCAD.LayerManager.Commands.Layer()
  14.   at Autodesk.AutoCAD.LayerManager.Commands.RunLayer()
  15.   at Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorker(MethodInfo mi, Object commandObject, Boolean bLispFunction)
  16.   at Autodesk.AutoCAD.Runtime.CommandClass.InvokeWorkerWithExceptionFilter(MethodInfo mi, Object commandObject, Boolean bLispFunction)
  17.   at Autodesk.AutoCAD.Runtime.PerDocumentCommandClass.Invoke(MethodInfo mi, Boolean bLispFunction)
  18.   at Autodesk.AutoCAD.Runtime.CommandClass.CommandThunk.Invoke()
  19. ************** Loaded Assemblies **************
  20. mscorlib
  21.    Assembly Version: 4.0.0.0
  22.    Win32 Version: 4.0.30319.225 (RTMGDR.030319-2200)
  23.    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
  24. ----------------------------------------
  25. AdApplicationFrame
  26.    Assembly Version: 0.0.0.0
  27.    Win32 Version: 3.2.23.0
  28.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/AdApplicationFrame.DLL
  29. ----------------------------------------
  30. Acdbmgd
  31.    Assembly Version: 18.2.0.0
  32.    Win32 Version: 18.2.51.0.0
  33.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/AcdbMgd.DLL
  34. ----------------------------------------
  35. System
  36.    Assembly Version: 4.0.0.0
  37.    Win32 Version: 4.0.30319.1 built by: RTMRel
  38.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
  39. ----------------------------------------
  40. msvcm90
  41.    Assembly Version: 9.0.30729.4940
  42.    Win32 Version: 9.00.30729.4940
  43.    CodeBase: file:///C:/Windows/WinSxS/amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4940_none_08e4299fa83d7e3c/msvcm90.dll
  44. ----------------------------------------
  45. AdWindows
  46.    Assembly Version: 3.2.25.0
  47.    Win32 Version: 3.2.25.0
  48.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/AdWindows.DLL
  49. ----------------------------------------
  50. PresentationFramework
  51.    Assembly Version: 4.0.0.0
  52.    Win32 Version: 4.0.30319.1
  53.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework/v4.0_4.0.0.0__31bf3856ad364e35/PresentationFramework.dll
  54. ----------------------------------------
  55. WindowsBase
  56.    Assembly Version: 4.0.0.0
  57.    Win32 Version: 4.0.30319.1 built by: RTMRel
  58.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/WindowsBase/v4.0_4.0.0.0__31bf3856ad364e35/WindowsBase.dll
  59. ----------------------------------------
  60. PresentationCore
  61.    Assembly Version: 4.0.0.0
  62.    Win32 Version: 4.0.30319.1 built by: RTMRel
  63.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/PresentationCore/v4.0_4.0.0.0__31bf3856ad364e35/PresentationCore.dll
  64. ----------------------------------------
  65. System.Xaml
  66.    Assembly Version: 4.0.0.0
  67.    Win32 Version: 4.0.30319.1 built by: RTMRel
  68.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xaml/v4.0_4.0.0.0__b77a5c561934e089/System.Xaml.dll
  69. ----------------------------------------
  70. System.Core
  71.    Assembly Version: 4.0.0.0
  72.    Win32 Version: 4.0.30319.1 built by: RTMRel
  73.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
  74. ----------------------------------------
  75. System.Xml
  76.    Assembly Version: 4.0.0.0
  77.    Win32 Version: 4.0.30319.1 built by: RTMRel
  78.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
  79. ----------------------------------------
  80. PresentationFramework.Aero
  81.    Assembly Version: 4.0.0.0
  82.    Win32 Version: 4.0.30319.1 built by: RTMRel
  83.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/PresentationFramework.Aero/v4.0_4.0.0.0__31bf3856ad364e35/PresentationFramework.Aero.dll
  84. ----------------------------------------
  85. System.Drawing
  86.    Assembly Version: 4.0.0.0
  87.    Win32 Version: 4.0.30319.1 built by: RTMRel
  88.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
  89. ----------------------------------------
  90. Acmgd
  91.    Assembly Version: 18.2.0.0
  92.    Win32 Version: 18.2.107.0.0
  93.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/Acmgd.DLL
  94. ----------------------------------------
  95. System.Configuration
  96.    Assembly Version: 4.0.0.0
  97.    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
  98.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
  99. ----------------------------------------
  100. AcWindows
  101.    Assembly Version: 18.2.0.0
  102.    Win32 Version: 18.2.107.0.0
  103.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/AcWindows.DLL
  104. ----------------------------------------
  105. AcCui
  106.    Assembly Version: 18.2.0.0
  107.    Win32 Version: 18.2.51.0.0
  108.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/AcCui.DLL
  109. ----------------------------------------
  110. WindowsFormsIntegration
  111.    Assembly Version: 4.0.0.0
  112.    Win32 Version: 4.0.30319.1 built by: RTMRel
  113.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/WindowsFormsIntegration/v4.0_4.0.0.0__31bf3856ad364e35/WindowsFormsIntegration.dll
  114. ----------------------------------------
  115. AcWindows.resources
  116.    Assembly Version: 18.2.0.0
  117.    Win32 Version: 18.2.51.0.0
  118.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/en-US/AcWindows.resources.DLL
  119. ----------------------------------------
  120. ManagedMC3
  121.    Assembly Version: 5.8.0.0
  122.    Win32 Version: 5.8.0.0
  123.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/ManagedMC3.DLL
  124. ----------------------------------------
  125. AcLayer
  126.    Assembly Version: 18.2.0.0
  127.    Win32 Version: 18.2.51.0.0
  128.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/AcLayer.DLL
  129. ----------------------------------------
  130. System.Windows.Forms
  131.    Assembly Version: 4.0.0.0
  132.    Win32 Version: 4.0.30319.1 built by: RTMRel
  133.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
  134. ----------------------------------------
  135. AcLayer.resources
  136.    Assembly Version: 18.2.0.0
  137.    Win32 Version: 18.2.51.0.0
  138.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/en-US/AcLayer.resources.DLL
  139. ----------------------------------------
  140. AcButterflyExt
  141.    Assembly Version: 1.0.0.23
  142.    Win32 Version: 1.0.0.23
  143.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/AcButterflyExt.DLL
  144. ----------------------------------------
  145. AcButterflyExt.resources
  146.    Assembly Version: 1.0.0.23
  147.    Win32 Version: 1.0.0.23
  148.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/en-US/AcButterflyExt.resources.DLL
  149. ----------------------------------------
  150. mscorlib.resources
  151.    Assembly Version: 4.0.0.0
  152.    Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
  153.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_fr_b77a5c561934e089/mscorlib.resources.dll
  154. ----------------------------------------
  155. System.resources
  156.    Assembly Version: 4.0.0.0
  157.    Win32 Version: 4.0.30319.1 built by: RTMRel
  158.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.resources/v4.0_4.0.0.0_fr_b77a5c561934e089/System.resources.dll
  159. ----------------------------------------
  160. UIAutomationProvider
  161.    Assembly Version: 4.0.0.0
  162.    Win32 Version: 4.0.30319.1 built by: RTMRel
  163.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/UIAutomationProvider/v4.0_4.0.0.0__31bf3856ad364e35/UIAutomationProvider.dll
  164. ----------------------------------------
  165. Accessibility
  166.    Assembly Version: 4.0.0.0
  167.    Win32 Version: 4.0.30319.1 built by: RTMRel
  168.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
  169. ----------------------------------------
  170. UIAutomationTypes
  171.    Assembly Version: 4.0.0.0
  172.    Win32 Version: 4.0.30319.1 built by: RTMRel
  173.    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/UIAutomationTypes/v4.0_4.0.0.0__31bf3856ad364e35/UIAutomationTypes.dll
  174. ----------------------------------------
  175. AcDialogToolTips
  176.    Assembly Version: 18.2.0.0
  177.    Win32 Version: 18.2.51.0.0
  178.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/AcDialogToolTips.DLL
  179. ----------------------------------------
  180. AcDialogToolTips.resources
  181.    Assembly Version: 18.2.0.0
  182.    Win32 Version: 18.2.51.0.0
  183.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/en-US/AcDialogToolTips.resources.DLL
  184. ----------------------------------------
  185. AcLayerTools
  186.    Assembly Version: 18.2.0.0
  187.    Win32 Version: 18.2.51.0.0
  188.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/AcLayerTools.DLL
  189. ----------------------------------------
  190. AcLayerTools.resources
  191.    Assembly Version: 18.2.0.0
  192.    Win32 Version: 18.2.51.0.0
  193.    CodeBase: file:///C:/Program%20Files/Autodesk/AutoCAD%202012%20-%20English/en-US/AcLayerTools.resources.DLL
  194. ----------------------------------------
  195. ************** JIT Debugging **************
  196. To enable just-in-time (JIT) debugging, the .config file for this
  197. application or computer (machine.config) must have the
  198. jitDebugging value set in the system.windows.forms section.
  199. The application must also be compiled with debugging
  200. enabled.
  201. For example:
  202. <configuration>
  203.    <system.windows.forms jitDebugging="true" />
  204. </configuration>
  205. When JIT debugging is enabled, any unhandled exception
  206. will be sent to the JIT de****** registered on the computer
  207. rather than be handled by this dialog box.

 
你知道是什么原因造成的吗?怎么才能把它弄回来?
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 22:00 , Processed in 0.400344 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表