需要帮助制定常规
我在工作中使用autocad 2000为CAM创建图形。每次加工路径的编号在521-850(这是块名)之间,编号在整个范围内使用,不按顺序排列。我想做的是,用一个命令在0,0处一次性插入这些编号的块。问题一:我能用autolisp得到一个只包含块名的列表吗?问题2:我可以用某种条件过滤块名吗?还是我必须换一种方式? 看看这个。。。将在坐标0,0,0处插入所有块,并将插入块的名称打印到命令行。。(defun c:TesT (/ Block Blockname lst)
(while
(setq Block (tblnext "BLOCK" (null Block)))
(entmake
(list '(0 . "INSERT")
(cons 10 '(0. 0. 0.))
(cons 2 (setq Blockname (cdr (assoc 2 Block))))
'(41 . 1.)
'(42 . 1.)
'(43 . 1.)
'(50 . 0.)
)
)
(setq lst (cons Blockname lst))
)
(print lst)
(princ)
)
谢谢你,伙计!太糟糕了,我不得不等到今晚上班再试试。
没问题,
忘了说,欢迎来到论坛。
塔瓦特 也许是这样:
(defun BlocksFound(/a b)(while(setq a(tblnext“BLOCK”(null a))(if(and(/=4(logand 4(cdr(assoc 70 a))))(if(assoc 1 a)(not(findfile(cdr(assoc 1 a)))T))(setq b(cons(cdr(assoc 2 a))b)))b)(defun sortblocklist()(vl sort(BlocksFound)“(lambda b)(<a b))(defun filterblocklist(/pref stno enno no blname filtbllst)(setq pref(getstring T“\n块的输入前缀:”)(setq stno(getint“\n过滤块列表的输入开始编号:”)(setq enno(getint“\n过滤块列表的输入结束编号:”)(setq no(-stno 1))(而( 效果很好,马尔科!我只是用我需要的起始和结束数字切换了用户输入。我很感激。
页:
[1]