CAD里标注圆直径。选择圆后,提示所选对象不是圆弧或圆。
本帖最后由 脚印2012 于 2021-6-13 16:28 编辑求助大神们:在CAD里标注圆直径。选择圆后,提示所选对象不是圆弧或圆。由于有很多这种看似是圆,但是标注不了半径。所以求助大神们怎么才能将图里很多的这种看似圆,转换成实际的圆。本想一个一个重新画。实在是圆太多了。谢谢大神们。能给解决下吗。谢谢
(defun c:tt (/ ss n ent para p1 p2 p3)
(if (setq ss (ssget '((0 . "LWPOLYLINE"))))
(repeat (setq n (sslength ss))
(setq ent (ssname ss (setq n (1- n)))
para (vlax-curve-getEndParam ent)
p1 (vlax-curve-getPointAtParam ent 0)
p2 (vlax-curve-getPointAtParam ent (fix (* para 0.33)))
p3 (vlax-curve-getPointAtParam ent (fix (* para 0.66)))
)
(pt3a p1 p2 p3)
(entdel ent)
)
)
(princ)
)
(defun pt3a (pt1 pt2 pt3) ;pt1以及pt3为起始点,pt2为中间的一点.
;;;==================================
;;;(setq pt1 (list (nth 0 pt1) (nth 1 pt1) 0.0)
;;; pt2 (list (nth 0 pt2) (nth 1 pt2) 0.0)
;;; pt3 (list (nth 0 pt3) (nth 1 pt3) 0.0)
;;;)
(if
(setq cent
(Inters
(polar pt1 (angle pt1 pt2) (* 0.5 (distance pt1 pt2)))
(polar (polar pt1 (angle pt1 pt2) (* 0.5 (distance pt1 pt2)))
(+ (* 0.5 pi) (angle pt1 pt2))
1.0
)
(polar pt3 (angle pt3 pt2) (* 0.5 (distance pt3 pt2)))
(polar (polar pt3 (angle pt3 pt2) (* 0.5 (distance pt3 pt2)))
(+ (* 0.5 pi) (angle pt3 pt2))
1.0
)
nil
)
) ;假如有交点,则可以做园,否则做直线
(entmake (list (cons 0 "circle")
(cons 8 "ok")
(cons 10 cent)
(cons 40 (distance cent pt1))
(cons 62 102)
)
) (entmake (list (cons 0 "line")
(cons 8 "ok")
(cons 10 pt1)
(cons 11 pt2)
(cons 62 102)
)
)
)
(princ)
) xj6019 发表于 2021-6-13 11:22
(defun c:tt (/ ss n ent para p1 p2 p3)
(if (setq ss (ssget '((0 . "LWPOLYLINE"))))
(repeat ...
你好。运行了下。好像不行。能下载下我发的图。测试下。我运行了下。不行。麻烦了。谢谢大哥 你的文件里的都是两个半圆组成的一个圆吧,直接合并一下不行吗 xj6019 发表于 2021-6-13 15:16
你的文件里的都是两个半圆组成的一个圆吧,直接合并一下不行吗
他是一个整体,我看了下不是两个半圆。用炸开命令还炸不开。好奇怪。用圆直径标注。提示不是圆。 (defun c:YTZY ()
(if (setq ss (ssget '((0 . "ELLIPSE"))))
(progn
(setq i -1)
(while (setq s1 (ssname ss (setq i (1+ i))))
(setq en (entget s1)
pt (cdr (assoc 10 en))
rr (caddr (assoc 11 en))
RRA(* RR 1.41422712487)
)
(command "circle" "non" pt RRA)
)
(command "erase" ss "")
)
)
(princ)
)
脚印2012 发表于 2021-6-13 15:28
他是一个整体,我看了下不是两个半圆。用炸开命令还炸不开。好奇怪。用圆直径标注。提示不是圆。
新代码测试过可用 xj6019 发表于 2021-6-13 16:29
(defun c:YTZY ()
(if (setq ss (ssget '((0 . "ELLIPSE"))))
(progn
可以了。非常感谢。谢谢。
页:
[1]