乐筑天下

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

[编程交流] 匹配Dimstyle和layer

[复制链接]

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:16:11 | 显示全部楼层 |阅读模式
我有一个叫“匹配”的按钮。当前,当您点击它时,可以选择图形中的任何dimstyle,并使其成为当前dimstyle。
 
宏代码为“^C^C-dimstyle;”
 
我想把层也合并到这个例子中
 
我当前的dimstyle是Metric5_箭头,层“wall”。
我想点击一个文本,其中dimstyle是Metric25_点,层“文字”。
 
现在,当我单击该文本时,当前的dimstyle更改为Metric25_点,当前层从以前的“wall”切换为txt。
 
如何将其编码到匹配按钮中?我得到了“^C^C-dimstyle;”从办公室的某个人那里,对我来说效率不够。
 
谢谢!
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:21:05 | 显示全部楼层
  1. (defun c:test (/ e)
  2. (and (setq e (car (entsel "\nSelect Dimension: ")))
  3.       (or (eq "DIMENSION" (cdr (assoc 0 (setq e (entget e)))))
  4.           (alert "Invalid object!")
  5.       )
  6.       (setvar 'clayer (cdr (assoc 8 e)))
  7.       (command "_.-dimstyle" "_restore" (cdr (assoc 3 e)))
  8. )
  9. (princ)
  10. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:24:44 | 显示全部楼层
VL中的情况看起来非常不同
 
  1. (defun c:DimMatch ( / doc obj )
  2. (vl-load-com)
  3. (defun Itemp ( coll item )
  4.    (if
  5.      (not
  6.        (vl-catch-all-error-p
  7.          (setq item
  8.            (vl-catch-all-apply
  9.              (function vla-item) (list coll item)
  10.            )
  11.          )
  12.        )
  13.      )
  14.      item
  15.    )
  16. )
  17. (if
  18.    (progn
  19.      (vla-GetEntity
  20.        (vla-get-Utility
  21.          (setq doc
  22.            (vla-get-ActiveDocument
  23.              (vlax-get-Acad-Object)
  24.            )
  25.          )
  26.        )
  27.        'obj
  28.        "\nSelect Dimension: "
  29.      )
  30.      (and obj
  31.        (wcmatch
  32.          (strcase
  33.            (vla-get-ObjectName obj)
  34.          )
  35.          "*DIMENSION*,*LEADER"
  36.        )
  37.      )
  38.    )
  39.    (mapcar
  40.      (function
  41.        (lambda ( Information )
  42.          (apply
  43.            (function
  44.              (lambda ( Dest Collection Source )
  45.                (vlax-put-property doc Dest
  46.                  (itemp Collection
  47.                    (vlax-get-property obj Source)
  48.                  )
  49.                )
  50.              )
  51.            )
  52.            Information
  53.          )
  54.        )
  55.      )
  56.      (list
  57.        (list (quote ActiveLayer)   (vla-get-layers    doc) (quote Layer))
  58.        (list (quote ActiveDimstyle)(vla-get-Dimstyles doc) (quote StyleName))
  59.      )
  60.    )
  61. )
  62. (princ)
  63. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:27:16 | 显示全部楼层
我曾想过使用VL,但他正在制作按钮宏。尽可能简单似乎是合乎逻辑的。
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:30:34 | 显示全部楼层
谢谢大家,我完全不知道如何实现这个。。。。
我根本不是一个编码员。
 
我试图将此代码粘贴到CUI-->查找匹配工具-->中,然后在“宏”下粘贴到“长字符串编辑器”。。。。
不起作用。
 
我要怎么让它运行?!在你们发布之前,我甚至从未见过代码的类型。
 
是VB的东西吗?我需要安装VBEditor吗?(顺便说一句,现在安装的是以前没有的…)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:34:24 | 显示全部楼层
也许可以看看这里:
 
http://www.cadtutor.net/forum/showthread.php?t=1390
 
我在VL中的代码更适合学术界。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:37:09 | 显示全部楼层
 
这是LISP代码,不是Visual Basic,您不需要VBEditor-AutoCAD已经安装了您需要的一切
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:41:25 | 显示全部楼层
不客气。
 
 
我知道。
回复

使用道具 举报

1

主题

5

帖子

4

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 11:43:13 | 显示全部楼层
是的,不知道为什么这仍然不起作用,但我的按钮链接找不到!!!
 
lisp位于@比方说“C:/acad/match.lsp”
 
 
我在另一个网站上找到了这个按钮宏字段
^C^C^C(加载C:/acad/match.lsp”);
 
但当我点击我添加到工具栏的按钮时,它不会加载!
它在命令行中显示
 
“命令:(加载C:/acad/match.lsp”)
然后在下面写着
 
(“_>
 
 
 
我从你们给我的lisp中修改的唯一一件事是,当我意识到必须输入它才能加载它时,我将注释和“test”更改为“match”,但我希望它在按钮上,而不是总是键入“match”。
 
 
 
;;匹配。LSP选择一个DIMSTYLE文本,该DIMSTYLE和图层将变为当前
;;            非常适合买票
;;===========================================================================
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun c:匹配(/e)
(和(setq e(car(entsel“\n选择尺寸:”))
(或(eq“DIMENSION”(cdr(assoc 0(setq e(entget e k))))))
(警报“无效对象!”)
)
(setvar’clayer(cdr(assoc 8 e)))
(命令“-dimstyle”“\u restore”(cdr(assoc 3 e)))
)
(普林斯)
)
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:47:11 | 显示全部楼层
您忘记了一个“”
 
  1. ^C^C(or c:Match (load "C:/acad/match.lsp" nil));MATCH;

 
我不擅长按钮,但这应该加载(如果还没有)并执行命令。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 11:40 , Processed in 0.647693 second(s), 72 queries .

© 2020-2025 乐筑天下

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