乐筑天下

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

[编程交流] 层生成器Lisp例程Iss

[复制链接]

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-5 17:08:52 | 显示全部楼层 |阅读模式
大家好,
我发现了这个lisp rountine,它将图层从加载到AutoCad中。csv文件。它在大多数情况下都很好用,但当我使用“冻结”栏时,它挂了。我正在发布lisp和csv文件。只需记住更改csv文件在lisp中的位置。谢谢你的帮助。
图层创建器。拉链
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 17:13:02 | 显示全部楼层
是否尝试将图形的图层列表提取到。csv文件?
 
塔瓦特
回复

使用道具 举报

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-5 17:18:29 | 显示全部楼层
不,我要走另一条路。从csv文件到cadd。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-5 17:20:50 | 显示全部楼层
查看open、while、read line和vla put-*函数。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-5 17:24:21 | 显示全部楼层
 
在ACAD 2009中工作良好
在图层选项板上调用“冻结”时,Autocad崩溃?
 
哎呀,现在我知道你说的“冻结列”是什么意思了,CSV文件中的列
 
那么你到底想在那里发生什么?你想在装货时冷冻几层吗?
回复

使用道具 举报

0

主题

3

帖子

3

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 17:25:37 | 显示全部楼层
看起来他正在使用CSV文件创建图层和图层设置/信息。含糖的
 
是的,我也有同样的问题,当我编辑csv文件中的冻结列时,它会挂起。不知道为什么会这样。希望有人能解决这个问题。我想用这个。我还可以看到解冻柱。我喜欢这样的事实,即如果文件中的现有层被修改,它将覆盖这些层。
 
-如果你只有一把锤子,一切看起来都像钉子。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-5 17:28:23 | 显示全部楼层
也许这会有所帮助(代码编写得很快):
 
  1. (vl-load-com)
  2. (defun BB:CSV->Layers (path / f *error* _extract _trim acDoc l layerTable
  3.                       layerName layerItem layerDescription layerColor
  4.                       layerLinetype layerLineweight layerPlottable
  5.                       layerFreeze
  6.                      )
  7. ;; Exampe: (BB:CSV->Layers "Z:\\my_layers_folder\\my_layers.csv")
  8. (if (and (findfile path)
  9.           (setq f (open path "r"))
  10.      )
  11.    (progn
  12.      ;; Error handler
  13.      (defun *error* (msg)
  14.        (vla-endundomark acDoc)
  15.        (cond
  16.          ((not msg))                                                   ; Normal exit
  17.          ((member msg '("Function cancelled" "quit / exit abort")))    ; <esc> or (quit)
  18.          ((princ (strcat "\n** Error: " msg " ** ")))                  ; Fatal error, display it
  19.        )                                                               
  20.        (if f
  21.          (close f)
  22.        )
  23.        (princ)
  24.      )
  25.      ;; Line _extraction sub-function
  26.      (defun _extract (l /)
  27.        (substr l 1 (vl-string-search "," l))
  28.      )
  29.      ;; Line _trim sub-function
  30.      (defun _trim (v /)
  31.        (vl-string-subst "" (strcat v ",") l)
  32.      )
  33.      ;; Main code
  34.      (vla-startundomark
  35.        (setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
  36.      )
  37.      (read-line f)                                                     ; <- Skip first line (headers)
  38.      (setq layerTable (vla-get-layers acDoc))
  39.      ;; Linetype check
  40.      ;; <- Add linetype import code here, to avoid errors
  41.      (while (/= nil (setq l (read-line f)))
  42.        (progn
  43.          ;; Layer check
  44.          (setq layerItem
  45.                 (vla-add layerTable (setq layerName (_extract l)))
  46.          )
  47.          ;; Layer settings         
  48.          (setq l (_trim layerName))
  49.          (vla-put-description
  50.            layerItem
  51.            (setq layerDescription (_extract l))
  52.          )
  53.          (setq l (_trim layerDescription))
  54.          (if (/= 7 (setq layerColor (_extract l)))
  55.            (vla-put-color layerItem layerColor)
  56.          )
  57.          (setq l (_trim layerColor))
  58.          (vla-put-linetype layerItem (setq layerLinetype (_extract l)))
  59.          (setq l (_trim layerLinetype))
  60.          (if
  61.            (= "BYLAYER" (strcase (setq layerLineweight (_extract l))))
  62.             (vla-put-lineweight layerItem aclnwtbylayer)
  63.          )
  64.          (setq l (_trim layerLineweight))
  65.          (if (/= "YES" (strcase (setq layerPlottable (_extract l))))
  66.            (vla-put-plottable layerItem :vlax-false)
  67.          )
  68.          (setq l (_trim layerPlottable))
  69.          (if (/= "NO " (strcase (setq layerFreeze (_extract l))))
  70.            (vla-put-freeze layerItem :vlax-true)
  71.          )
  72.        )
  73.      )
  74.      (setq f (close f))
  75.      (*error* nil)
  76.    )
  77. )
  78. )

 
基本上,这允许您指定任何。CSV文件(格式相同),并快速导入*这些*层。您可以为每个规程设置一个宏(假设它们使用不同的层),或者为每个客户端设置一个宏。。。无论什么这实际上取决于你如何工作,以及你的需求是什么。
 
如果这有帮助的话,我可以很容易地将例程修改为“硬编码”,如果这是唯一的。您需要的CSV文件。
 
希望这有帮助!
回复

使用道具 举报

11

主题

38

帖子

27

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
55
发表于 2022-7-5 17:31:15 | 显示全部楼层
如果你走另一条路。。。
 
http://lee-mac.com/layerextract.html
 
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-5 17:34:25 | 显示全部楼层
ODBX从现有图形文件导入。。。
 
  1. (RM:CSV->Layers "Z:\\my_layers_folder\\my_layers.csv")
eg。
  1. (defun AT:ImportLayers (dwg / _catch col odbx odbxcol)
  2. ;; Import layers from specified drawing file
  3. ;; Alan J. Thompson
  4. (defun _catch (fnc lst / c)
  5.    (if (not (vl-catch-all-error-p (setq c (vl-catch-all-apply fnc lst))))
  6.      (cond (c)
  7.            (T)
  8.      )
  9.    )
  10. )
  11. (or *Acad* (setq *Acad* (vlax-get-acad-object)))
  12. (or *AcadDoc* (setq *AcadDoc* (vla-get-activedocument *Acad*)))
  13. (if (and (setq dwg (findfile dwg))
  14.           (setq col (vla-get-layers *AcadDoc*))
  15.           (setq odbx
  16.                  (_catch
  17.                    'vla-GetInterfaceObject
  18.                    (list *Acad* (strcat "ObjectDBX.AxDbDocument." (substr (getvar 'ACADVER) 1 2)))
  19.                  )
  20.           )
  21.           (_catch 'vla-open (list odbx dwg))
  22.      )
  23.    (vlax-for obj (setq odbxcol (vla-get-layers odbx))
  24.      (_catch 'vla-CopyObjects
  25.              (list odbx
  26.                    (vlax-safearray-fill (vlax-make-safearray vlax-vbObject (cons 0 0)) (list obj))
  27.                    col
  28.              )
  29.      )
  30.    )
  31. )
  32. (mapcar (function (lambda (o) (and o (_catch 'vlax-release-object o)))) (list odbxcol odbx))
  33. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:39:57 | 显示全部楼层
美好的
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 09:11 , Processed in 0.405675 second(s), 72 queries .

© 2020-2025 乐筑天下

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