乐筑天下

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

[编程交流] 图层选择

[复制链接]

12

主题

61

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 22:43:39 | 显示全部楼层 |阅读模式
是否有更清洁/更快的方法来实现这一点;
 
  1. (defun JHSETCOL1 ( /  )
  2. (if (not JHCOL1)
  3.                 (setq JHCOL1 "7")
  4.                 )
  5. (command "-layer" "C" JHCOL1 "*inv*" "")
  6. (command "-layer" "C" JHCOL1 "*dim*" "")
  7. (command "-layer" "C" JHCOL1 "*alias*" "")
  8.        
  9. (princ)
  10. )

 
本质上,我想使用通配符更改选定层的颜色。我有一个DCL框,您可以输入颜色“JHCOL1”
 
对使用通配符的lisp的层选择方面更感兴趣。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 22:59:51 | 显示全部楼层
您可以通过使用逗号分隔模式来匹配多个通配符模式,例如:
  1. (defun jhsetcol1 ( col )
  2.    (if (null col) (setq col 7))
  3.    (command "_.-layer" "_c" col "*inv*,*dim*,*alias*" "")
  4.    (princ)
  5. )

或者,使用Vanilla AutoLISP而不使用-LAYER命令:
  1. (defun jhsetcol2 ( col / def dxf enx lay )
  2.    (if (null col) (setq col 7))
  3.    (while (setq lay (tblnext "layer" (null lay)))
  4.        (if (wcmatch (setq lay (cdr (assoc 2 lay))) "*inv*,*dim*,*alias*")
  5.            (progn
  6.                (setq enx (entget (tblobjname "layer" lay))
  7.                      dxf (assoc 62 enx)
  8.                )
  9.                (entmod (subst (cons 62 (if (minusp (cdr dxf)) (- col) col)) dxf enx))
  10.            )
  11.        )
  12.    )
  13.    (princ)
  14. )
  1. (jhsetcol2 3)
或者,使用Visual LISP:
  1. 5

请注意,在上述示例中使用wcmatch区分大小写。
回复

使用道具 举报

12

主题

61

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 23:08:15 | 显示全部楼层
哇,李,这是你想要的最深入的!
 
完美的
 
我认为我非常需要扩展我的代码知识库!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:15:09 | 显示全部楼层
不客气,和尚询问您是否对代码有任何问题
回复

使用道具 举报

12

主题

61

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 23:21:03 | 显示全部楼层
我还没消化呢,快去看看!
 
我得给你买杯啤酒!
回复

使用道具 举报

12

主题

61

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 23:33:34 | 显示全部楼层
尝试了你的Visual lisp方法,我现在需要学习Visual lisp!看起来不错!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 23:42:55 | 显示全部楼层
 
Visual LISP路径可能更简洁,但Vanilla AutoLISP方法将更快-我还建议修改我在上面发布的示例VL代码,以接受VLA文档对象作为参数,这样就不需要多次调用函数来重复检索该对象和应用程序对象。
回复

使用道具 举报

12

主题

61

帖子

49

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 23:47:34 | 显示全部楼层
 
在你周末回复后,我开始在afralisp上查找VL,这开始有意义,但当我有时间离开日常工作时,我需要深入研究!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:32 , Processed in 0.630043 second(s), 68 queries .

© 2020-2025 乐筑天下

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