乐筑天下

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

[编程交流] 图层和h的Lisp或脚本

[复制链接]

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:27:30 | 显示全部楼层 |阅读模式
你好
我试图找出如何编写lisp或脚本来满足我的需要,但我找不到我想要的。我认为这是非常基本的。
 
 
我想要它做的是:
创建具有特定名称和颜色的图层,然后选择图形中的所有图案填充并将其移动到该图层,然后清除图形。
 
 
如果你能自动绘制多个图形,这将是一个额外的收获。
 
 
我想这对你们很多人来说都很容易,但我现在不知道从哪里开始。。。
英语不是我的母语,但我希望你能理解我的问题
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:32:31 | 显示全部楼层
欢迎来到CADTutor
 
试试这个程序,别忘了更改图层的名称,以满足您的需要,以及颜色编号。
 
[未测试代码]
 
  1. (defun c:Test (/ name color doc sel)
  2. ;;    Tharwat 17.12.2014    ;;
  3. (setq name  "Layer" [color=blue];; <= Layer name [/color]
  4.        color 1      [color=blue];; <= Color of layer[/color]
  5.        doc   (vla-get-activedocument (vlax-get-acad-object))
  6. )
  7. (if (not (tblsearch "LAYER" name))
  8.    (entmake (list '(0 . "LAYER")
  9.                   '(100 . "AcDbSymbolTableRecord")
  10.                   '(100 . "AcDbLayerTableRecord")
  11.                   (cons 2 name)
  12.                   (cons 62 color)
  13.                   '(70 . 0)
  14.             )
  15.    )
  16. )
  17. (if (ssget "_X" '((0 . "HATCH")))
  18.    (vlax-for x (setq sel (vla-get-ActiveSelectionSet doc))
  19.      (if (vlax-write-enabled-p x)
  20.        (vla-put-layer x name)
  21.      )
  22.    )
  23. )
  24. (if sel
  25.    (vla-delete sel)
  26. )
  27. (repeat 3 (command "_.-purge" "a" "*" "n"))
  28. (princ)
  29. )
  30. (vl-load-com)

 
干杯
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 20:39:23 | 显示全部楼层
非常感谢您的回复。我试过你的密码。我第一次不能上班?不知道我做错了什么(什么都没发生)。第二个(ttray33y)工作得很好,但我不想每次都写图层和颜色。
 
 
我希望层被命名为“K-----------H”,颜色为“254”。
也许有人可以帮我把它放在第一个代码里??也许我自己做的时候做错了什么。。。。
 
 
提前谢谢!
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:40:58 | 显示全部楼层
你看到节目里的蓝色文字了吗?
将“layer”更改为“K-----H”

1至254
 
然后再试一次
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:45:55 | 显示全部楼层
谢谢你的快速回复。
下面我将它粘贴到我的记事本文件(.lsp)中。还是什么都没发生。我是否应该做一些事情,而不仅仅是拖放我保存的文件?
 
 
(defun c:测试(/name color doc sel)
;;    Tharwat 17.12.2014;;
(setq名称“K--------H”;;
颜色254;;
doc(vla get activedocument(vlax get acad object))
)
(如果(不是(tblsearch“LAYER”名称))
(entmake(列表)(0.“层”)
“(100.“AcDbSymbolTableRecord”)
“(100.“AcDbLayerTableRecord”)
(cons 2名称)
(cons 62色)
'(70 . 0)
)
)
)
(if(ssget“_X”'((0。“图案填充”))
(vlax for x(setq sel(vla get ActiveSelectionSet doc))
(如果(vlax-write-enabled-p x)
(vla put layer x name)
)
)
)
(如果选择
(vla删除sel)
)
(重复3(命令“_.-purge”“a”“*”“n”))
(普林斯)
)
(vl load com)
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:51:02 | 显示全部楼层
图形中有块中的图案填充对象还是单独的对象?
 
上传样本图纸进行调查(如果可以的话)。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 20:53:43 | 显示全部楼层
没有区块,但有许多单独的舱口。
我在这里附上一个文件进行测试。
测验图纸
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 21:00:27 | 显示全部楼层
尝试上述例程的这个精简版本。
  1. (setq wlayer "MylayerNAME")
  2. (setq ccolor "Red")
  3. (defun c:chal ()
  4. (setvar "cmdecho" 1)
  5. (setq c_wlayer (getstring (strcat "New layer name <" wlayer ">: "))
  6.         c_color (getstring (strcat "\nChoose color <" ccolor ">: "))
  7. )
  8. (if (= c_color "")
  9.     (setq c_color ccolor)
  10.     (setq ccolor c_color)
  11.    )
  12. (if (= c_wlayer "")
  13. (setq c_wlayer wlayer)
  14. (setq wlayer c_wlayer)
  15. )
  16. (if (setq mySet(ssget "X" (list
  17.        (cons -4 "<OR")
  18.          (cons 0 "HATCH")
  19. (cons -4 "OR>")
  20.        )))
  21.    (progn
  22. (command "-layer" "make" wlayer "Color" ccolor "" "")
  23. (command "change" mySet "" "p" "la" wlayer "" "")
  24. )                                    
  25. )                                      
  26. (princ)                              
  27. )      
  28. ;simple routine to change layer and color of an object.
回复

使用道具 举报

7

主题

80

帖子

73

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 21:04:44 | 显示全部楼层
真是太棒了!谢谢最后一个问题。有没有办法让程序不用我写“chal”就可以启动?每次都能节省我几秒钟
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 21:06:59 | 显示全部楼层
 
如果您试图更改多个图形,我建议您使用autodesk的scriptpro,安装后只需一个脚本即可在最后一个图形中运行lisp。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

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

© 2020-2025 乐筑天下

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