没时间了。GRVEC和Grread
所有人的问题,特别是李:(想你几乎总是使用这个函数)。I nedd模块:
Grvecs弧形橡胶线。
(defun GV-ARL(startpt secondpt)
???
)
(等待终点时绘制弹性线)
与本机弧函数相同的行为。
谢谢大家在Lisp大师面前。 (命令“arc”startpt secondpt pause)
尝试这样的操作,暂停将等待用户选择终点。 正如约翰所说,这真的需要使用GRVEC吗。。。?
请记住,GRVEC需要位于grRead循环内以跟踪鼠标移动-因此OSNAP/ortho已退出(除非模仿),并且您将失去大多数其他功能。 我不得不同意,似乎有很多工作可以通过使用命令来实现。
我一直使用它放置一个带有2个点的圆弧,然后我可以输入半径。
;arc by 2 selected endpoints, then entering or selecting radius
(defun c:AR ( / point_1 point_2 )
(if
(and
(setq point_1 (getpoint "\nPick 1st Point: "))
(setq point_2 (getpoint point_1 "\nPick 2nd Point: "))
);and
(command "_.arc" "_non" point_1 "_e" "_non" point_2 "_r")
(princ "\nMissed, try again.")
);if
(princ)
);defun 是的。暂停命令。
当然,我已经知道了,但我已经放弃了命令调用
几年前我的子程序。
我想,这必须留下。
谢谢 用vl cmdf伪装 您不必使用暂停,只需在发出命令之前尽可能多地设置命令。 我只是好奇,可以更详细地解释一下你想要什么。
看起来你有一个例程,你正在通过它2个增强(pt1 pt2)
然后您希望用户选择pt3。
然后呢? 这是我的潜艇,这是我要的表格。
这当然管用,但我不喜欢使用命令调用。
无论如何,我认为使用GRVEC和grread将是一个微弱的解决方案。
谢谢你抽出时间
;;¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
;; ARC RUBBER LINE (GETPOINT manner)
;; arg p1 p2 string > ret point or nil
;; (GETARCLASTPOINT (GETPOINT) (GETPOINT) "Specify end point of arc:")
;; (GETARCLASTPOINT (GETPOINT) (GETPOINT) NIL)
;;____________________________________________________________________
(DEFUN GETARCLASTPOINT (_pt1 _pt2 _msg`str / *-nm *-ce *-pt)
(SETQ *-ce (GETVAR "cmdecho")
*-nm (GETVAR "nomutt")
)
(PROGN (SETVAR "cmdecho" 1) (SETVAR "nomutt" 0))
(IF _msg`str
(PROMPT (STRCAT "\n" _msg`str))
)
(PROGN (SETVAR "cmdecho" 0) (SETVAR "nomutt" 1))
(IF (VL-CMDF (GETCNAME "_ARC") _pt1 _pt2 "\\")
(PROGN (SETQ *-pt (GETVAR "LASTPOINT")) (ENTDEL (ENTLAST)))
)
(PROGN (SETVAR "cmdecho" *-ce) (SETVAR "nomutt" *-nm))
*-pt
)
我删除了一些“progn”(不是必需的),添加了一个错误处理程序来修复cmdecho,删除了nomutt(没有任何必要),并在消息提示中显示默认值if nil。
(DEFUN GETARCLASTPOINT (_pt1 _pt2 _msg`str / *error* *-ce _msg`str *-pt)
(defun *error* (msg)
(and *-ce (setvar "cmdecho" *-ce))
) ;_ defun
(SETQ *-ce (GETVAR "cmdecho"))
(SETVAR "cmdecho" 0)
(or _msg`str (setq _msg`str (strcat "\nSpecify point: ")))
(PROMPT (STRCAT "\n" _msg`str))
(IF (VL-CMDF (GETCNAME "_ARC") _pt1 _pt2 "\\")
(PROGN (SETQ *-pt (GETVAR "LASTPOINT")) (ENTDEL (ENTLAST)))
) ;_ IF
(*error* nil)
*-pt
) ;_ DEFUN
你的眼睛没问题,只要一双眼睛就行了。
页:
[1]
2