wang8091 发表于 2010-7-25 11:11:00

[讨论]计算圆孔数量并标注圆孔大小

<p>例如有ABC 3个圆&nbsp; A 直径10 有5个&nbsp;&nbsp;B&nbsp;直径5 有3个&nbsp;&nbsp;&nbsp;C直径2 有2个</p>
<p>那会显示10个圆 并在直径10的圆上标注A&nbsp; 在角落旁标注A&nbsp;有5个&nbsp; 直径10&nbsp; 等等 这些&nbsp; </p>

syk070205 发表于 2010-7-30 11:54:00

你可以在模型空间里遍历圆对象,就可以自动统计圆的个数。对于圆的标注,可以通过已遍历到的圆对象,识别其圆心、半径(或直径)等属性即可完成标注

前生 发表于 2010-8-4 18:32:00

<font face="Verdana">(defun c:cw ()<br/>;;;----------------------------------------<br/>&nbsp; (defun cwt1 ()<br/>&nbsp;&nbsp;&nbsp; (setq m 0)<br/>&nbsp;&nbsp;&nbsp; (repeat (length lisx)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq ps (nth m lisx))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq m (1+ m))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq px (vl-prin1-to-string (car ps))<br/>&nbsp;&nbsp;&nbsp;&nbsp; py (vl-prin1-to-string (Cadr ps))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq px (vl-prin1-to-string px)<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; py (vl-prin1-to-string px)<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq str&nbsp; (strcat "X坐标为:.." px)<br/>&nbsp;&nbsp;&nbsp;&nbsp; str1 (strcat "Y坐标为:.." py)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cwt #pp #hh str)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cwt (POLAR #pp 0.0 (* #hh 15.0)) #hh str1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq #pp (polar #pp (* pi 1.5) (+ 1.5 #hh)))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq m&nbsp;&nbsp;&nbsp; nil<br/>&nbsp;&nbsp; ps&nbsp;&nbsp; nil<br/>&nbsp;&nbsp; px&nbsp;&nbsp; nil<br/>&nbsp;&nbsp; py&nbsp;&nbsp; nil<br/>&nbsp;&nbsp; str&nbsp; nil<br/>&nbsp;&nbsp; str1 nil<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>;;;----------------------------------------<br/>&nbsp; (defun cwt (#pt #hh txt1)<br/>;;;&nbsp;&nbsp;&nbsp; (if&nbsp;(tblsearch "style" "hz")<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SETVAR "TEXTSTYLE" "hz")<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>;;;&nbsp;(command "-style" "hz" "txt,xc02" "" "0.7" "" "" "")<br/>;;;&nbsp;(SETVAR "TEXTSTYLE" "hz")<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>;;;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq #pt (trans #pt 1 0))<br/>&nbsp;&nbsp;&nbsp; (setq eli (list (cons 0 "TEXT")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 7 "HZ")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONS 8 "TXT")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONS 10 #PT)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONS 40 #hh)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONS 1 TXT1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONS 41 0.75)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (ENTMAKE ELI)<br/>&nbsp;&nbsp;&nbsp; (princ)<br/>&nbsp; )<br/>;;;----------------------------------------<br/>&nbsp; (defun ccw2 ()<br/>&nbsp;&nbsp;&nbsp; (vl-load-com)<br/>&nbsp;&nbsp;&nbsp; (SETQ #PP (GETPOINT (list 0 0) "\n 请输入文本的基准点:..."))<br/>&nbsp;&nbsp;&nbsp; (cwt #pp #hh "所选圆实体的圆心,直径列表__前生&lt;OursCAD@21cn.com&gt;")<br/>&nbsp;&nbsp;&nbsp; (setq #pp (polar #pp (* pi 1.5) (+ 2.5 #hh)))<br/>&nbsp;&nbsp;&nbsp; (setq n 0)<br/>&nbsp;&nbsp;&nbsp; (repeat (length lisr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq r (nth n lisr))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n (1+ n))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq count 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq lisx nil)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq str&nbsp;(strcat&nbsp;"圆 C"<br/>&nbsp;&nbsp;&nbsp;(rtos n 2 0)<br/>&nbsp;&nbsp;&nbsp;" 列表, 直径为:__"<br/>&nbsp;&nbsp;&nbsp;(vl-prin1-to-string (* 2.0 r))<br/>&nbsp;&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cwt #pp #hh str)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq #pp (polar #pp (* pi 1.5) (+ 2.5 #hh)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (&lt; count (sslength ss))<br/>&nbsp;(setq en (ssname ss count))<br/>&nbsp;(setq count (1+ count))<br/>&nbsp;(setq #r (cdr (assoc 40 (entget en))))<br/>&nbsp;(if (= r #r)<br/>&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq p (trans (cdr (assoc 10 (entget en))) 0 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq lisx (cons p lisx))<br/>&nbsp;&nbsp; )<br/>&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;;end of if<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;end of while<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cwt1)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq n nil<br/>&nbsp;&nbsp; r nil<br/>&nbsp;&nbsp; count&nbsp;nil<br/>&nbsp;&nbsp; lisx nil<br/>&nbsp;&nbsp; str nil<br/>&nbsp;&nbsp; en nil<br/>&nbsp;&nbsp; #r nil<br/>&nbsp;&nbsp; p nil<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq cwt1 nil<br/>&nbsp;&nbsp; #pp&nbsp; nil<br/>&nbsp;&nbsp; #hh&nbsp; nil<br/>&nbsp;&nbsp; str&nbsp; nil<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (princ)<br/>&nbsp; )<br/>;;;----------------------------------------<br/>&nbsp; (defun ccw1 ()<br/>&nbsp;&nbsp;&nbsp; (setq count 0)<br/>&nbsp;&nbsp;&nbsp; (setq lisr nil)<br/>&nbsp;&nbsp;&nbsp; (setq #hh nil)<br/>&nbsp;&nbsp;&nbsp; (while (&lt; count (sslength ss))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq en (ssname ss count))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq r (cdr (assoc 40 (entget en))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq lisr (cons r lisr))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq count (1+ count))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq en nil<br/>&nbsp;&nbsp; r nil<br/>&nbsp;&nbsp; count&nbsp;nil<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq lisr (vl-sort lisr '&lt;))<br/>&nbsp;&nbsp;&nbsp; (setq lisr (sortlist1 lisr))<br/>&nbsp;&nbsp;&nbsp; (IF&nbsp;(NULL<br/>&nbsp;&nbsp; (sETQ #HH (GETDIST "\n 请输入文本的高度&lt;缺省高度为2.5MM&gt;:.."))<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SETQ #HH 2.5)<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq n 0)<br/>&nbsp;&nbsp;&nbsp; (repeat (length lisr)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq r (nth n lisr))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n (1+ n))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq count 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (&lt; count (sslength ss))<br/>&nbsp;(setq en (ssname ss count))<br/>&nbsp;(setq count (1+ count))<br/>&nbsp;(setq str (strcat "C" (rtos n 2 0)))<br/>&nbsp;(setq #r (cdr (assoc 40 (entget en))))<br/>&nbsp;(if (= r #r)<br/>;;;&nbsp;(if (equal r #r 0.000001)<br/>&nbsp;&nbsp; (progn<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (setq ed (entget en))<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (entdel en)<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (entmake ed)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq pt (cdr (assoc 10 (entget en))))<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt (cdr (assoc 10 ed)))<br/>&nbsp;&nbsp;&nbsp;&nbsp; (setq eli (list (cons 0 "TEXT")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 7 "HZ")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONS 8 "TXT")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONS 10 PT)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONS 40 #hh)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONS 1 str)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (CONS 41 0.75)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (ENTMAKE ELI)<br/>&nbsp;&nbsp;&nbsp;&nbsp; (princ)<br/>&nbsp;&nbsp; )<br/>&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;;end of if<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;end of while<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (setq count&nbsp;nil<br/>&nbsp;&nbsp; en nil<br/>&nbsp;&nbsp; r nil<br/>&nbsp;&nbsp; n nil<br/>&nbsp;&nbsp; str nil<br/>&nbsp;&nbsp; pt nil<br/>&nbsp;&nbsp; eli nil<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (Ccw2)<br/>&nbsp; )<br/>;;;----------------------------------------<br/>&nbsp; (setq ss nil)<br/>;;;&nbsp; (c_hz "HZ" 0.7 0 "TXT.SHX" "1.SHX")<br/>&nbsp; (setq ss (ssget (list (cons 0 "circle,arc"))))<br/>&nbsp; (if ss<br/>&nbsp;&nbsp;&nbsp; (ccw1)<br/>&nbsp;&nbsp;&nbsp; (prompt "\n 未选择到圆实体:..")<br/>&nbsp; )<br/>&nbsp; (setq&nbsp;ccw1 nil<br/>&nbsp;ccw2 nil<br/>&nbsp; )<br/>&nbsp; (setq&nbsp;ss&nbsp; nil<br/>&nbsp;eli nil<br/>&nbsp; )<br/>;;;&nbsp; (prompt (strcat "\n" (getcfg "appdata/tel")))<br/>&nbsp; (prompt " ___circle.lsp")<br/>&nbsp; (princ)<br/>)</font>

前生 发表于 2010-8-4 18:33:00

<p>很久没有来了。</p>
<p>感慨良多。</p>
<p>Hz型自己先建好在用吧。</p>
<p>有问题可以发邮件</p>
<p><a href="mailto:ourscad@21cn.com">ourscad@21cn.com</a></p>
<p>联络。</p>

AMTONNY 发表于 2010-8-13 16:26:00

<p>楼上的程序这个<font face="Verdana">SORTLIST1</font>错误</p>

jslxt 发表于 2011-10-22 19:57:53

嘻嘻嘻嘻嘻嘻行

flytoday 发表于 2012-4-11 13:41:58

选择对象: 指定对角点: 找到 73 个
选择对象:
; 错误: no function definition: SORTLIST1

至今没学会 发表于 2020-5-6 17:37:21

flytoday 发表于 2012-4-11 13:41
选择对象: 指定对角点: 找到 73 个
选择对象:
; 错误: no function definition: SORTLIST1

是啊,我运行也是这个样子
页: [1]
查看完整版本: [讨论]计算圆孔数量并标注圆孔大小