[讨论]计算圆孔数量并标注圆孔大小
<p>例如有ABC 3个圆 A 直径10 有5个 B 直径5 有3个 C直径2 有2个</p><p>那会显示10个圆 并在直径10的圆上标注A 在角落旁标注A 有5个 直径10 等等 这些 </p> 你可以在模型空间里遍历圆对象,就可以自动统计圆的个数。对于圆的标注,可以通过已遍历到的圆对象,识别其圆心、半径(或直径)等属性即可完成标注 <font face="Verdana">(defun c:cw ()<br/>;;;----------------------------------------<br/> (defun cwt1 ()<br/> (setq m 0)<br/> (repeat (length lisx)<br/> (setq ps (nth m lisx))<br/> (setq m (1+ m))<br/> (setq px (vl-prin1-to-string (car ps))<br/> py (vl-prin1-to-string (Cadr ps))<br/> )<br/>;;; (setq px (vl-prin1-to-string px)<br/>;;; py (vl-prin1-to-string px)<br/>;;; )<br/> (setq str (strcat "X坐标为:.." px)<br/> str1 (strcat "Y坐标为:.." py)<br/> )<br/> (cwt #pp #hh str)<br/> (cwt (POLAR #pp 0.0 (* #hh 15.0)) #hh str1)<br/> (setq #pp (polar #pp (* pi 1.5) (+ 1.5 #hh)))<br/> )<br/> (setq m nil<br/> ps nil<br/> px nil<br/> py nil<br/> str nil<br/> str1 nil<br/> )<br/> )<br/>;;;----------------------------------------<br/> (defun cwt (#pt #hh txt1)<br/>;;; (if (tblsearch "style" "hz")<br/>;;; (SETVAR "TEXTSTYLE" "hz")<br/>;;; (progn<br/>;;; (command "-style" "hz" "txt,xc02" "" "0.7" "" "" "")<br/>;;; (SETVAR "TEXTSTYLE" "hz")<br/>;;; )<br/>;;; )<br/> (setq #pt (trans #pt 1 0))<br/> (setq eli (list (cons 0 "TEXT")<br/> (cons 7 "HZ")<br/> (CONS 8 "TXT")<br/> (CONS 10 #PT)<br/> (CONS 40 #hh)<br/> (CONS 1 TXT1)<br/> (CONS 41 0.75)<br/> )<br/> )<br/> (ENTMAKE ELI)<br/> (princ)<br/> )<br/>;;;----------------------------------------<br/> (defun ccw2 ()<br/> (vl-load-com)<br/> (SETQ #PP (GETPOINT (list 0 0) "\n 请输入文本的基准点:..."))<br/> (cwt #pp #hh "所选圆实体的圆心,直径列表__前生<OursCAD@21cn.com>")<br/> (setq #pp (polar #pp (* pi 1.5) (+ 2.5 #hh)))<br/> (setq n 0)<br/> (repeat (length lisr)<br/> (setq r (nth n lisr))<br/> (setq n (1+ n))<br/> (setq count 0)<br/> (setq lisx nil)<br/> (setq str (strcat "圆 C"<br/> (rtos n 2 0)<br/> " 列表, 直径为:__"<br/> (vl-prin1-to-string (* 2.0 r))<br/> )<br/> )<br/> (cwt #pp #hh str)<br/> (setq #pp (polar #pp (* pi 1.5) (+ 2.5 #hh)))<br/> (while (< count (sslength ss))<br/> (setq en (ssname ss count))<br/> (setq count (1+ count))<br/> (setq #r (cdr (assoc 40 (entget en))))<br/> (if (= r #r)<br/> (progn<br/> (setq p (trans (cdr (assoc 10 (entget en))) 0 1))<br/> (setq lisx (cons p lisx))<br/> )<br/> ) ;end of if<br/> ) ;end of while<br/> (cwt1)<br/> )<br/> (setq n nil<br/> r nil<br/> count nil<br/> lisx nil<br/> str nil<br/> en nil<br/> #r nil<br/> p nil<br/> )<br/> (setq cwt1 nil<br/> #pp nil<br/> #hh nil<br/> str nil<br/> )<br/> (princ)<br/> )<br/>;;;----------------------------------------<br/> (defun ccw1 ()<br/> (setq count 0)<br/> (setq lisr nil)<br/> (setq #hh nil)<br/> (while (< count (sslength ss))<br/> (setq en (ssname ss count))<br/> (setq r (cdr (assoc 40 (entget en))))<br/> (setq lisr (cons r lisr))<br/> (setq count (1+ count))<br/> )<br/> (setq en nil<br/> r nil<br/> count nil<br/> )<br/> (setq lisr (vl-sort lisr '<))<br/> (setq lisr (sortlist1 lisr))<br/> (IF (NULL<br/> (sETQ #HH (GETDIST "\n 请输入文本的高度<缺省高度为2.5MM>:.."))<br/> )<br/> (SETQ #HH 2.5)<br/> )<br/> (setq n 0)<br/> (repeat (length lisr)<br/> (setq r (nth n lisr))<br/> (setq n (1+ n))<br/> (setq count 0)<br/> (while (< count (sslength ss))<br/> (setq en (ssname ss count))<br/> (setq count (1+ count))<br/> (setq str (strcat "C" (rtos n 2 0)))<br/> (setq #r (cdr (assoc 40 (entget en))))<br/> (if (= r #r)<br/>;;; (if (equal r #r 0.000001)<br/> (progn<br/>;;; (setq ed (entget en))<br/>;;; (entdel en)<br/>;;; (entmake ed)<br/> (setq pt (cdr (assoc 10 (entget en))))<br/>;;; (setq pt (cdr (assoc 10 ed)))<br/> (setq eli (list (cons 0 "TEXT")<br/> (cons 7 "HZ")<br/> (CONS 8 "TXT")<br/> (CONS 10 PT)<br/> (CONS 40 #hh)<br/> (CONS 1 str)<br/> (CONS 41 0.75)<br/> )<br/> )<br/> (ENTMAKE ELI)<br/> (princ)<br/> )<br/> ) ;end of if<br/> ) ;end of while<br/> )<br/> (setq count nil<br/> en nil<br/> r nil<br/> n nil<br/> str nil<br/> pt nil<br/> eli nil<br/> )<br/> (Ccw2)<br/> )<br/>;;;----------------------------------------<br/> (setq ss nil)<br/>;;; (c_hz "HZ" 0.7 0 "TXT.SHX" "1.SHX")<br/> (setq ss (ssget (list (cons 0 "circle,arc"))))<br/> (if ss<br/> (ccw1)<br/> (prompt "\n 未选择到圆实体:..")<br/> )<br/> (setq ccw1 nil<br/> ccw2 nil<br/> )<br/> (setq ss nil<br/> eli nil<br/> )<br/>;;; (prompt (strcat "\n" (getcfg "appdata/tel")))<br/> (prompt " ___circle.lsp")<br/> (princ)<br/>)</font> <p>很久没有来了。</p>
<p>感慨良多。</p>
<p>Hz型自己先建好在用吧。</p>
<p>有问题可以发邮件</p>
<p><a href="mailto:ourscad@21cn.com">ourscad@21cn.com</a></p>
<p>联络。</p> <p>楼上的程序这个<font face="Verdana">SORTLIST1</font>错误</p> 嘻嘻嘻嘻嘻嘻行 选择对象: 指定对角点: 找到 73 个
选择对象:
; 错误: no function definition: SORTLIST1 flytoday 发表于 2012-4-11 13:41
选择对象: 指定对角点: 找到 73 个
选择对象:
; 错误: no function definition: SORTLIST1
是啊,我运行也是这个样子
页:
[1]