它仅在该图形中工作,在另一个具有相同类型的图形中不工作,并且当其具有多行文字时也不工作。
谢谢
22.dwg 一些额外的建议从拾取文字或多行文字返回assoc 8 ssget this way its layer Independent的层名称开始
使用文本、多行文字过滤器制作列表显然需要2个defuns,如果需要,请使用正确的一个制作列表。
为什么vlsort list不先通过a-z或a-z,然后用一个例程向文本添加1*。
若你们制作一个列表,那个么我在一周前发布了一个代码示例,介绍了如何从列表中制作一个表。搜索表格示例。将尝试查找。 >
>
(defun c:addme (/trunc data ss i e match var opt fr sy)
;;; pBe04Mar2014 ;;;
(defun trunc (s m v w)
(atoi (if m
(substr s (+ 2 (vl-string-position v s)))
(substr s (+ 2 (vl-string-position w s nil t)))
)
)
)
(initget "Pack Bolt")
(setq opt (getkword "\nChoose Option "))
(setq var
(if (eq opt "Bolt")
'(77 42"*M##`**")
'(80 45"*PW-*mm")
)
fr (car var)
sy (cadr var))
(if(setq data nil
ss (ssget "_X"
(list '(0 . "TEXT")
(cons 1 (last var))
'(8 . "25_Bolt designation,7_Graphics")
)
)
)
(progn
(repeat (setq i (sslength ss))
(setq e (ssname ss (setq i (1- i))))
(setq data (cons (cdr (assoc 1 (entget e))) data))
)
(setq
data (vl-sort data
'(lambda (b c)
(cond
((< (setq d (trunc b t fr sy )) (setq f (trunc c t fr sy))) t)
((= d f) (< (trunc b nil fr sy) (trunc c nil fr sy)))
)
)
)
)
(While (setq a (car data))
(setq ref (substr a (1+ (vl-string-position (car var) a))))
(setq match (vl-remove-if-not
'(lambda (s) (wcmatch s (strcat "*" ref)))
data
)
)
(princ (strcat "\n"
ref
" = "
(itoa (apply '+
(mapcar '(lambda (k)
(if (zerop (atoi k))
1
(atoi k)
)
)
match
)
)
)
)
)
(setq data (vl-remove-if '(lambda (y) (member y match)) data))
)
)
)
(princ)
)
(vl-load-com)
谢谢你的建议,但我不知道如何做lisp程序。我对此一无所知。
你能帮帮我吗。
我们的一个朋友在某种程度上帮助了我。
谢谢 哇,它的工作非常感谢pBe。。。
谢谢你的帮助。 这个例子为任何感兴趣的人制作一个表格,因为你需要添加这个来制作表格http://www.cadtutor.net/forum/showthread.php?84472-Entmake Table with AutoLISP&高亮显示=Table。
Pbe发布的代码创建了一个名为“Data”的列表,您可以通过(nth 2 Data)查看它。第三个变量从0开始。请参阅示例中的代码需要更改列表的名称。
如果你幸运的话,Pbe会在他的代码中添加一个表。 这是可行的,但要做得更好一些。可以按顺序给出这样的结果吗
无需将此文本设置为表格格式。如下命令提示符中的结果适合我
M16*35=1
M16*45=1
M16*50=16
M16*55=6
M16*60=4
M16*65=126
M16*75=8
M16*70=2
M16*80=2
M24*75=32
M24*95=36
M24*100=12
M24*110=44
对不起,如果我问这是不可能的
谢谢 这是可能的,但你必须等到明天anjan008,我甚至可以添加一个表来配合 谢谢你真是太好了
页:
1
[2]