zjwei1162 发表于 2007-5-16 01:24:00

【编程申请】批量标半径

一般的半径标注都要一个一个的点,有没有多选的那种,所有被选中的曲线都自动标注半径(在曲线中心)。应该还是很实用的,特别是批量的时候,,

英雄无敌 发表于 2007-5-31 16:03:00

<p></p><p>试试下面的程序,如果要放到特定的层,自己去加吧</p><p>(defun c:rds (/ rs n po px py rv ang1 ang2 angc cx cy rslst)<br/>&nbsp; (setq rs (ssget '((0 . "arc,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)));圆心<br/>;;;&nbsp;(princ "&nbsp; center is:")<br/>;;;&nbsp;(princ po)<br/>&nbsp;(setq px (car po))<br/>&nbsp;(setq py (cadr po))<br/>&nbsp;(setq rv (cdr (assoc 40 rslst)));半径<br/>;;;&nbsp;(princ "radius is:")<br/>;;;&nbsp;(princ rv)<br/>&nbsp;(cond<br/>&nbsp;&nbsp; ((= "ARC" (cdr (assoc 0 rslst)))<br/>;;;&nbsp;&nbsp;&nbsp; (princ "\n")<br/>;;;&nbsp;&nbsp;&nbsp; (princ "arc")</p><p>&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; (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 "dimradius" (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; )<br/>)</p>

xyp1964 发表于 2007-6-4 08:03:00

(defun c:test ()<br/>&nbsp; (setq&nbsp;ss&nbsp; (ssget '((0 . "ARC,CIRCLE")))<br/>&nbsp;i&nbsp;&nbsp; -1<br/>&nbsp; )<br/>&nbsp; (while (setq s1 (ssname ss (setq i (1+ i))))<br/>&nbsp;&nbsp;&nbsp; (setq pt (xyp-get-dxf 10 s1))<br/>&nbsp;&nbsp;&nbsp; (command "dim" "rad"(list s1 pt)&nbsp; "" "" "e")<br/>&nbsp; )<br/>&nbsp; (princ)<br/>)<br/>(defun xyp-get-DXF (code ename) (cdr (assoc code (entget ename))))

flfcegu168 发表于 2008-2-23 19:33:00

<p>很好&nbsp; 我有时也很用着&nbsp; 但能统计下相同的有几个并能以列表的形式输出就好</p>
页: [1]
查看完整版本: 【编程申请】批量标半径