乐筑天下

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

[编程交流] 如何使用LI添加DWS文件

[复制链接]

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-5 18:00:47 | 显示全部楼层 |阅读模式
大家好,
 
如何将文件添加到“CAD标准”中,以通过LISP检查当前图形是否存在任何违规行为?
 
附笔。
我在以下地址找到了一个很好的代码,可以从图形中删除以前添加的文件:
可以用LISP例程删除(DWS)文件吗?
非常感谢Block和我亲爱的朋友Lee Mac。
... 但我的问题仍然没有答案。
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-5 18:13:10 | 显示全部楼层
我这里有一些有用的AutoLISP代码。
非常感谢Stig Madsen和Afralisp。
 
但仍在寻找香草。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:16:26 | 显示全部楼层
试试这个Mehrdad,
 
  1. ([color=BLUE]defun[/color] c:test ( [color=BLUE]/[/color] file )
  2.    ([color=BLUE]if[/color] ([color=BLUE]setq[/color] file ([color=BLUE]getfiled[/color] [color=MAROON]"Select DWS File"[/color] [color=MAROON]""[/color] [color=MAROON]"dws"[/color] 16))
  3.        (AddDWSAssociation file)
  4.    )
  5. )
  6. [color=GREEN];; Add DWS Association  -  Lee Mac[/color]
  7. [color=GREEN];; dws = filename of DWS file.[/color]
  8. [color=GREEN];; Returns XRecord entity name if successful[/color]
  9. ([color=BLUE]defun[/color] AddDWSAssociation ( dws [color=BLUE]/[/color] dict elst i item lst )
  10.    ([color=BLUE]setq[/color] dict
  11.        ([color=BLUE]if[/color] ([color=BLUE]setq[/color] dict ([color=BLUE]dictsearch[/color] ([color=BLUE]namedobjdict[/color]) [color=MAROON]"AcStStandard"[/color]))
  12.            ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] -1 dict))
  13.            ([color=BLUE]dictadd[/color] ([color=BLUE]namedobjdict[/color]) [color=MAROON]"AcStStandard"[/color]
  14.                ([color=BLUE]entmakex[/color]
  15.                   '(
  16.                        (0 . [color=MAROON]"DICTIONARY"[/color])
  17.                        (100 . [color=MAROON]"AcDbDictionary"[/color])
  18.                        (280 . 0)
  19.                        (281 . 1)
  20.                    )
  21.                )
  22.            )
  23.        )
  24.    )
  25.    ([color=BLUE]setq[/color] elst ([color=BLUE]entget[/color] dict))
  26.    ([color=BLUE]while[/color] ([color=BLUE]setq[/color] item ([color=BLUE]assoc[/color] 350 elst))
  27.        ([color=BLUE]setq[/color] lst
  28.            ([color=BLUE]cons[/color]
  29.                ([color=BLUE]list[/color]
  30.                    ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 1 ([color=BLUE]entget[/color] ([color=BLUE]cdr[/color] item))))
  31.                    ([color=BLUE]cdr[/color] item)
  32.                    ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 3 elst))
  33.                )
  34.                lst
  35.            )
  36.        )
  37.        ([color=BLUE]setq[/color] elst ([color=BLUE]cdr[/color] ([color=BLUE]member[/color] item elst)))
  38.    )
  39.    ([color=BLUE]if[/color] ([color=BLUE]assoc[/color] dws lst)
  40.        ([color=BLUE]cadr[/color] ([color=BLUE]assoc[/color] dws lst))
  41.        ([color=BLUE]progn[/color]
  42.            ([color=BLUE]setq[/color] lst ([color=BLUE]mapcar[/color] '[color=BLUE]caddr[/color] lst)
  43.                    i -1
  44.            )
  45.            ([color=BLUE]while[/color] ([color=BLUE]member[/color] ([color=BLUE]itoa[/color] ([color=BLUE]setq[/color] i ([color=BLUE]1+[/color] i))) lst))
  46.            ([color=BLUE]dictadd[/color] dict ([color=BLUE]itoa[/color] i)
  47.                ([color=BLUE]entmakex[/color]
  48.                    ([color=BLUE]list[/color]
  49.                       '(0 . [color=MAROON]"XRECORD"[/color])
  50.                       '(100 . [color=MAROON]"AcDbXrecord"[/color])
  51.                       '(280 . 1)
  52.                        ([color=BLUE]cons[/color] 1 dws)
  53.                    )
  54.                )
  55.            )
  56.        )
  57.    )
  58. )
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-5 18:23:08 | 显示全部楼层
杰出的
非常感谢李。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:33:36 | 显示全部楼层
 
不客气,阿汉哈-如果你对代码有任何问题,尽管问。
回复

使用道具 举报

6

主题

12

帖子

6

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 18:34:54 | 显示全部楼层
李,你好,
 
你能帮我一下吗?我已经看了代码,但我不明白我必须做什么才能让它为我工作。我以前做过一些基本的lisp,知道如何加载它们等等。但在阅读代码时一无所获。希望你能像一个虚拟向导一样为我解释。
 
谢谢
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

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

铜币
474
发表于 2022-7-5 18:45:13 | 显示全部楼层
Lee的代码将DWS文件添加到“Standards”命令中,而无需按顺序(1)打开对话框,(2)按+按钮,(3)然后选择DWS文件将其添加到对话框的左侧列表框。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:51:34 | 显示全部楼层
 
函数“AddDWSAssociation”是一个需要一个参数的函数:与活动DWG文件关联的DWS文件的文件名。
 
您可以像调用任何其他需要参数的LISP函数一样调用函数AddDWSAssociation,例如,“+”函数需要一个或多个数值参数:
 
  1. (+ 1 2 3)
  2. ==>  6

在我上面的代码中,我包含了另一个函数:“c:test”,它可以在命令行中调用(因为它包含“c:”前缀)。
 
如果用户从GetField对话框中选择了DWS文件,则此函数(c:test)使用DWS文件的文件名调用AddDWSAssociation函数。
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 18:56:25 | 显示全部楼层
 
我做错了什么?
我收到消息:搜索模式无效*。C: \ SCRIPTS\986116\TataStandard2012。dws。
 
De代码:
 
  1. (defun c:test ( / file )
  2.    (if (setq file (getfiled "Select DWS File" "" "C:\\SCRIPTS\\986116\\TataStandard2012.dws" 16))
  3.        (AddDWSAssociation file)
  4.    )
  5. )
  6. ;; Add DWS Association  -  Lee Mac
  7. ;; dws = filename of DWS file.
  8. ;; Returns XRecord entity name if successful
  9. (defun AddDWSAssociation ( dws / dict elst i item lst )
  10.    (setq dict
  11.        (if (setq dict (dictsearch (namedobjdict) "AcStStandard"))
  12.            (cdr (assoc -1 dict))
  13.            (dictadd (namedobjdict) "AcStStandard"
  14.                (entmakex
  15.                   '(
  16.                        (0 . "DICTIONARY")
  17.                        (100 . "AcDbDictionary")
  18.                        (280 . 0)
  19.                        (281 . 1)
  20.                    )
  21.                )
  22.            )
  23.        )
  24.    )
  25.    (setq elst (entget dict))
  26.    (while (setq item (assoc 350 elst))
  27.        (setq lst
  28.            (cons
  29.                (list
  30.                    (cdr (assoc 1 (entget (cdr item))))
  31.                    (cdr item)
  32.                    (cdr (assoc 3 elst))
  33.                )
  34.                lst
  35.            )
  36.        )
  37.        (setq elst (cdr (member item elst)))
  38.    )
  39.    (if (assoc dws lst)
  40.        (cadr (assoc dws lst))
  41.        (progn
  42.            (setq lst (mapcar 'caddr lst)
  43.                    i -1
  44.            )
  45.            (while (member (itoa (setq i (1+ i))) lst))
  46.            (dictadd dict (itoa i)
  47.                (entmakex
  48.                    (list
  49.                       '(0 . "XRECORD")
  50.                       '(100 . "AcDbXrecord")
  51.                       '(280 . 1)
  52.                        (cons 1 dws)
  53.                    )
  54.                )
  55.            )
  56.        )
  57.    )
  58. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:01:33 | 显示全部楼层
更改:
  1. 4
至:
我还建议您阅读GetField函数的文档。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 01:05 , Processed in 0.833351 second(s), 72 queries .

© 2020-2025 乐筑天下

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