求一个,3切点画圆的程序
如题,选定3个切点,画出一个最大圆,若得出的圆小于等于φ1.0,则直接输出
若得出的圆大于φ1.0,则输出φ1.0
(defun c:test(/ e1 e2 o2)
(setvar "cmdecho" 0)
(setq e1(entlast))
(princ "请连续选择三个切点")
(command ".circle" "_3p" "tan" pause "tan" pause "tan" pause)
(setq e2(entlast))
(if(null(eq e1 e2))
(if(>(vla-get-Diameter(setq o2(vlax-ename->vla-object e2)))1.0)(vla-put-Diameter o2 1.0))
)
(prin1)
) 是不是就是求三角形(闭合多段线)的内切圆?然后圆的半径<=1.0? (command"circle""3p""tan"pause"tan"pause"tan"pause)
(defun c:3dqxy()
(setq osm (getvar "osmode"))
(setvar "cmdecho" 0)
(setvar "osmode" 512)
(while (and (setq p1 (getpoint "\n第1点p1:"))
(setq p2 (getpoint p1 "\n第2点p2:"))
(setq p3 (getpoint p1 "\n第1点p3:"))
)
(setvar "osmode" 0)
(command ".circle" "_3p" "tan" p1 "tan" p2 "tan" p3)
(setq dxf (entget (entlast)))
(setq R (cdr (assoc 40 dxf)))
(if (> R 1.0)
(entmod (setq dxf (subst (cons 40 1.0) (assoc 40 dxf) dxf)))
)
(setvar "osmode" 512)
)
(setvar "osmode" osm)
(setvar "cmdecho" 1)
(princ)
) 本帖最后由 htlaser 于 2021-11-1 14:40 编辑
多边形的最大内接圆 yshf 发表于 2021-11-1 08:40
(defun c:3dqxy()
(setq osm (getvar "osmode"))
(setvar "cmdecho" 0)
输入R大小呢 LYC688 发表于 2022-8-26 05:00
输入R大小呢
(defun c:3dqxy()
(setq osm (getvar "osmode"))
(setvar "cmdecho" 0)
(setvar "osmode" 512)
(if (= (setq RR (getreal "\n最大半径R<1.0>=")) nil)
(setq RR 1.0)
)
(while (and (setq p1 (getpoint "\n第1点p1:"))
(setq p2 (getpoint p1 "\n第2点p2:"))
(setq p3 (getpoint p1 "\n第1点p3:"))
)
(setvar "osmode" 0)
(command ".circle" "_3p" "tan" p1 "tan" p2 "tan" p3)
(setq dxf (entget (entlast)))
(setq R (cdr (assoc 40 dxf)))
;(if (> R 1.0)
(if (> R RR)
(entmod (setq dxf (subst (cons 40 1.0) (assoc 40 dxf) dxf)))
)
(setvar "osmode" 512)
)
(setvar "osmode" osm)
(setvar "cmdecho" 1)
(princ)
)
yshf 发表于 2022-8-26 10:17
(defun c:3dqxy()
(setq osm (getvar "osmode"))
(setvar "cmdecho" 0)
一样是R1.0。输入多少都是R1.0 htlaser 发表于 2021-11-1 14:38
多边形的最大内接圆
批量就更牛
页:
[1]
2