乐筑天下

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

[编程交流] 显示delta X和delta Y o

[复制链接]

26

主题

84

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 17:37:15 | 显示全部楼层 |阅读模式
大家好,
 
我在这里找到了Lee的以下代码,它非常接近我需要的,但我需要稍微修改一下,以打印X和Y坐标差(dX,dY)对,而不是距离。有人能帮忙吗?
 
  1. (defun c:dist2 (/ doc spc pt1 pt2 tObj gr)
  2. (vl-load-com)
  3. (or *Mac$Rot* (setq *Mac$Rot* 0.0))
  4. (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)) spc (if (zerop (vla-get-activespace doc)) (if (= (vla-get-mspace doc) :vlax-true)(vla-get-modelspace doc)(vla-get-paperspace doc)) (vla-get-modelspace doc)))
  5. (while
  6.         (and (setq pt1 (getpoint "\nSelect First Point: "))
  7.                  (setq pt2 (getpoint "\nSelect Second Point: " pt1)))
  8.         (vla-put-Alignment (setq tObj (vla-addText spc (rtos (distance pt1 pt2)) (vlax-3D-point '(0 0 0))(getvar "TEXTSIZE"))) acAlignmentMiddleCenter)
  9.         (while
  10.                 (or
  11.                         (and (setq gr (grread t 7 0))
  12.                                  (eq 5 (car gr))
  13.                         )
  14.                         (and (eq 2 (car gr))
  15.                                  (eq 32 (cadr gr)))
  16.                 )
  17.                 (cond ((and (eq 5 (car gr))
  18.                                         (listp (cadr gr))
  19.                                 )
  20.                          (vla-move tObj (vla-get-TextAlignmentPoint tObj) (vlax-3D-point (cadr gr))))
  21.                         (        (and         (eq 2 (car gr))
  22.                                                 (eq 32 (cadr gr))
  23.                                 )
  24.                          (vla-put-Rotation tObj (setq *Mac$Rot* (+ *Mac$Rot* (/ pi 2.))))
  25.                         )
  26.                 )
  27.         )
  28. )
  29. (princ))
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:11:15 | 显示全部楼层
你有超过100个帖子,你现在应该能够做到这一点,非常简单的要求自己至少试一试,如果你弄错了,我们会帮助你。
 
您需要更改此值(setq tObj(vla addText spc(rtos(distance pt1 pt2))而不是distance get这两个X和Y值之间的差
 
  1. (nth pt1 0)
  2. (nth pt1 1)
  3. (nth pt2 0)
  4. (nth pt2 1)
  5. or (car pt1) (cadr pt1)

183717o4f8ofowa5f0aw0y.png
回复

使用道具 举报

26

主题

84

帖子

58

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 18:23:53 | 显示全部楼层
感谢比格尔的激励。问题是我不知道该看哪里。只要你指出那一行代码,我想我已经破解了。
 
看看我是怎么走的(也许在你看来是中世纪!)
 
  1. (defun c:dist2 (/ doc spc pt1 pt2 tObj gr)
  2. (vl-load-com)
  3. (or *Mac$Rot* (setq *Mac$Rot* 0.0))
  4. (setq        doc (vla-get-ActiveDocument (vlax-get-Acad-Object))
  5. spc (if        (zerop (vla-get-activespace doc))
  6.       (if (= (vla-get-mspace doc) :vlax-true)
  7.         (vla-get-modelspace doc)
  8.         (vla-get-paperspace doc)
  9.       )
  10.       (vla-get-modelspace doc)
  11.     )
  12. )
  13. (while
  14.    (and (setq pt1 (getpoint "\nSelect First Point: "))
  15. (setq pt2 (getpoint "\nSelect Second Point: " pt1))
  16.    )
  17. (setq        pt1x (car pt1)
  18.                 pt1y (cadr pt1)
  19.                 pt2x (car pt2)
  20.                 pt2y (cadr pt2)
  21.                 dx        (- pt1x pt2x)
  22.                 dy        (- pt1y pt2y)
  23. )
  24.     (vla-put-Alignment
  25.       (setq tObj (vla-addText spc (strcat "(" (rtos dx) " , " (rtos dy) ")") (vlax-3D-point '(0 0 0)) (getvar "TEXTSIZE") ) )
  26.       acAlignmentMiddleCenter
  27.     )
  28.     (while
  29.       (or
  30. (and (setq gr (grread t 7 0))
  31.       (eq 5 (car gr))
  32. )
  33. (and (eq 2 (car gr))
  34.       (eq 32 (cadr gr))
  35. )
  36.       )
  37. (cond ((and (eq 5 (car gr))
  38.             (listp (cadr gr))
  39.        )
  40.        (vla-move tObj
  41.                  (vla-get-TextAlignmentPoint tObj)
  42.                  (vlax-3D-point (cadr gr))
  43.        )
  44.       )
  45.       ((and (eq 2 (car gr))
  46.             (eq 32 (cadr gr))
  47.        )
  48.        (vla-put-Rotation
  49.          tObj
  50.          (setq *Mac$Rot* (+ *Mac$Rot* (/ pi 2.)))
  51.        )
  52.       )
  53. )
  54.     )
  55. )
  56. (princ)
  57. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:54:57 | 显示全部楼层
这是一个常见的问题,必须获得X-Y值,很高兴你解决了它。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:08 , Processed in 0.976113 second(s), 62 queries .

© 2020-2025 乐筑天下

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