vectra 发表于 2015-8-22 13:06:40

提示文字是程序第09行控制的,你可以在这里自己修改

(strcat "\n指定旋转基点或 [选择弧心(A)] <" (vl-princ-to-string *last-rotate-point*) ">:")



"\n指定旋转基点或 [选择弧心(A)]:"

就不会提示上次的点坐标,问题是如果上次没有指定一个点,那将会取默认值0,0,0。如果不在程序中加以提示,你很可能不知道将会以哪个点进行旋转,可能会出现“转飞了”的情形。

fire9527 发表于 2015-8-22 15:39:19

vectra 发表于 2015-8-22 13:06 static/image/common/back.gif
提示文字是程序第09行控制的,你可以在这里自己修改

(strcat "\n指定旋转基点或 [选择弧心(A)] :")


ok,那就这样了,谢谢!

feng83 发表于 2015-8-22 18:35:33

fire9527 发表于 2015-8-22 08:16 static/image/common/back.gif
朋友,选择完需要旋转的图元之后怎么就没反映了?

重新改了下
(DEFUN C:kr1 (/ cmd loop SSet KeyList n step BasePoint0 BasePoint1 BasePoint2)
(SETQ cmd (GETVAR "CMDECHO"))
(SETVAR "CMDECHO" 0)
(SETQ loop 1)
(WHILE loop
    (PROMPT "\n 选择对象 : ")
    (SETQ SSet (SSGET))
    (COND
      ((NULL SSet)(ALERT "没有选中对象!"))
      (T (SETQ loop nil))
      )
    )
(if p1
    (progn
      (setq w (getstring "\n是否以上次的旋转点为基点(确认请直接回车,重新选取点请按任意键) : "))
      (if (= w "")
        (setq p1 p1)
        (progn
          (setq en (entsel "\n选择圆弧(中心为旋转基点): "))
          (setq el (entget(car en)))
          (setq en_typ (cdr (assoc 0 el)))
          (if (or (= en_typ "ARC")(= en_typ "CIRCLE"))
          (setq p1 (cdr (assoc 10 el)))
          (progn
              (setq loop t)
              (while loop
                (setq en (entsel "\n选择圆弧(中心为旋转基点): "))
                (setq en_typ (cdr (assoc 0 (entget(car en)))))
                (if (or (= en_typ "ARC")(= en_typ "CIRCLE"))
                  (setq loop nil)
                  (setq loop t))
                )))))
      )
    (setq p1 (getpoint "指定基点: "))
    );if end
(PRINC "\n Press key:")
(PRINC "\n\t 《Q键 0.1度》《W键 -0.1度》   ")
(PRINC "\n\t 《A键 1度》《S键 -1度》   ")
(TERPRI)
(SETQ KeyList '(3249 50 65 68 81 83 87 119 101 113 32 115 97 100))
(WHILE (and(/= (SETQ n (CADR (GRREAD))) 13)
             (MEMBER n KeyList))
    (COND((= n 113)(COMMAND "ROTATE" SSet "" p1 0.1)(PRINC "\r< q 0.1度 >"))
           ((= n 81)(COMMAND "ROTATE" SSet "" p1 0.1)(PRINC "\r< Q 0.1度 >"))
           ((= n 119)(COMMAND "ROTATE" SSet "" p1 -0.1)(PRINC "\r< w -0.1度 >"))
           ((= n 87)(COMMAND "ROTATE" SSet "" p1 -0.1)(PRINC "\r< W -0.1度 >"))
           ((= n 97) (COMMAND "ROTATE" SSet "" p1 1)(PRINC "\r< a1度>"))
           ((= n 65) (COMMAND "ROTATE" SSet "" p1 1)(PRINC "\r< A1度>"))
           ((= n 115)(COMMAND "ROTATE" SSet "" p1 -1)(PRINC "\r< s -1度>"))
           ((= n 83)(COMMAND "ROTATE" SSet "" p1 -1)(PRINC "\r< S -1度>"))
           ((= n 32))
           )
    );WHILE
(SETVAR "CMDECHO" cmd)
(PRINC)
)
不过二楼vectra已经解决了问题,,

fire9527 发表于 2015-8-22 21:19:57

feng83 发表于 2015-8-22 18:35 static/image/common/back.gif
重新改了下
(DEFUN C:kr1 (/ cmd loop SSet KeyList n step BasePoint0 BasePoint1 BasePoint2)
(SET ...

谢谢你的关注
页: 1 [2]
查看完整版本: 【一个关于旋转的程序求小改】