如何启动像DInfo一样的lisp
乞丐的问题:如何将数据添加到鼠标指针,例如LEE lisp DInfo? 您需要掌握grRead函数来实现这一点-它跟踪来自鼠标和键盘的所有用户输入,因此在循环中可以连续监视用户输入。 有一个简单的例子吗?
因为我试着学习DInfo lisp,但失败了。
它的技术比我的一知半解还要高。 你读过grRead上的帮助文件了吗?我可以提供一个例子,但如果你不知道grread是如何工作的,那么它将毫无用处。 事实上,我确实理解了,但不理解帮助文件。 我做了一个笨拙的例子。
你必须明白,grread既整洁又有趣,但大多数情况下它是无用的,需要付出太多的努力/愤怒才能获得微小的回报。 这是一个糟糕的开始
从该线程的lisp开始
但有两个错误
-当指向垂直线时
-当指向pline时
(defun C:IntLine ()
(prompt "\nMove Crosshairs To Inspect Objects.")
(while (and
(setq INPUT (grread T))
(= (car INPUT) 5)
)
(setq INPUT_COORD (cadr INPUT))
(setq ENTITY_FOUND (ssget INPUT_COORD))
(if ENTITY_FOUND
(Progn
(setq ENTITY_LIST (entget (ssname ENTITY_FOUND 0)))
(setq p1 (cdr (assoc 10 ENTITY_LIST)))
(setq p2 (cdr (assoc 11 ENTITY_LIST)))
(setq tan2 (/ (- (cadr p2) (cadr p1)) (- (car p2) (car p1))))
(prompt (strcat "\rObject: " (rtos (abs (* tan2 100))2 2) "% "))
)
)
)
(princ)
) LWpolyline没有11个代码。如果您只是想要开始和结束,我建议使用vlax curve getStartPoint和vlax curve getEndPoint(不,您不必转换为vla对象)。然而,对于您正在做的事情,我也会过滤多段线,使其只有一段(我认为是dxf代码90);如果需要起点和终点之间的角度,则不希望基于具有75个折弯的多段线进行计算。 哦,是的,你可能也对grtext感兴趣;它将在AutoCAD窗口的左下角显示您的消息。 我想举个简单的例子:
(defun TextDisplay ( text / e l gr vs )
(if (setq e
(entmakex
(list
(cons 0 "TEXT")
(cons 10 (getvar 'VIEWCTR))
(cons 40 (/ (getvar 'VIEWSIZE) 30.))
(cons 1 text)
(cons 62 3)
(cons 72 0)
(cons 73 3)
(cons 11 (getvar 'VIEWCTR))
)
)
)
(progn (setq l (entget e))
(while (= 5 (car (setq gr (grread 't 13 0)))) (setq vs (getvar 'VIEWSIZE))
(entupd
(cdr
(assoc -1
(entmod
(subst (cons 11 (trans (polar (cadr gr) (/ pi -4.) (/ vs 20.))1 0)) (assoc 11 l)
(subst (cons 40 (/ vs 30.)) (assoc 40 l) l)
)
)
)
)
)
)
(entdel e)
)
)
(princ)
)
(defun c:test nil (TextDisplay "Lee Mac") (princ))
页:
[1]
2