AMTONNY 发表于 2011-4-8 22:24:37

<已解决>有关鼠标左右键转换

本帖最后由 AMTONNY 于 2011-4-23 23:33 编辑

    我现需一简单程序,在进行连续标注过程中点右键进行切换,不知哪位版主帮忙写一下,要求如下:
    (command "DIMCONTINUE" )
点右键切换为
    (command "DIMORDINATE" )

xiaxiang 发表于 2011-4-9 23:16:22

本帖最后由 xiaxiang 于 2011-4-9 23:44 编辑






(setq   cmd".DIMCONTINUE")

...

(princ "\n 右键=... /左键=... / 空格;回车=退出:")
    (setq gr (grread nil 4 2)
      ga (car gr)
      gb (cadr gr))
...
(cond
((= ga 3)
       (princ "\n选实体:")
...
)

...
((= 25 ga)(if (= cmd ".DIMCONTINUE") ;;切换.
(progn (princ "\n 模式: ...\n选实体:")(setq cmd ".DIMORDINATE"))
(progn (princ "\n 模式: ...\n选实体:")(setq cmd ".DIMCONTINUE"))
            )
)
...
)


AMTONNY 发表于 2011-4-10 21:31:52

多谢xiaxiang 大侠的指点,但我不会把代码加入我的程序中,麻烦帮忙完善,谢谢!!以下是我的程序:

(defun c:d()
(setvar "orthomode" 1)
(setq bas (getpoint "\n请指定坐标标注原点:"))
(setvar "OSMODE" 0)
(command "UCS" "o" bas);;;将UCS移至标注原
(setvar "OSMODE" 183)
       (command "_dimordinate" pause pause "")
       (command "_DIMCONTINUE");;;;程序到此处运行良好,当我想结束 连续标注 时点击右键,产生了右键的信号,程序如何取得该信号后转入坐标标注,连续标注而不需要退出程序,直到按Esc键退出为止,谢谢
(setq err (getvar "errno"))
(if (= err 52)    (command "_dimordinate" pause pause "")
       (command "_DIMCONTINUE"))


)

AMTONNY 发表于 2011-4-11 22:04:25

各位大侠能不能出手帮忙呀

xiaxiang 发表于 2011-4-12 09:16:21

Let me try if I can do something for you.

AMTONNY 发表于 2011-4-12 19:58:10

谢谢xiaxiang 大侠热心帮忙

xiaxiang 发表于 2011-4-14 16:40:26

不了解您的具体要求,做了个程序,不合适可以商量。

;;;连续标注&坐标标注切换程序0.2
;;;By xiaxiang 明经通道
(defun c:dd (/ bas cmdga gb gr roop sel err )
(setvar "orthomode" 1)
(setq bas (getpoint "\n请指定坐标标注原点:"))
(setvar "OSMODE" 0)
(command "UCS" "o" bas);;;将UCS移至标注原
(setvar "OSMODE" 183)
   (command "_dimordinate" pause pause )
(setq roop T)
(setq   cmd".DIMCONTINUE")
(while roop
(princ "\n 右键=切换标注模式 /左键=选标注实体 :")
    (setq gr (grread nil 4 2)
      ga (car gr)
      gb (cadr gr))
(cond
((and(= ga 3)(= cmd ".DIMCONTINUE"))
(setvar "OSMODE" 183)
(command cmdpause "" "" )
)
((and(= ga 3)(= cmd ".DIMORDINATE"))
(setvar "OSMODE" 695)
(setq sel (car(cdr(nentselp gb))))
(if (= sel nil)
(command cmdpause pause)
(command cmdsel pause)
)
)
((= 11 ga)(if (= cmd ".DIMCONTINUE") ;;切换.
(progn (princ "\n 模式: 坐标标注")(setq cmd ".DIMORDINATE"))
(progn (princ "\n 模式: 连续标注")(setq cmd ".DIMCONTINUE"))
            )
)
)
)
(setq err (getvar "errno"))
(if (= err 52)    (command "_dimordinate" pause pause "")
       (command "_DIMCONTINUE"))
)基本上是揣摩了您的意图编写。

AMTONNY 发表于 2011-4-24 16:20:53

本帖最后由 AMTONNY 于 2011-4-24 21:35 编辑

(defun c:d()
(setvar "orthomode" 1)
(setq bas (getpoint "\n请指定坐标标注原点:"))
(setvar "OSMODE" 0)
(command "UCS" "o" bas);;;将UCS移至标注原

       (command "_dimordinate" "0,0" "-5,0" "")
       (command "_dimordinate" "0,0" "0,-5" "")
(setvar "OSMODE" 183)
       (command "_DIMCONTINUE"))

xiaxiang 发表于 2011-4-24 20:05:08

AMTONNY 发表于 2011-4-24 16:20 static/image/common/back.gif
(defun c:d()
(setvar "orthomode" 1)
(setq bas (getpoint "\n请指定坐标标注原点:"))


就这么简单?不用左右键切换?

AMTONNY 发表于 2011-4-24 21:32:51

谢谢9楼的帮忙,问题目已经解决了,我要的结果就是我上传的程序,谢谢
页: [1] 2
查看完整版本: <已解决>有关鼠标左右键转换