894560869 发表于 2009-8-5 14:54:00

请高手指点这个程序:匹配(修改)标注样式

;;;匹配(修改)标注样式<br/>(defun C:SBB (/ al a2 b1 b2 d1 d2 d3 n index) <br/>(setq a2 (getreal"\n请选取要修改到的尺寸样式(1:GBDIM1&nbsp;&nbsp; ,2:R&nbsp;&nbsp;&nbsp; ,3:X&nbsp;&nbsp;&nbsp; ,4:GBDIM )"))<br/>(if (Or (&gt; i 4) (&lt; i 0) ) (setq i 1))&nbsp; <br/>(princ "\n请选取尺寸来修改:") <br/>(setq al (SSGET '((0 . "dimension")))) <br/>(setq n (SSLENGTH al)) <br/>(setq INDEX 0) <br/>(setq 1 "GBDIM1");指定标注形式<br/>(setq 2 "R")<br/>(setq 3 "X")<br/>(setq 4 "GBDIM")<br/>(setq b2 (entget (car a2))) <br/>(setq d2 (assoc 3 b2)) <br/>(repeat n <br/>(setq b1 (entget (ssname al index))) <br/>(setq d1 (assoc 3 b1)) <br/>(setq d3 (subst d2 d1 b1)) <br/>(entmod d3) <br/>(setq index (+ index 1)))<br/>(graphscr)<br/>(princ))<br/>

ZZXXQQ 发表于 2009-8-5 19:38:00

1、(setq a2 (getreal"\n请选取……中应使用getint函数;<br/>2、(if (Or (&gt; i 4) (&lt; i 0) ) (setq i 1))这句有何作用?<br/>3、数字不能当变量名;

894560869 发表于 2009-8-7 11:54:00

<p>呵呵,学习了.事实上我对LISP不懂!问题还是没解决啊!</p><p>那么阁下以为如何达到我这个目的呢:</p><p>我有标注样式A、B、C。</p><p>输入命令后,当我点选或框选某些尺寸标注时(假定标注样式为B),再输入C即其标注样式变为标注样式C。</p><p>不输入或直接回车所选对象的标注样式都变为标注样式A</p><p>能否帮忙LISP程序实现啊?</p><p>&nbsp;</p>

ZZXXQQ 发表于 2009-8-7 20:47:00


;;;匹配(修改)标注样式
(defun C:SBB (/ al a2 sa b1 i)
(setq a2 (getint "\n请选取要修改到的尺寸样式(1:GBDIM1 ,2:R,3:X   ,4:GBDIM )"))
(setq a2 (if a2 a2 1))
(if (<= 1 a2 4) (progn
(setq sa (nth a2 (list "GBDIM1" "R" "X" "GBDIM")));指定标注形式
(princ "\n请选取尺寸来修改:")
(setq al (SSGET '((0 . "DIMENSION"))))
(setq i 0)
(repeat (sslength a1)
   (setq b1 (entget(ssname al i)))
   (setq b1 (subst (cons 3 sa) (assoc 3 b1) b1))
   (entmod b1)
   (setq i (1+ i))
)
))
(princ)
)

894560869 发表于 2009-8-26 14:19:00

<p>非常感谢版主在百忙看看我这贴!</p><p>我按照阁下的试了下,出现以下的信息能够再帮忙解决下吗?</p><p>请选取要修改到的尺寸样式(1:GBDIM1 ,2:R&nbsp; ,3:X&nbsp;&nbsp; ,4:GBDIM )2<br/>请选取尺寸来修改:<br/>选择对象: 找到 1 个</p><p>选择对象:&nbsp; Error: 参数类型错误: lselsetp nil</p><p></p>

ZZXXQQ 发表于 2009-8-26 20:04:00

第9行al改成a1。即小写字母l改成数字1。

894560869 发表于 2009-8-28 09:47:00

<font color="#0909f7" style="BACKGROUND-COLOR: #ff0000;"><strong>特别致谢ZZXXQQ老兄!</strong></font>

894560869 发表于 2009-8-28 11:51:00

假若我修改的不是标注样式而是文字样式,这个程序又将作些改动可以实现吗?

5061220 发表于 2009-8-29 20:27:00

894560869发表于2009-8-28 11:51:00static/image/common/back.gif假若我修改的不是标注样式而是文字样式,这个程序又将作些改动可以实现吗?

<p>标注参数还要作过多的修改,真有耐心!佩服</p>

894560869 发表于 2009-9-23 13:48:00

能不能把1,2,3,4换成A,B,C,D呢
页: [1] 2
查看完整版本: 请高手指点这个程序:匹配(修改)标注样式