明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1560|回复: 8

[已解答] 批量标注圆弧长度,有问题!!!!

[复制链接]
发表于 2016-1-26 22:09:34 | 显示全部楼层 |阅读模式
各位老师好,写了一个批量标注圆弧长度的代码,执行错误。请各位老师给予指正 谢谢
(defun c:tt()
;以下文件由用户选择
(setvar "CMDECHO" 0)
(setq multi (getvar 'dimlfac));;;add 2002.5.15 can remove
(setq ss (ssget))
(setq l 10)
(setq n (sslength ss))
(repeat n
(setq en (ssname ss (1- n)))
(setq endata(entget en))
(setq entype (cdr (assoc 0 endata)))
(SETQ PC (cdr (ASSOC 10 endata))
  R   (cdr (ASSOC 40 endata))
  PT1 (polar pc (cdr (ASSOC 50 endata)) R)
  PT2 (polar pc (cdr (ASSOC 51 endata)) R)
  pmt(xyp-get-MidPoint pt1 pt2)
  ag(angle pc pmt)
  pt (polar pc ag (+ r l))
)
   (setq angs (assoc 50 endata))
   (setq angs (cdr angs))
   (setq ange (assoc 51 endata))
   (setq ange (cdr ange))
   (setq ang (- ange angs))
   (if (< ang 0)
     (setq ang (- (* 2 pi) (abs ang)))
   )
   (setq larc (* r ang))
   (setq larc (* larc multi));;;add 2002.2.20 can remove
  (setq larc  (rtos larc 2 1))
(command "dimangular"  en "t" larc pt1)
(setq n (1- n))
;;  (command "dimangular"  en "t" larc pt)
)  
(prin1)
)
;;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;; 两点之中点 (xyp-get-MidPoint p1 p2)
(defun xyp-get-MidPoint (p1 p2) (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p1 p2)))






"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2016-1-26 22:57:36 | 显示全部楼层
  1. ;; tt(批量标注圆弧长度)
  2. (defun c:tt ()
  3.   (setvar "CMDECHO" 0)
  4.   (setq ss (ssget '((0 . "arc")))
  5.         i  -1
  6.   )
  7.   (while (setq s1 (ssname ss (setq i (1+ i))))
  8.     (setq pc (xyp-DXF 10 s1)
  9.           pt (xyp-get-CurveMidPoint s1)
  10.           pt (polar pt (angle pc pt) 500)
  11.           ll (rtos (xyp-CurveLength s1) 2 2)
  12.     )
  13.     (command "dimangular" (list s1 pmt) "t" ll pt)
  14.   )
  15.   (princ)
  16. )
 楼主| 发表于 2016-1-27 10:19:27 | 显示全部楼层
xyp1964 发表于 2016-1-26 22:57

谢谢院长了    真简练的代码   牛
 楼主| 发表于 2016-1-28 17:24:14 | 显示全部楼层
xyp1964 发表于 2016-1-26 22:57

(defun c:tt()
(setvar "cmdecho" 0)
(setq ss(ssget '((0.arc)))
       i -1
)
(while (setq s1(ssname ss (setq i (1+ i))))
(setq pc (xyp-dxf 10 s1)
       pt(xyp-get-curvemifpoint s1)
       pmt(polar pt (angle pc pt) 500)
       ll(rots (xyp-curvelength s1) 2 2)
)
(command "dimangular" (list s1 pmt) "t" ll pt)
)
(princ)
)
院长  是不是输错了一个  pmt没有定义啊

点评

别瞎改代码  发表于 2016-1-29 18:21
发表于 2016-1-29 18:24:57 | 显示全部楼层
杜阳 发表于 2016-1-28 17:24
(defun c:tt()
(setvar "cmdecho" 0)
(setq ss(ssget '((0.arc)))

用不了也别瞎改:
'((0.arc)) → '((0 . “arc”))
xyp-get-curvemifpoint  → xyp-get-CurveMidPoint
rots → rtos
 楼主| 发表于 2016-1-29 19:21:13 | 显示全部楼层
xyp1964 发表于 2016-1-29 18:24
用不了也别瞎改:
'((0.arc)) → '((0 . “arc”))
xyp-get-curvemifpoint  → xyp-get-CurveMidPoint
...

谁说用不了啊   我能用了   那个代码是照你那个抄错了   调试成功了  有工具箱  什么用不了啊   呵呵

点评

照抄都能抄错?  发表于 2016-1-29 22:31
 楼主| 发表于 2016-1-30 13:38:58 | 显示全部楼层
杜阳 发表于 2016-1-29 19:21
谁说用不了啊   我能用了   那个代码是照你那个抄错了   调试成功了  有工具箱  什么用不了啊   呵呵

[em45
 楼主| 发表于 2016-2-1 09:53:58 | 显示全部楼层
经过学习  修改   我的代码也实现了
(defun c:tt()
;以下文件由用户选择
(setvar "CMDECHO" 0)
(setvar "osmode" 0)
(setq multi (getvar 'dimlfac));;;add 2002.5.15 can remove
(setq ss (ssget))
(setq l 1)
(setq n (sslength ss))
(repeat n
(setq en (ssname ss (1- n)))
(setq endata(entget en))
(setq entype (cdr (assoc 0 endata)))
(SETQ PC (cdr (ASSOC 10 endata))
  R   (cdr (ASSOC 40 endata))
  PT1 (polar pc (cdr (ASSOC 50 endata)) R)
  PT2 (polar pc (cdr (ASSOC 51 endata)) R)
  pmt(PLF-get-MidPoint pt1 pt2)
  ag(angle pc pmt)
  pt (polar pc ag (+ r l))
)
          (setq angs (assoc 50 endata))
          (setq angs (cdr angs))
          (setq ange (assoc 51 endata))
          (setq ange (cdr ange))
          (setq ang (- ange angs))
          (if (< ang 0)
            (setq ang (- (* 2 pi) (abs ang)))
          )
          (setq larc (* r ang))
          (setq larc (* larc multi));;;add 2002.2.20 can remove
  (setq larc  (rtos larc 2 1))

(command "dimangular"  (list en pmt) "t" larc pt)
(setq n (1- n))
)               
(prin1)
)
;;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;; PLF-get-MidPoint 两点之中点 (xyp-get-MidPoint p1 p2)
(defun PLF-get-MidPoint (p1 p2) (mapcar '(lambda (x) (* x 0.5)) (mapcar '+ p1 p2)))

发表于 5 天前 | 显示全部楼层
能不能设置下标注离弧线的距离啊?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-1 09:28 , Processed in 0.213674 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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