乐筑天下

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

[编程交流] AutoCAD坐标

[复制链接]

11

主题

48

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2022-7-6 15:13:07 | 显示全部楼层 |阅读模式
请帮忙。
我需要一个AutoCAD VBA例程,可以执行以下操作:
1) 拾取现有块以获取其坐标。
2) 拾取另一个块,并将第一个块的坐标放入带有标记“PT1”的拾取块的属性中。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:20:53 | 显示全部楼层
欢迎来到CADTutor CABLTV,希望你喜欢这里。
 
这个帖子可能会在VBA/AutoLISP自定义论坛中得到更多回复,看看你是否可以找一个版主帮你移动它。
 
但是——不要在那个论坛上重复这个帖子——让这个帖子动起来。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:27:19 | 显示全部楼层
实际的要求应该不会太难-我会看看我能为你做些什么
回复

使用道具 举报

14

主题

719

帖子

706

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 15:31:45 | 显示全部楼层
你的愿望是我的命令
 
Cabltv-这是你需要经常做的事情还是一次性的事情?在我看来,可以通过将坐标导出到Excel和。。然后我迷路了。。。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:38:35 | 显示全部楼层
使用此功能,您可以一个接一个地执行以下操作:
 
  1. (defun c:attpt (/ pBlk dBlk ptBlk aEnt aEntLst)
  2. (while (and (setq pBlk (car (entsel "\nSelect Block to Retrieve Coordinates >  ")))
  3.          (setq dBlk (car (entsel "\nSelect Destination Block >  ")))
  4.          (= (cdr (assoc 0 (entget pBlk))) "INSERT" (cdr (assoc 0 (entget dBlk))))
  5.          (= (cdr (assoc 66 (entget dBlk))) 1))
  6.    (setq ptBlk (cdr (assoc 10 (entget pBlk)))
  7.      aEnt (entnext dBlk))
  8.    (while (/= "SEQEND" (cdr (assoc 0 (setq aEntLst (entget aEnt)))))
  9.      (if (= "PT1" (cdr (assoc 2 aEntLst)))
  10.    (progn
  11.    (setq aEntLst (subst (cons 1 (strcat (rtos (car ptBlk) 2 2) ","
  12.                         (rtos (cadr ptBlk) 2 2) ","
  13.                         (rtos (caddr ptBlk) 2 2)))
  14.                 (assoc 1 aEntLst) aEntLst))
  15.    (entmod aEntLst)))
  16.      (setq aEnt (entnext aEnt))))
  17. (command "_regenall")
  18. (princ))
回复

使用道具 举报

11

主题

48

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2022-7-6 15:45:02 | 显示全部楼层
谢谢李。
成功了!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:46:34 | 显示全部楼层
没问题,很高兴它对你有用
 
如果你还有什么问题,尽管问
回复

使用道具 举报

11

主题

48

帖子

40

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2022-7-6 15:54:49 | 显示全部楼层
还有一件事。
它工作得很好,但我需要在拾取具有“PT1”属性的第二个块后停止该功能,而不必按escape键。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:56:48 | 显示全部楼层
我将对其进行修改,但您不必按Esc键,只需单击鼠标右键或按enter键即可。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 16:06:42 | 显示全部楼层
给你,伙计:
 
  1. (defun c:attpt (/ pBlk dBlk ptBlk aEnt aEntLst)
  2. (if (and (setq pBlk (car (entsel "\nSelect Block to Retrieve Coordinates >  ")))
  3.          (setq dBlk (car (entsel "\nSelect Destination Block >  ")))
  4.          (= (cdr (assoc 0 (entget pBlk))) "INSERT" (cdr (assoc 0 (entget dBlk))))
  5.          (= (cdr (assoc 66 (entget dBlk))) 1))
  6.    (progn
  7.    (setq ptBlk (cdr (assoc 10 (entget pBlk)))
  8.      aEnt (entnext dBlk))
  9.    (while (/= "SEQEND" (cdr (assoc 0 (setq aEntLst (entget aEnt)))))
  10.      (if (= "SIZE" (cdr (assoc 2 aEntLst)))
  11.    (progn
  12.    (setq aEntLst (subst (cons 1 (strcat (rtos (car ptBlk) 2 2) ","
  13.                         (rtos (cadr ptBlk) 2 2) ","
  14.                         (rtos (caddr ptBlk) 2 2)))
  15.                 (assoc 1 aEntLst) aEntLst))
  16.    (entmod aEntLst)))
  17.      (setq aEnt (entnext aEnt)))
  18. (command "_regenall")))
  19. (princ))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 19:14 , Processed in 1.207692 second(s), 72 queries .

© 2020-2025 乐筑天下

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