乐筑天下

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

[编程交流] 需要wblock lisp的帮助

[复制链接]

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 15:37:30 | 显示全部楼层 |阅读模式
你好
 
我以前没有写过任何lisps,现在已经读了大约2周了,正在看代码等等。我设法拼凑了一个Lisp程序,它可以作为两个一半,但我不能让它一起工作。
 
我画了很多零件,旁边有一个叫做“head”的块,还有一个“PCE\u NAM”的标签。每个零件的值不同。
 
我想选择一个part&block窗口,然后wblock到一个新文件,该文件的名称来自标记。然后自动循环再做一次。
 
这是我拼凑起来的花了我一个多星期的时间哈哈。
 
  1. (defun c:nest ( / file sel1 LM:GetAttributeValue ss attValue name)
  2. (setq p1 (getpoint "\nFirst Corner: "))
  3. (setq p2 (getcorner p1 "\nSecond Corner: "))
  4. (setq sel1 (ssget "_W" p1 p2 ))
  5. (vl-load-com)
  6. (defun LM:GetAttributeValue (blk tag / val enx)
  7.    (while
  8.      (and
  9.        (null val)
  10.        (= "ATTRIB"
  11.           (cdr (assoc 0 (setq enx (entget (setq blk (entnext blk))))))
  12.        )
  13.      )
  14.       (if (= (strcase tag) (strcase (cdr (assoc 2 enx))))
  15.         (setq val (cdr (assoc 1 enx)))
  16.       )
  17.    )
  18. )
  19. (if (and (setq ss (ssget "_W" p1 p2 '((0 . "INSERT") (2 . "Head") (66 . 1))))
  20.           (setq attValue (LM:GetAttributeValue (ssname ss 0) "PCE_NAM"))
  21.      )
  22.    (prompt (strcat "\n[Attribute Value] : " attValue))
  23. )
  24. (command "FILEDIA" "0")
  25. (COMMAND "-WBLOCK" (strcat "C:\\autocad\" attvalue "Y" "" "0,0" sel1 ""))
  26. (command "oops" )
  27. (prompt "\nWBlocking complete.")
  28. (princ)
  29. );defun

 
我得到第一个工作位进行选择,它告诉我标签值。
我也可以将所选内容wblock到文件中,但我无法将标记值作为文件名来获取wblock。
 
如果有任何正确方向的帮助和指针,我们将不胜感激。
P12.dwg
我附上了一个示例文件。
 
谢谢
俄罗斯
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 15:49:37 | 显示全部楼层
抱歉,我刚刚意识到我没有包装我的代码,找不到编辑按钮
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:02:39 | 显示全部楼层
  1. (defun c:nest ( / file sel1 LM:GetAttributeValue ss attValue name)
  2. (setq p1 (getpoint "\nFirst Corner: "))
  3. (setq p2 (getcorner p1 "\nSecond Corner: "))
  4. (setq sel1 (ssget "_W" p1 p2 ))
  5. (vl-load-com)
  6. (defun LM:GetAttributeValue (blk tag / val enx)
  7.    (while
  8.      (and
  9.        (null val)
  10.        (= "ATTRIB"
  11.           (cdr (assoc 0 (setq enx (entget (setq blk (entnext blk))))))
  12.        )
  13.      )
  14.       (if (= (strcase tag) (strcase (cdr (assoc 2 enx))))
  15.         (setq val (cdr (assoc 1 enx)))
  16.       )
  17.    )
  18. )
  19. (if (and (setq ss (ssget "_W" p1 p2 '((0 . "INSERT") (2 . "Head") (66 . 1))))
  20.           (setq attValue (LM:GetAttributeValue (ssname ss 0) "PCE_NAM"))
  21.      )
  22.    (prompt (strcat "\n[Attribute Value] : " attValue))
  23. )
  24. (command "FILEDIA" "0")
  25. (COMMAND "-WBLOCK" (strcat "C:\\autocad\" attvalue "Y" "" "0,0" sel1 ""))
  26. (command "oops" )
  27. (prompt "\nWBlocking complete.")
  28. (princ)
  29. );defun
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:24:21 | 显示全部楼层
尝试将wblock命令调用更改为:
  1. (command "-WBLOCK" (strcat "C:\\autocad\" attvalue) "Y" "" '(0. 0. 0.) (ssname ss 0) "")
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:29:50 | 显示全部楼层
谢谢
 
现在它开始工作了。
 
干杯
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:41:03 | 显示全部楼层
 
很乐意帮忙
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 21:07 , Processed in 1.063666 second(s), 64 queries .

© 2020-2025 乐筑天下

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