匹配Dimstyle和layer
我有一个叫“匹配”的按钮。当前,当您点击它时,可以选择图形中的任何dimstyle,并使其成为当前dimstyle。宏代码为“^C^C-dimstyle;”
我想把层也合并到这个例子中
我当前的dimstyle是Metric5_箭头,层“wall”。
我想点击一个文本,其中dimstyle是Metric25_点,层“文字”。
现在,当我单击该文本时,当前的dimstyle更改为Metric25_点,当前层从以前的“wall”切换为txt。
如何将其编码到匹配按钮中?我得到了“^C^C-dimstyle;”从办公室的某个人那里,对我来说效率不够。
谢谢! (defun c:test (/ e)
(and (setq e (car (entsel "\nSelect Dimension: ")))
(or (eq "DIMENSION" (cdr (assoc 0 (setq e (entget e)))))
(alert "Invalid object!")
)
(setvar 'clayer (cdr (assoc 8 e)))
(command "_.-dimstyle" "_restore" (cdr (assoc 3 e)))
)
(princ)
) VL中的情况看起来非常不同
(defun c:DimMatch ( / doc obj )
(vl-load-com)
(defun Itemp ( coll item )
(if
(not
(vl-catch-all-error-p
(setq item
(vl-catch-all-apply
(function vla-item) (list coll item)
)
)
)
)
item
)
)
(if
(progn
(vla-GetEntity
(vla-get-Utility
(setq doc
(vla-get-ActiveDocument
(vlax-get-Acad-Object)
)
)
)
'obj
"\nSelect Dimension: "
)
(and obj
(wcmatch
(strcase
(vla-get-ObjectName obj)
)
"*DIMENSION*,*LEADER"
)
)
)
(mapcar
(function
(lambda ( Information )
(apply
(function
(lambda ( Dest Collection Source )
(vlax-put-property doc Dest
(itemp Collection
(vlax-get-property obj Source)
)
)
)
)
Information
)
)
)
(list
(list (quote ActiveLayer) (vla-get-layers doc) (quote Layer))
(list (quote ActiveDimstyle)(vla-get-Dimstyles doc) (quote StyleName))
)
)
)
(princ)
)
我曾想过使用VL,但他正在制作按钮宏。尽可能简单似乎是合乎逻辑的。 谢谢大家,我完全不知道如何实现这个。。。。
我根本不是一个编码员。
我试图将此代码粘贴到CUI-->查找匹配工具-->中,然后在“宏”下粘贴到“长字符串编辑器”。。。。
不起作用。
我要怎么让它运行?!在你们发布之前,我甚至从未见过代码的类型。
是VB的东西吗?我需要安装VBEditor吗?(顺便说一句,现在安装的是以前没有的…) 也许可以看看这里:
http://www.cadtutor.net/forum/showthread.php?t=1390
我在VL中的代码更适合学术界。
这是LISP代码,不是Visual Basic,您不需要VBEditor-AutoCAD已经安装了您需要的一切 不客气。
我知道。 是的,不知道为什么这仍然不起作用,但我的按钮链接找不到!!!
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)))
)
(普林斯)
) 您忘记了一个“”
^C^C(or c:Match (load "C:/acad/match.lsp" nil));MATCH;
我不擅长按钮,但这应该加载(如果还没有)并执行命令。
页:
[1]
2