[求助]有关批量标注圆
有人知道批量标注,就是图形内有多个不等直径的圆,如何一次性框选后自动标出所选对象的是半径的就标半径,是直径的就标直径 <p><font face="Verdana">(defun c:rds (/ rs n po px py rv ang1 ang2 angc cx cy rslst)<br/> (setq rs (ssget))<br/> (if rs<br/> (progn<br/> (setq n 0)<br/> (repeat (sslength rs)<br/> (setq rslst (entget (ssname rs n)))<br/> (setq po (cdr (assoc 10 rslst)));圆心<br/> (setq px (car po))<br/> (setq py (cadr po))<br/> (setq rv (cdr (assoc 40 rslst)));半径</font></p><p><font face="Verdana"> (cond<br/> ((= "ARC" (cdr (assoc 0 rslst)))<br/> (setq ang1 (cdr (assoc 50 rslst)))<br/> (setq ang2 (cdr (assoc 51 rslst)))<br/> (setq angc (/ (+ ang2 ang1) 2.0))<br/> (setq cx (+ px (* rv (cos angc))))<br/> (setq cy (+ py (* rv (sin angc))))<br/> (command "DIMRADIUS" (list (ssname rs n) (list cx cy 0)) "")<br/> )<br/> ((= "CIRCLE" (cdr (assoc 0 rslst)))<br/> (setq angc (/ pi 4.0))<br/> (setq cx (+ px (* rv (cos angc))))<br/> (setq cy (+ py (* rv (sin angc))))<br/> (command "DIMDIAMETER" (list (ssname rs n ) (list cx cy 0)) "")<br/> )<br/> )<br/> (setq n (1+ n))<br/> )<br/> )<br/> )<br/>)</font></p> QDIM可以实现的 vla方式的标注原因,应该没有版本限制 使用命令QDIM就搞定 QDIM是连续标注,不是批量标圆的半径啊 <p>(defun c:rds (/ rs n po px py rv ang1 ang2 angc cx cy rslst)<br/> (setq rs (ssget "c" pt1 pt2 '((0 . "circle"))))<br/> (if rs<br/> (progn<br/> (setq n 0)<br/> (repeat (sslength rs)<br/> (setq rslst (entget (ssname rs n)))<br/> (setq po (cdr (assoc 10 rslst)));圆心</p><p> (setq px (car po))<br/> (setq py (cadr po))<br/> (setq rv (cdr (assoc 40 rslst)));半径</p><p> (cond<br/> ((= "ARC" (cdr (assoc 0 rslst)))<br/> (setq ang1 (cdr (assoc 50 rslst)))<br/> (setq ang2 (cdr (assoc 51 rslst)))<br/> (setq angc (/ (+ ang2 ang1) 2.0))<br/> (setq cx (+ px (* rv (cos angc))))<br/> (setq cy (+ py (* rv (sin angc))))<br/> ;(command "DIMRADIUS" (list (ssname rs n) (list cx cy 0)))<br/>;;; (princ "\n poic is")<br/>;;; (princ (list cx cy))<br/> )<br/> ((= "CIRCLE" (cdr (assoc 0 rslst)))<br/>;;; (princ "\n")<br/>;;; (princ "circle")<br/> (setq angc (/ pi 4.0))<br/> (setq cx (+ px (* rv (cos angc))))<br/> (setq cy (+ py (* rv (sin angc))))<br/>;;; (princ "\n poic is")<br/>;;; (princ (list cx cy))<br/> )<br/> )<br/> (command "DIMDIAMETER" (list (ssname rs n ) (list cx cy 0)) "")<br/> (setq n (1+ n))<br/> )<br/> )<br/> )</p><p>此代码即可解决了</p><p><br/></p> 坎坎坷坷坎坎坷坷坎坎坷坷 (setq rs (ssget '((0 . "circle,arc"))))<br/> 又学到一点,谢谢了 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) (setq rs (ssget)) (if rs&nb ...
能把标注的方向修改到别一边吗?如图: 高版本Cad有圆的快速标注
页:
[1]
2