乐筑天下

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

[编程交流] 需要一个lisp例程来处理

[复制链接]

12

主题

45

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 09:20:57 | 显示全部楼层 |阅读模式
大家好
 
当我的一个客户给我发送一个dxf文件时,我经常遇到一个问题,所有对象都在一个层上,但颜色不同,我需要的是一个例程,将所有颜色放在不同的层上,可能使层1-8,但保持原始颜色(我们从来没有得到超过8种颜色)。
 
如果有一个惯例存在,那么有人能告诉我吗?
 
干杯
jimpcfd
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:31:28 | 显示全部楼层
我有一个旧的例程,读取包含颜色“映射”到哪些层(以及新层颜色和线型)信息的CSV,然后处理和清除文件。
 
这是你感兴趣的东西吗?
回复

使用道具 举报

12

主题

45

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 09:38:05 | 显示全部楼层
嗨,李
 
非常感谢,这听起来很值得一看,我想你是说文本文件有映射的层名称,它将dxf颜色更改为层?
 
干杯
吉姆
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 09:41:10 | 显示全部楼层
也许是蛮力的东西:
 
  1. [b][color=BLACK]([/color][/b]defun ent2clay [b][color=FUCHSIA]([/color][/b]/ ss en ed[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  3.       [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  4.              [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
  5.                    cl [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]assoc 62 ed[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 62 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 256[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  6.              [b][color=MAROON]([/color][/b]entmod [b][color=GREEN]([/color][/b]subst [b][color=BLUE]([/color][/b]cons 8 [b][color=RED]([/color][/b]itoa cl[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 8 ed[b][color=BLUE])[/color][/b] ed[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  7.              [b][color=MAROON]([/color][/b]ssdel en ss[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  8. [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 
-大卫
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:47:48 | 显示全部楼层
可能
 
  1. (defun c:test (/ ss j vl Nme co)
  2. ; Tharwat 08. 06. 2011
  3. (vl-load-com)
  4. (if (setq ss (ssget "_:L"))
  5.    (repeat (setq j (sslength ss))
  6.      (setq sset (ssname ss (setq j (1- j))))
  7.      (setq vl (vlax-ename->vla-object sset))
  8.      (if
  9.        (not
  10.          (tblsearch "LAYER"
  11.                     (setq Nme (rtos (setq co (vla-get-color vl)) 2 0))
  12.          )
  13.        )
  14.         (progn
  15.           (entmakex (list (cons 0 "LAYER")
  16.                           (cons 100 "AcDbSymbolTableRecord")
  17.                           (cons 100 "AcDbLayerTableRecord")
  18.                           (cons 2 Nme)
  19.                           (cons 70 0)
  20.                           (cons 62 co)
  21.                     )
  22.           )
  23.           (vla-put-layer vl Nme)
  24.         )
  25.      )
  26.      (if (not (eq (atoi (vla-get-layer vl)) (vla-get-color vl)))
  27.        (vla-put-layer vl co)
  28.      )
  29.    )
  30.    (princ)
  31. )
  32. (princ)
  33. )

 
塔瓦特
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:55:20 | 显示全部楼层
 
对不起,吉姆,我的错误-我的代码是用于将层集映射到其他层,而不是颜色。
 
虽然我很确定David的代码会满足你的需要,但他通常很在行
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:03:42 | 显示全部楼层
  1. (defun c:LayerByColor (/ ss i d)
  2. (if (setq ss (ssget "_X" '((-4 . "<") (62 . 256))))
  3.    (repeat (setq i (sslength ss))
  4.      (entmod (subst (cons 8 (itoa (cdr (assoc 62 (setq d (entget (ssname ss (setq i (1- i)))))))))
  5.                     (assoc 8 d)
  6.                     d
  7.              )
  8.      )
  9.    )
  10. )
  11. (princ)
  12. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:13:05 | 显示全部楼层
非常感谢alanjt,作为一个试图掌握Lisp(lost((11(1+2+3)2))等等的人,他是一个很好的选择!!!。
你能告诉我layerbycolor是怎么工作的吗?
 
干杯
吉姆
回复

使用道具 举报

12

主题

45

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 10:19:20 | 显示全部楼层
 
[code](defun c:LayerByColor(/ss i d)(if(setq ss(ssget“_X”'(-4))
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:26:48 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 03:08 , Processed in 0.416317 second(s), 72 queries .

© 2020-2025 乐筑天下

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