asos2000 发表于 2022-7-6 10:05:14

如何启动像DInfo一样的lisp

乞丐的问题:
 
如何将数据添加到鼠标指针,例如LEE lisp DInfo?

Lee Mac 发表于 2022-7-6 10:12:41

您需要掌握grRead函数来实现这一点-它跟踪来自鼠标和键盘的所有用户输入,因此在循环中可以连续监视用户输入。

asos2000 发表于 2022-7-6 10:22:14

有一个简单的例子吗?
因为我试着学习DInfo lisp,但失败了。
它的技术比我的一知半解还要高。

Lee Mac 发表于 2022-7-6 10:28:13

你读过grRead上的帮助文件了吗?我可以提供一个例子,但如果你不知道grread是如何工作的,那么它将毫无用处。

asos2000 发表于 2022-7-6 10:29:36

事实上,我确实理解了,但不理解帮助文件。

alanjt 发表于 2022-7-6 10:40:17

我做了一个笨拙的例子。
 
你必须明白,grread既整洁又有趣,但大多数情况下它是无用的,需要付出太多的努力/愤怒才能获得微小的回报。

asos2000 发表于 2022-7-6 10:46:49

这是一个糟糕的开始
从该线程的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)
)

alanjt 发表于 2022-7-6 10:48:02

LWpolyline没有11个代码。如果您只是想要开始和结束,我建议使用vlax curve getStartPoint和vlax curve getEndPoint(不,您不必转换为vla对象)。然而,对于您正在做的事情,我也会过滤多段线,使其只有一段(我认为是dxf代码90);如果需要起点和终点之间的角度,则不希望基于具有75个折弯的多段线进行计算。

alanjt 发表于 2022-7-6 10:56:33

哦,是的,你可能也对grtext感兴趣;它将在AutoCAD窗口的左下角显示您的消息。

Lee Mac 发表于 2022-7-6 10:59:17

我想举个简单的例子:
 

(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
查看完整版本: 如何启动像DInfo一样的lisp