明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: fire9527

[提问] 【一个关于旋转的程序求小改】

[复制链接]
发表于 2015-8-22 13:06:40 | 显示全部楼层
提示文字是程序第09行控制的,你可以在这里自己修改

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



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

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

使用道具 举报

 楼主| 发表于 2015-8-22 15:39:19 | 显示全部楼层
vectra 发表于 2015-8-22 13:06
提示文字是程序第09行控制的,你可以在这里自己修改

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

ok,那就这样了,谢谢!
回复

使用道具 举报

发表于 2015-8-22 18:35:33 | 显示全部楼层
fire9527 发表于 2015-8-22 08:16
朋友,选择完需要旋转的图元之后怎么就没反映了?

重新改了下
(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 '(32  49 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< a  1度>"))
           ((= n 65) (COMMAND "ROTATE" SSet "" p1 1)(PRINC "\r< A  1度>"))
           ((= 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已经解决了问题,,
回复

使用道具 举报

 楼主| 发表于 2015-8-22 21:19:57 | 显示全部楼层
feng83 发表于 2015-8-22 18:35
重新改了下
(DEFUN C:kr1 (/ cmd loop SSet KeyList n step BasePoint0 BasePoint1 BasePoint2)
  (SET ...

谢谢你的关注
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-24 09:44 , Processed in 0.137138 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表