乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 23|回复: 10

[编程交流] 如何启动像DInfo一样的lisp

[复制链接]

51

主题

481

帖子

457

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
262
发表于 2022-7-6 10:05:14 | 显示全部楼层 |阅读模式
乞丐的问题:
 
如何将数据添加到鼠标指针,例如LEE lisp DInfo?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:12:41 | 显示全部楼层
您需要掌握grRead函数来实现这一点-它跟踪来自鼠标和键盘的所有用户输入,因此在循环中可以连续监视用户输入。
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
262
发表于 2022-7-6 10:22:14 | 显示全部楼层
有一个简单的例子吗?
因为我试着学习DInfo lisp,但失败了。
它的技术比我的一知半解还要高。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:28:13 | 显示全部楼层
你读过grRead上的帮助文件了吗?我可以提供一个例子,但如果你不知道grread是如何工作的,那么它将毫无用处。
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
262
发表于 2022-7-6 10:29:36 | 显示全部楼层
事实上,我确实理解了,但不理解帮助文件。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 10:40:17 | 显示全部楼层
我做了一个笨拙的例子。
 
你必须明白,grread既整洁又有趣,但大多数情况下它是无用的,需要付出太多的努力/愤怒才能获得微小的回报。
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
262
发表于 2022-7-6 10:46:49 | 显示全部楼层
这是一个糟糕的开始
从该线程的lisp开始
 
但有两个错误
-当指向垂直线时
-当指向pline时
 
  1. (defun C:IntLine ()
  2. (prompt "\nMove Crosshairs To Inspect Objects.")
  3. (while (and
  4.    (setq INPUT (grread T))
  5.    (= (car INPUT) 5)
  6.    )
  7.    
  8.      (setq INPUT_COORD (cadr INPUT))
  9.      (setq ENTITY_FOUND (ssget INPUT_COORD))
  10.      (if ENTITY_FOUND
  11. (Progn
  12.   (setq ENTITY_LIST (entget (ssname ENTITY_FOUND 0)))
  13.          (setq p1 (cdr (assoc 10 ENTITY_LIST)))
  14.          (setq p2 (cdr (assoc 11 ENTITY_LIST)))
  15.   (setq tan2 (/ (- (cadr p2) (cadr p1)) (- (car p2) (car p1))))
  16.   (prompt (strcat "\rObject: " (rtos (abs (* tan2 100))2 2) "%                     "))
  17.   
  18.   )
  19. )
  20.    )
  21. (princ)
  22. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 10:48:02 | 显示全部楼层
LWpolyline没有11个代码。如果您只是想要开始和结束,我建议使用vlax curve getStartPoint和vlax curve getEndPoint(不,您不必转换为vla对象)。然而,对于您正在做的事情,我也会过滤多段线,使其只有一段(我认为是dxf代码90);如果需要起点和终点之间的角度,则不希望基于具有75个折弯的多段线进行计算。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 10:56:33 | 显示全部楼层
哦,是的,你可能也对grtext感兴趣;它将在AutoCAD窗口的左下角显示您的消息。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:59:17 | 显示全部楼层
我想举个简单的例子:
 
  1. (defun TextDisplay ( text / e l gr vs )
  2. (if (setq e
  3.        (entmakex
  4.          (list
  5.            (cons 0 "TEXT")
  6.            (cons 10 (getvar 'VIEWCTR))
  7.            (cons 40 (/ (getvar 'VIEWSIZE) 30.))
  8.            (cons 1 text)
  9.            (cons 62 3)
  10.            (cons 72 0)
  11.            (cons 73 3)
  12.            (cons 11 (getvar 'VIEWCTR))
  13.          )
  14.        )
  15.      )
  16.    (progn (setq l (entget e))
  17.      (while (= 5 (car (setq gr (grread 't 13 0)))) (setq vs (getvar 'VIEWSIZE))
  18.        (entupd
  19.          (cdr
  20.            (assoc -1
  21.              (entmod
  22.                (subst (cons 11 (trans (polar (cadr gr) (/ pi -4.) (/ vs 20.))  1 0)) (assoc 11 l)
  23.                  (subst (cons 40 (/ vs 30.)) (assoc 40 l) l)
  24.                )
  25.              )
  26.            )
  27.          )
  28.        )
  29.      )
  30.      (entdel e)
  31.    )
  32. )
  33. (princ)
  34. )
  35. (defun c:test nil (TextDisplay "Lee Mac") (princ))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 21:02 , Processed in 0.567330 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表