乐筑天下

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

[编程交流] 更改块引用的LISP

[复制链接]

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:24:52 | 显示全部楼层 |阅读模式
我已经将1000多个块参照点导入AutoCAD。我想把这些块参考“十字准线”转换成圆圈。我希望这些圆的直径与数据集中的高程数相对应。如果你想知道我为什么想要这个,我正在试着在一个绘图中绘制一张树的地图,直径是我想要为每棵树显示的关键信息之一。以PENZD样式输入数据限制了显示的信息量,因为我只需要2D地图,所以高程表示直径。
 
我有一个将点转换为圆的lisp代码,但我还没有找到将块参照数据转换为圆的方法。如果有人能写下这段代码或指导我如何实现这一点,我将不胜感激。谢谢
回复

使用道具 举报

32

主题

87

帖子

52

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
164
发表于 2022-7-6 09:30:07 | 显示全部楼层
你可以用我的Lisp程序进行测试
  1. (defun c:GGG ()  (defun mid (ent / p1 p2)    (vla-getboundingbox (vlax-ename->vla-object ent) 'p1 'p2)    (setq p1 (vlax-safearray->list p1)          p2 (vlax-safearray->list p2)          pt (mapcar '+ p1 p2)          pt (mapcar '* pt '(0.5 0.5 0.5))    )    pt  )  (setq src (car (entsel "\nDoi tuong can di chuyen: ")))  (redraw src 3)  (setq des (car (entsel "\nDoi tuong dich: ")))  (redraw src 4)  (setq oldos (getvar "osmode"))  (setvar "osmode" 0)  (command ".move" src "" (mid src) (mid des))  (setvar "osmode" oldos)  (princ))(vl-load-com)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:34:52 | 显示全部楼层
因为我今天感觉很慷慨
 
  1. (defun c:test ( / el i pt ss x )
  2. (if (setq ss (ssget "_:L" '((0 . "INSERT"))))
  3.    (repeat (setq i (sslength ss))
  4.      (setq el (entget (ssname ss (setq i (1- i))))
  5.            pt (cdr (assoc 10 el))
  6.      )
  7.      (if
  8.        (entmakex
  9.          (append
  10.            (list
  11.              (cons 0 "CIRCLE")
  12.              (list 10 (car pt) (cadr pt) 0.)
  13.              (cons 40 (if (equal 0.0 (last pt) 1e- 1.0 (abs (/ (last pt) 2.))))
  14.            )
  15.            (apply 'append
  16.              (mapcar
  17.               '(lambda ( x ) (if (assoc x el) (list (assoc x el))))
  18.               '(8 6 39 48 62 210)
  19.              )
  20.            )
  21.          )
  22.        )
  23.        (entdel (cdr (assoc -1 el)))
  24.      )
  25.    )
  26. )
  27. (princ)
  28. )

 
编辑:刚刚注意到您需要2D表示,代码已更新。
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:37:28 | 显示全部楼层
所以可能是操作员,但我无法让任何一个代码工作。我将它们复制到vlisp中,并将其保存为LISP,然后通过加载它们来运行它们。十字准线的形状没有改变。我输入的代码有误吗?谢谢你花时间写代码,v&leemac
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:41:38 | 显示全部楼层
使用我的程序选择块时会发生什么?你有错误吗?
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:45:35 | 显示全部楼层
第一次,它将我在工作区中的所有点和其他文件发送到一个模板中。事情就是这样。后来我试了几次,什么都没发生。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:49:55 | 显示全部楼层
文件夹?样板你在说什么?这应该是一个选择块并将其转换为圆的例子——这是一个非常简单的代码,不会有太多错误。
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:53:16 | 显示全部楼层
我选择了块,将代码输入到命令中,但它不起作用。从那以后,我试着用其他方式来实现它。我可能做错了什么,但我几乎没用过这个软件。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:58:05 | 显示全部楼层
当你说“它不起作用”时,发生了什么?命令行上打印了什么?我有点困惑,因为我在发布之前快速测试了代码,一切都很好。它对其他人有用吗?
回复

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 10:03:43 | 显示全部楼层
上面写着“C:测试”
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 03:27 , Processed in 0.564287 second(s), 72 queries .

© 2020-2025 乐筑天下

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