zm880928 发表于 2021-10-30 14:02:26

求一个,3切点画圆的程序

如题,选定3个切点,画出一个最大圆,
若得出的圆小于等于φ1.0,则直接输出
若得出的圆大于φ1.0,则输出φ1.0

xtjd 发表于 2021-10-30 14:02:27

(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)
)

tigcat 发表于 2021-10-30 21:57:46

是不是就是求三角形(闭合多段线)的内切圆?然后圆的半径<=1.0?

tigcat 发表于 2021-10-30 22:23:02

(command"circle""3p""tan"pause"tan"pause"tan"pause)

yshf 发表于 2021-11-1 08:40:45

(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:38:49

本帖最后由 htlaser 于 2021-11-1 14:40 编辑

多边形的最大内接圆

LYC688 发表于 2022-8-26 05:00:21

yshf 发表于 2021-11-1 08:40
(defun c:3dqxy()
    (setq osm (getvar "osmode"))
    (setvar "cmdecho" 0)


输入R大小呢

yshf 发表于 2022-8-26 10:17:57

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)
)

LYC688 发表于 2022-8-31 01:50:12

yshf 发表于 2022-8-26 10:17
(defun c:3dqxy()
    (setq osm (getvar "osmode"))
    (setvar "cmdecho" 0)


一样是R1.0。输入多少都是R1.0

LYC688 发表于 2022-12-9 12:26:20

htlaser 发表于 2021-11-1 14:38
多边形的最大内接圆

批量就更牛
页: [1] 2
查看完整版本: 求一个,3切点画圆的程序