669423907 发表于 2019-1-7 17:51:32

求助关于标圆心坐标的改正

(defun c:13(/ o s)
        (if (setq o(getpoint"\n请指定坐标原点:"))
                (command "qleader" "non" o "\\" "" "" 0 "" "ucs" o "")
        )
        (while
                (setq o (getpoint"\n请指定坐标点:"))
                (if (setq s (ssget "c" o o '((0 . "circle,arc"))) )
                        (progn (setq s (entget (ssname s 0)) o (cdr (assoc 10 s))) ) ) ;如果选中的是圆或圆弧,则自动移到圆心
                (princ (strcat "\n请指定 "(strcat"X "(rtos(car o)2 2))"   "(strcat"Y "(rtos(cadr o)2 2))" 的文字位置"))
                (command "leader" "non"o"\\" ""(strcat"X "(rtos(car o)2 2))(strcat"Y "(rtos(cadr o)2 2))"")
        ) ;while
        (command "ucs" "w")
        (setq o nil s nil)
        (princ))

我想让程序在点中圆或圆弧的时候,自动跳到圆心上标坐标值,现在自动自动跳到圆心的时候出错了,标注点飞远了,不知道要怎么改,麻烦大师帮改正一下,谢谢了

evayleung 发表于 2019-1-7 17:51:33

(defun c:13(/ o s)
(if (setq o(getpoint"\n请指定坐标原点:"))
    (command "qleader" "non" o "\\" "" "" 0 "" "ucs" o "")
)
(while
    (setq o (getpoint"\n请指定坐标点:"))
    (if (setq s (ssget "c" o o '((0 . "circle,arc"))) )
      (progn
      (setq s (entget (ssname s 0)))
      (SETQ o (trans (cdr (assoc 10 s)) 0 1))
      )
    ) ;如果选中的是圆或圆弧,则自动移到圆心
    (princ (strcat "\n请指定 "(strcat"X "(rtos(car o)2 2))"   "(strcat"Y "(rtos(cadr o)2 2))" 的文字位置"))
    (command "leader" "non"o"\\" ""(strcat"X "(rtos(car o)2 2))(strcat"Y "(rtos(cadr o)2 2))"")
) ;while
(command "ucs" "w")
(setq o nil s nil)
(princ))
试试这样?

依然小小鸟 发表于 2019-1-7 17:53:09

捕捉里面只打开圆心?

669423907 发表于 2019-1-7 17:56:04

依然小小鸟 发表于 2019-1-7 17:53
捕捉里面只打开圆心?

不是,我让它自动找到圆心的
(progn (setq s (entget (ssname s 0)) o (cdr (assoc 10 s))) ) ) ;如果选中的是圆或圆弧,则自动移到圆心

669423907 发表于 2019-1-7 19:52:43

顶起,麻烦大师帮转换一下坐标,谢谢
页: [1]
查看完整版本: 求助关于标圆心坐标的改正