lohas1118 发表于 2012-2-3 11:51:47

求两点画椭圆程序.



求两点画椭圆程序,宽度为3.0,希望大家多多支持.

langjs 发表于 2012-2-3 11:51:48

题意不是太明白,不知道这个行不行
(defun c:tuoy ( / pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 r snap)
(setvar "cmdecho" 0)
(setq pt1 (getpoint "\n指定第一点")
        pt2 (getpoint pt1 "\n指定下一点")
        r (angle pt1 pt2)
        pt3 (polar pt1 (+ (* 0.5 pi) r) 1.5)
        pt4 (polar pt1 (+ pi r) 1.5)
        pt5 (polar pt1 (+ (* 1.5 pi) r) 1.5)
        pt6 (polar pt2 (+ (* 0.5 pi) r) 1.5)
        pt7 (polar pt2 r 1.5)
        pt8 (polar pt2 (+ (* 1.5 pi) r) 1.5)
        snap (getvar "osmode")
)
(setvar "osmode" 0)
(command ".undo" "be")
(command ".line" pt6 pt3 "")
(command ".arc" pt3 pt4 pt5)
(command ".line" pt5 pt8 "")
(command ".arc" pt8 pt7 pt6)
(command ".undo" "e")
(setvar "osmode" snap)
(princ)
)

lohas1118 发表于 2012-2-3 14:24:05

langjs 发表于 2012-2-3 14:20 static/image/common/back.gif
题意不是太明白,不知道这个行不行
(defun c:tuoy ( / pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 r snap)
(setv ...

谢谢,正是我所需要的.

langjs 发表于 2012-2-3 15:32:51

稍微修改一下,可以设置宽度
(defun c:tuoy (/ pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 r s snap)
(setvar "cmdecho" 0)
(if (null dbak)
    (setq dbak 3.0)
)
(initget "S ")
(if (= (setq pt1 (getpoint (strcat "\n指定第一点[当前椭圆宽" (rtos dbak 2 2) ",重设(S)]:")))
       "S"
      )
    (if (setq s (getreal (strcat "\n椭圆宽:<" (rtos dbak 2 2) ">")))
      (setq dbak s)
    )
)
(if (= (type pt1) 'list)
    (if (setq pt2 (getpoint pt1 "\n指定下一点:"))
      (progn
        (setq r (angle pt1 pt2)
              pt3 (polar pt1 (+ (* 0.5 pi) r) (* 0.5 dbak))
              pt4 (polar pt1 (+ pi r) (* 0.5 dbak))
              pt5 (polar pt1 (+ (* 1.5 pi) r) (* 0.5 dbak))
              pt6 (polar pt2 (+ (* 0.5 pi) r) (* 0.5 dbak))
              pt7 (polar pt2 r (* 0.5 dbak))
              pt8 (polar pt2 (+ (* 1.5 pi) r) (* 0.5 dbak))
              snap (getvar "osmode")
        )
        (setvar "osmode" 0)
        (command ".undo" "be")
        (command ".line" pt6 pt3 "")
        (command ".arc" pt3 pt4 pt5)
        (command ".line" pt5 pt8 "")
        (command ".arc" pt8 pt7 pt6)
        (command ".undo" "e")
        (setvar "osmode" snap)
      )
    )
)
(princ)
)

lohas1118 发表于 2012-2-3 15:59:13

langjs 发表于 2012-2-3 15:32 static/image/common/back.gif
稍微修改一下,可以设置宽度
(defun c:tuoy (/ pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 r s snap)
(setvar "c ...

非常感谢,好人一生平安

xiaxiang 发表于 2012-2-3 15:59:49

这哪是椭圆?应该是画键槽的程序吧

lohas1118 发表于 2012-2-3 16:02:07

xiaxiang 发表于 2012-2-3 15:59 static/image/common/back.gif
这哪是椭圆?应该是画键槽的程序吧

大概就是这个意思,小弟没表达清楚,还望见谅.

fangseng 发表于 2023-10-26 14:39:50

langjs大侠,图形是散的,能不能做成一个闭合的线?
页: [1]
查看完整版本: 求两点画椭圆程序.