AMTONNY 发表于 2008-10-15 22:24:00

[求助]有关批量标注圆

有人知道批量标注,就是图形内有多个不等直径的圆,如何一次性框选后自动标出所选对象的是半径的就标半径,是直径的就标直径

hnfsf 发表于 2010-6-8 12:29:00

<p><font face="Verdana">(defun c:rds (/ rs n po px py rv ang1 ang2 angc cx cy rslst)<br/>&nbsp; (setq rs (ssget))<br/>&nbsp; (if rs<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (sslength rs)<br/>&nbsp;(setq rslst (entget (ssname rs n)))<br/>&nbsp;(setq po (cdr (assoc 10 rslst)));圆心<br/>&nbsp;(setq px (car po))<br/>&nbsp;(setq py (cadr po))<br/>&nbsp;(setq rv (cdr (assoc 40 rslst)));半径</font></p>
<p><font face="Verdana">&nbsp;(cond<br/>&nbsp;&nbsp; ((= "ARC" (cdr (assoc 0 rslst)))<br/>&nbsp;&nbsp;&nbsp; (setq ang1 (cdr (assoc 50 rslst)))<br/>&nbsp;&nbsp;&nbsp; (setq ang2 (cdr (assoc 51 rslst)))<br/>&nbsp;&nbsp;&nbsp; (setq angc (/ (+ ang2 ang1) 2.0))<br/>&nbsp;&nbsp;&nbsp; (setq cx (+ px (* rv (cos angc))))<br/>&nbsp;&nbsp;&nbsp; (setq cy (+ py (* rv (sin angc))))<br/>&nbsp;&nbsp;&nbsp; (command "DIMRADIUS" (list (ssname rs n) (list cx cy 0)) "")<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; ((= "CIRCLE" (cdr (assoc 0 rslst)))<br/>&nbsp;&nbsp;&nbsp; (setq angc (/ pi 4.0))<br/>&nbsp;&nbsp;&nbsp; (setq cx (+ px (* rv (cos angc))))<br/>&nbsp;&nbsp;&nbsp; (setq cy (+ py (* rv (sin angc))))<br/>&nbsp;&nbsp;&nbsp; (command "DIMDIAMETER" (list (ssname rs n ) (list cx cy 0)) "")<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;(setq n (1+ n))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>)</font></p>

yaokui25 发表于 2012-12-6 22:26:42

QDIM可以实现的

【KAIXIN】 发表于 2018-5-29 14:00:36

vla方式的标注原因,应该没有版本限制

killer9806 发表于 2008-10-15 23:13:00

使用命令QDIM就搞定

OK洪OK888888 发表于 2008-10-16 09:15:00

QDIM是连续标注,不是批量标圆的半径啊

AMTONNY 发表于 2008-10-17 22:07:00

<p>(defun c:rds (/ rs n po px py rv ang1 ang2 angc cx cy rslst)<br/>&nbsp; (setq rs (ssget "c" pt1 pt2 '((0 . "circle"))))<br/>&nbsp; (if rs<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq n 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (repeat (sslength rs)<br/>&nbsp;(setq rslst (entget (ssname rs n)))<br/>&nbsp;(setq po (cdr (assoc 10 rslst)));圆心</p><p>&nbsp;(setq px (car po))<br/>&nbsp;(setq py (cadr po))<br/>&nbsp;(setq rv (cdr (assoc 40 rslst)));半径</p><p>&nbsp;(cond<br/>&nbsp;&nbsp; ((= "ARC" (cdr (assoc 0 rslst)))<br/>&nbsp;&nbsp;&nbsp; (setq ang1 (cdr (assoc 50 rslst)))<br/>&nbsp;&nbsp;&nbsp; (setq ang2 (cdr (assoc 51 rslst)))<br/>&nbsp;&nbsp;&nbsp; (setq angc (/ (+ ang2 ang1) 2.0))<br/>&nbsp;&nbsp;&nbsp; (setq cx (+ px (* rv (cos angc))))<br/>&nbsp;&nbsp;&nbsp; (setq cy (+ py (* rv (sin angc))))<br/>&nbsp;&nbsp;&nbsp; ;(command "DIMRADIUS" (list (ssname rs n) (list cx cy 0)))<br/>;;;&nbsp;&nbsp;&nbsp; (princ "\n poic is")<br/>;;;&nbsp;&nbsp;&nbsp; (princ (list cx cy))<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; ((= "CIRCLE" (cdr (assoc 0 rslst)))<br/>;;;&nbsp;&nbsp;&nbsp; (princ "\n")<br/>;;;&nbsp;&nbsp;&nbsp; (princ "circle")<br/>&nbsp;&nbsp;&nbsp; (setq angc (/ pi 4.0))<br/>&nbsp;&nbsp;&nbsp; (setq cx (+ px (* rv (cos angc))))<br/>&nbsp;&nbsp;&nbsp; (setq cy (+ py (* rv (sin angc))))<br/>;;;&nbsp;&nbsp;&nbsp; (princ "\n poic is")<br/>;;;&nbsp;&nbsp;&nbsp; (princ (list cx cy))<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp; (command "DIMDIAMETER" (list (ssname rs n ) (list cx cy 0)) "")<br/>&nbsp;(setq n (1+ n))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )</p><p>此代码即可解决了</p><p><br/></p>

liu714 发表于 2010-7-5 21:35:00

坎坎坷坷坎坎坷坷坎坎坷坷

zhongys 发表于 2010-7-6 10:22:00

(setq rs (ssget&nbsp; '((0 . "circle,arc"))))<br/>

yxl88168 发表于 2011-3-29 21:27:27

又学到一点,谢谢了

haoryh 发表于 2012-12-6 15:49:08

hnfsf 发表于 2010-6-8 12:29 static/image/common/back.gif
(defun c:rds (/ rs n po px py rv ang1 ang2 angc cx cy rslst)&nbsp; (setq rs (ssget))&nbsp; (if rs&nb ...

能把标注的方向修改到别一边吗?如图:

zdqwy19 发表于 2012-12-6 16:06:53

高版本Cad有圆的快速标注
页: [1] 2
查看完整版本: [求助]有关批量标注圆