明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: chq168168

[提问] 论坛有没有能提取CAD文件的所有图层信息的lisp?

[复制链接]
发表于 2023-9-13 17:18:37 | 显示全部楼层
chq168168 发表于 2023-9-13 16:30
标注样式是否可以提取出来更改成lisp文件?

手头没有  自己重新写吧
 楼主| 发表于 2023-9-15 08:50:57 | 显示全部楼层
本帖最后由 chq168168 于 2023-9-18 14:28 编辑

大神为什么生成的下边这段程序转成VLX运行不了呢?是不是代码有个#ID跟#DEBUG变量,这俩变量没定义的原因。
  1. (DEFUN C:TC1( / LST N1 N2 N3 N4 LST1 ERR)
  2. (SETQ LST (LIST   
  3. (LIST '(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")'(2 . "0")'(70 . 0)'(62 . 7)'(6 . "Continuous")'(290 . 1)'(370 . -3))
  4. (LIST '(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")'(2 . "00-标注")'(70 . 0)'(62 . 7)'(6 . "Continuous")'(290 . 1)'(370 . -3))
  5. (LIST '(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")'(2 . "00-新增")'(70 . 0)'(62 . 1)'(6 . "Continuous")'(290 . 1)'(370 . -3))
  6. (LIST '(0 . "LAYER")'(100 . "AcDbSymbolTableRecord")'(100 . "AcDbLayerTableRecord")'(2 . "01-加工")'(70 . 0)'(62 . 7)'(6 . "Continuous")'(290 . 1)'(370 . -3))
  7. ) )(setq n1 0 n2 0 N3 0 n4 0)(FOREACH LST1 LST
  8. (#DEBUG (#ID 2 58 30) (OR (#DEBUG (#ID 2 58 34) (TBLSEARCH "LTYPE" (#DEBUG (#ID 2 58 53) (CDR (#DEBUG (#ID 2 58 57) (ASSOC 6 LST1)))))) (#DEBUG (#ID 2 59 5) (VL-CATCH-ALL-APPLY (QUOTE vla-Load) (#DEBUG (#ID 2 61 7) (LIST (#DEBUG (#ID 2 61 13) (vla-get-Linetypes (#DEBUG (#ID 2 62 15) (vla-get-ActiveDocument (#DEBUG (#ID 2 62 39) (vlax-get-acad-object)))))) (#DEBUG (#ID 2 64 13) (CDR (#DEBUG (#ID 2 64 17) (ASSOC 6 LST1)))) (#DEBUG (#ID 2 65 13) (FINDFILE "acad.lin"))))))))
  9. (#DEBUG (#ID 2 75 8) (IF (#DEBUG (#ID 2 75 12) (NOT (#DEBUG (#ID 2 75 17) (TBLSEARCH "LAYER" (#DEBUG (#ID 2 75 36) (CDR (#DEBUG (#ID 2 75 41) (ASSOC 2 LST1)))))))) (#DEBUG (#ID 2 76 10) (PROGN (#DEBUG (#ID 2 76 17) (IF (#DEBUG (#ID 2 76 20) (NOT (#DEBUG (#ID 2 76 24) (ENTMAKE LST1)))) (#DEBUG (#ID 2 78 12) (SETQ N1 (#DEBUG (#ID 2 78 21) (+ 1 N1)))) (#DEBUG (#ID 2 79 12) (SETQ N2 (#DEBUG (#ID 2 79 21) (+ 1 N2)))))))) (#DEBUG (#ID 2 80 10) (PROGN (#DEBUG (#ID 2 81 12) (IF (#DEBUG (#ID 2 81 16) (= X T)) (#DEBUG (#ID 2 82 14) (PROGN (#DEBUG (#ID 2 83 16) (SETQ OLDLST (#DEBUG (#ID 2 83 29) (ENTGET (#DEBUG (#ID 2 83 37) (TBLOBJNAME "layer" (#DEBUG (#ID 2 83 57) (CDR (#DEBUG (#ID 2 83 62) (ASSOC 2 LST1)))))))) NDXF (#DEBUG (#ID 2 84 29) (LIST 6 62 70 290 370)))) (#DEBUG (#ID 2 88 16) (IF (#DEBUG (#ID 2 88 20) (= XX nil)) (#DEBUG (#ID 2 88 30) (SETQ N4 (#DEBUG (#ID 2 88 39) (+ 1 N4)))))) (#DEBUG (#ID 2 89 16) (FOREACH I NDXF (#DEBUG (#ID 2 90 18) (SETQ OLDLST (#DEBUG (#ID 2 91 25) (SUBST (#DEBUG (#ID 2 91 32) (ASSOC I LST1)) (#DEBUG (#ID 2 91 47) (ASSOC I OLDLST)) OLDLST)))))) (#DEBUG (#ID 2 94 16) (ENTMOD OLDLST))))))))))
  10. )
  11. (#DEBUG (#ID 2 107 14) (ALERT (#DEBUG (#ID 2 107 21) (STRCAT "\n 未新建图层" (#DEBUG (#ID 2 107 38) (RTOS N1 2 0)) "个"))))
  12. (#DEBUG (#ID 2 110 13) (ALERT (#DEBUG (#ID 2 110 20) (STRCAT "\n 新建图层" (#DEBUG (#ID 2 110 37) (RTOS N2 2 0)) "个"))))
  13. (PRINC ) )
 楼主| 发表于 2023-9-19 08:52:25 | 显示全部楼层
liuhe 发表于 2023-9-13 17:18
手头没有  自己重新写吧

大神帮忙看看之前用你的那个提取图层的工具制作的一个lisp程序转成VLX格式之后无法运行
发表于 2023-9-19 10:22:41 | 显示全部楼层
chq168168 发表于 2023-9-15 08:50
大神为什么生成的下边这段程序转成VLX运行不了呢?是不是代码有个#ID跟#DEBUG变量,这俩变量没定义的原因 ...

我是不懂为啥一堆#debug  和#id  我这边测试不会生成这些东西
发表于 2023-9-19 10:26:11 | 显示全部楼层
chq168168 发表于 2023-9-15 08:50
大神为什么生成的下边这段程序转成VLX运行不了呢?是不是代码有个#ID跟#DEBUG变量,这俩变量没定义的原因 ...
  1. (DEFUN C:TC1 (/ LST N1 N2 N3 N4 LST1 ERR)
  2.   (SETQ        LST (LIST
  3.               (LIST '(0 . "LAYER")
  4.                     '(100 . "AcDbSymbolTableRecord")
  5.                     '(100 . "AcDbLayerTableRecord")
  6.                     '(2 . "0")
  7.                     '(70 . 0)
  8.                     '(62 . 7)
  9.                     '(6 . "Continuous")
  10.                     '(290 . 1)
  11.                     '(370 . -3)
  12.                    )
  13.               (LIST '(0 . "LAYER")
  14.                     '(100 . "AcDbSymbolTableRecord")
  15.                     '(100 . "AcDbLayerTableRecord")
  16.                     '(2 . "BEND")
  17.                     '(70 . 0)
  18.                     '(62 . 6)
  19.                     '(6 . "DASHED")
  20.                     '(290 . 1)
  21.                     '(370 . -3)
  22.                    )
  23.               (LIST '(0 . "LAYER")
  24.                     '(100 . "AcDbSymbolTableRecord")
  25.                     '(100 . "AcDbLayerTableRecord")
  26.                     '(2 . "HATCH")
  27.                     '(70 . 0)
  28.                     '(62 . 2)
  29.                     '(6 . "Continuous")
  30.                     '(290 . 1)
  31.                     '(370 . -3)
  32.                    )
  33.               (LIST '(0 . "LAYER")
  34.                     '(100 . "AcDbSymbolTableRecord")
  35.                     '(100 . "AcDbLayerTableRecord")
  36.                     '(2 . "MARK")
  37.                     '(70 . 0)
  38.                     '(62 . 3)
  39.                     '(6 . "Continuous")
  40.                     '(290 . 1)
  41.                     '(370 . -3)
  42.                    )
  43.               (LIST '(0 . "LAYER")
  44.                     '(100 . "AcDbSymbolTableRecord")
  45.                     '(100 . "AcDbLayerTableRecord")
  46.                     '(2 . "LH辅助图层")
  47.                     '(70 . 0)
  48.                     '(62 . 6)
  49.                     '(6 . "Continuous")
  50.                     '(290 . 1)
  51.                     '(370 . -3)
  52.                    )
  53.               (LIST '(0 . "LAYER")
  54.                     '(100 . "AcDbSymbolTableRecord")
  55.                     '(100 . "AcDbLayerTableRecord")
  56.                     '(2 . "LH图层")
  57.                     '(70 . 0)
  58.                     '(62 . 1)
  59.                     '(6 . "Continuous")
  60.                     '(290 . 1)
  61.                     '(370 . -3)
  62.                    )
  63.               (LIST '(0 . "LAYER")
  64.                     '(100 . "AcDbSymbolTableRecord")
  65.                     '(100 . "AcDbLayerTableRecord")
  66.                     '(2 . "DRAW")
  67.                     '(70 . 0)
  68.                     '(62 . 7)
  69.                     '(6 . "Continuous")
  70.                     '(290 . 1)
  71.                     '(370 . -3)
  72.                    )
  73.               (LIST '(0 . "LAYER")
  74.                     '(100 . "AcDbSymbolTableRecord")
  75.                     '(100 . "AcDbLayerTableRecord")
  76.                     '(2 . "細實線")
  77.                     '(70 . 0)
  78.                     '(62 . 2)
  79.                     '(6 . "Continuous")
  80.                     '(290 . 1)
  81.                     '(370 . 15)
  82.                    )
  83.             )
  84.   )
  85.   (setq        n1 0
  86.         n2 0
  87.         N3 0
  88.         n4 0
  89.   )
  90.   (FOREACH LST1        LST
  91.     (OR        (TBLSEARCH "LTYPE" (CDR (ASSOC 6 LST1)))
  92.         (VL-CATCH-ALL-APPLY
  93.           (QUOTE vla-Load)
  94.           (LIST        (vla-get-Linetypes
  95.                   (vla-get-ActiveDocument (vlax-get-acad-object))
  96.                 )
  97.                 (CDR (ASSOC 6 LST1))
  98.                 (FINDFILE "acad.lin")
  99.           )
  100.         )
  101.     )
  102.     (IF        (NOT (TBLSEARCH "LAYER" (CDR (ASSOC 2 LST1))))
  103.       (PROGN (IF (NOT (ENTMAKE LST1))
  104.                (SETQ N1 (+ 1 N1))
  105.                (SETQ N2 (+ 1 N2))
  106.              )
  107.       )
  108.       (PROGN
  109.         (IF (= X T)
  110.           (PROGN (SETQ OLDLST (ENTGET (TBLOBJNAME "layer" (CDR (ASSOC 2 LST1))))
  111.                        NDXF   (LIST 6 62 70 290 370)
  112.                  )
  113.                  (IF (= XX nil)
  114.                    (SETQ N4 (+ 1 N4))
  115.                  )
  116.                  (FOREACH I NDXF
  117.                    (SETQ
  118.                      OLDLST (SUBST (ASSOC I LST1) (ASSOC I OLDLST) OLDLST)
  119.                    )
  120.                  )
  121.                  (ENTMOD OLDLST)
  122.           )
  123.         )
  124.       )
  125.     )
  126.   )
  127.   (ALERT (STRCAT "\n 未新建图层" (RTOS N1 2 0) "个"))
  128.   (ALERT (STRCAT "\n 新建图层" (RTOS N2 2 0) "个"))
  129.   (PRINC)
  130. )



这是我用代码生成的lsp文件,不知道  你把个#debug  从哪来的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 06:36 , Processed in 0.168436 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表