明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2870|回复: 3

【编程申请】批量标半径

[复制链接]
发表于 2007-5-16 01:24:00 | 显示全部楼层 |阅读模式
一般的半径标注都要一个一个的点,有没有多选的那种,所有被选中的曲线都自动标注半径(在曲线中心)。应该还是很实用的,特别是批量的时候,,
发表于 2007-5-31 16:03:00 | 显示全部楼层

试试下面的程序,如果要放到特定的层,自己去加吧

(defun c:rds (/ rs n po px py rv ang1 ang2 angc cx cy rslst)
  (setq rs (ssget '((0 . "arc,circle"))))
  (if rs
    (progn
      (setq n 0)
      (repeat (sslength rs)
 (setq rslst (entget (ssname rs n)))
 (setq po (cdr (assoc 10 rslst)));圆心
;;; (princ "  center is:")
;;; (princ po)
 (setq px (car po))
 (setq py (cadr po))
 (setq rv (cdr (assoc 40 rslst)));半径
;;; (princ "radius is:")
;;; (princ rv)
 (cond
   ((= "ARC" (cdr (assoc 0 rslst)))
;;;    (princ "\n")
;;;    (princ "arc")

    (setq ang1 (cdr (assoc 50 rslst)))
    (setq ang2 (cdr (assoc 51 rslst)))
    (setq angc (/ (+ ang2 ang1) 2.0))
    (setq cx (+ px (* rv (cos angc))))
    (setq cy (+ py (* rv (sin angc))))
;;;    (princ "\n poic is")
;;;    (princ (list cx cy))
   )
   ((= "CIRCLE" (cdr (assoc 0 rslst)))
;;;    (princ "\n")
;;;    (princ "circle")
    (setq angc (/ pi 4.0))
    (setq cx (+ px (* rv (cos angc))))
    (setq cy (+ py (* rv (sin angc))))
;;;    (princ "\n poic is")
;;;    (princ (list cx cy))
   )
 )
    (command "dimradius" (list (ssname rs n) (list cx cy 0)) "")
 (setq n (1+ n))
      )
    )
  )
)

发表于 2007-6-4 08:03:00 | 显示全部楼层
(defun c:test ()
  (setq ss  (ssget '((0 . "ARC,CIRCLE")))
 i   -1
  )
  (while (setq s1 (ssname ss (setq i (1+ i))))
    (setq pt (xyp-get-dxf 10 s1))
    (command "dim" "rad"(list s1 pt)  "" "" "e")
  )
  (princ)
)
(defun xyp-get-DXF (code ename) (cdr (assoc code (entget ename))))
发表于 2008-2-23 19:33:00 | 显示全部楼层

很好  我有时也很用着  但能统计下相同的有几个并能以列表的形式输出就好

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-27 23:15 , Processed in 0.174675 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表