如何使一个例程成为子ro
我想创建一个新线程,因为这是一个不同的问题,即使它是从以前的线程。因为我不知道有多少字体实例需要更改(SLDTEXTSTYLE),所以我想创建一个计数器。
http://www.cadtutor.net/forum/showthread.php?91375http://
仔细研究后,我发现了一种从这个线程创建计数器编号的方法:
http://www.cadtutor.net/forum/archive/index.php/t-76290.html
如何使CNT成为子例程并从C:SWT调用它
(defun c:cnt ()
(setq la (cdr (assoc 2 (tblnext "STYLE" T))))
(setq lal (list la))
(while (/= (setq la (cdr (assoc 2 (tblnext "STYLE")))) nil)
(setq lal (append lal (list la))
)
)
(setq LEN (length lal))
)
(defun c:swt (/ i s)
(Princ "\nFinds all SW Text Styles, replaces with ROMANS Font:")
(if (not (tblsearch "STYLE" "ROMANS"))
(progn
(command "_.STYLE" "ROMANS" "ROMANS")
(while (> (getvar "CMDACTIVE") 0)
(command ""))))
(setq i 0)
(repeat 9 ; All my LEN from the subroutine here?
(setq s (strcat "SLDTEXTSTYLE" (itoa i)))
(if (tblsearch "STYLE" s)
(progn
(command "_.STYLE" s "ROMANS")
(while (> (getvar "CMDACTIVE") 0)
(command ""))))
(setq i (1+ i)))
(princ))
当然,如果有“更好的方法”的话,我也会敞开心扉!!
非常感谢! 解决了我自己的问题。
考虑到我在幼儿园的编程技能,有没有更好的方法来实现这一切?
(defun c:swt (/ i s la lal len)
(Princ
"\nFinds all SolidWorks Text Styles, replaces with ROMANS Font:"
)
(setq la (cdr (assoc 2 (tblnext "STYLE" T))))
(setq lal (list la))
(while (/= (setq la (cdr (assoc 2 (tblnext "STYLE")))) nil)
(setq lal (append lal (list la))
)
)
(setq LEN (length lal))
(if (not (tblsearch "STYLE" "ROMANS"))
(progn
(command "_.STYLE" "ROMANS" "ROMANS")
(while (> (getvar "CMDACTIVE") 0)
(command "")
)
)
)
(setq i 0)
(repeat LEN ; All my LEN from the subroutine here
(setq s (strcat "SLDTEXTSTYLE" (itoa i)))
(if (tblsearch "STYLE" s)
(progn
(command "_.STYLE" s "ROMANS")
(while (> (getvar "CMDACTIVE") 0)
(command "")
)
)
)
(setq i (1+ i))
)
(princ)
) 不需要柜台。只需检查文本样式的名称。
(defun C:swt ()
(vlax-map-collection
(vla-get-textstyles
(vla-get-activedocument
(vlax-get-acad-object)
)
)
(function
(lambda ( x / n)
(if
(or
(=(setq n(strcase (vla-get-name x))) "ROMANS")
(wcmatch n "SLDTEXTSTYLE*")
)
(if
(not (= "ROMANS" (vla-get-fontfile x)))
(vla-put-fontfile x "ROMANS.SHX")
)
)
)
)
)
(princ n)
) 我不理解c:cnt例程ILoveMadoka的逻辑。
但是如果你计划在一个例程的一个地方使用一个“子例程”,那么创建一个“子例程”是没有意义的
(Defun c:something()(废话)(while;或repeat(子程序); 这是炸弹!
谢谢
pBe,
我的原始代码运行了一定数量的实例。
因为我并不总是知道我会找到多少,我需要一个计数器。
我找到了一种计算实例数的方法
我需要改变密码,但我不知道如何将这两个人结合在一起。
当时我想到了“子程序”
新手思维。。
页:
[1]