乐筑天下

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

[编程交流] lisp以缩放到新导入的

[复制链接]

2

主题

12

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:10:08 | 显示全部楼层 |阅读模式
大家好,
 
我使用lee mac的lisp(pointsin-v1.0.13)从文本文件导入点,并添加了一些修改,以便能够从excel导出点。
 
我想知道是否有lisp可以缩放到新插入的点。我目前在lisp的末尾使用缩放范围,但如果我将点导入到现有图形中,它将缩放到整个图形,而不仅仅是新插入的点。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:19:11 | 显示全部楼层
你好
 
从Lisp文件中可以清楚地看到,作者姓名如下:[版权所有2015 Thomas Gail Haws]。
 
搜索函数的名称,并将其替换为以下内容:
  1. (DEFUN PI:INSERT3DPOINTS (POINTSLIST POINTFORMAT / NODELAYERFORMAT POINTLIST th:entlast th:newobj th:lst a b)
  2. (SETQ NODELAYERFORMAT (PI:GETNODELAYERFORMAT POINTFORMAT))
  3. (setq th:entlast (entlast))
  4. (COMMAND "._undo" "_group")
  5. (FOREACH POINTLIST POINTSLIST
  6.    (PI:MAKELAYER NODELAYERFORMAT POINTLIST POINTFORMAT)
  7.    (COMMAND "._point" (CAR POINTLIST))
  8.    (if (and (not (eq (setq th:newobj (entlast)) th:entlast))
  9.             (eq (cdr (assoc 0 (entget th:newobj))) "POINT")
  10.          )
  11.      (setq th:lst (cons (cdr (assoc 10 (entget th:newobj))) th:lst))
  12.      )
  13. )
  14. (if th:lst
  15.    (progn
  16.      (setq a (car th:lst)
  17.        b a
  18.        )
  19.      (mapcar '(lambda (pt)
  20.                 (and (< (car pt)  (car a))
  21.                   (< (cadr pt) (cadr a))
  22.                   (setq a pt)
  23.                   )
  24.                 (and (> (car pt)  (car b))
  25.                   (> (cadr pt) (cadr b))
  26.                   (setq a pt)
  27.                   ))
  28.        th:lst)
  29.      (command "_.zoom" "_non" a "_non" b)
  30.      )
  31.    )
  32. (COMMAND "._undo" "_end")
  33. )
回复

使用道具 举报

2

主题

12

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:22:15 | 显示全部楼层
对不起,我错了
我很久以前下载了lisp,记得它是lee mac的。。
我的错
 
谢谢你的回复,伙计
我试试看!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:25:59 | 显示全部楼层
我只是想公平对待作者。
 
等待你的测试。
回复

使用道具 举报

2

主题

12

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:31:08 | 显示全部楼层
阿基修克伦,
 
向托马斯喊道!
 
我用5个坐标(相同的坐标但不同的顺序)的选择集进行了测试,为了检查a和b值,如果最小的坐标在第一个列表中,最大的坐标在最后一个列表中,效果很好,但是,当顺序不顺时,a和b并没有完全正确:
 
测试1:
坐标1=10,10
坐标2=20,20
坐标3=30,30
坐标4=40,40
 
结果将是a=(40.0 40.0 0.0)和b=(10.0 10.0 0.0)
 
测试2:
坐标1=40,40
坐标2=30,30
坐标3=20,20
坐标4=10,10
 
结果将是a=(10.0 10.0 0.0)和b=(40.0 40.0 0.0)
 
测试3:
坐标1=30,30
坐标2=40,40
坐标3=10,10
坐标4=20,20
 
结果将是a=(10.0 10.0 0.0)和b=(30.0 30.0 0.0)
 
测试4:
坐标1=20,20
坐标2=30,30
坐标3=10,10
坐标4=40,40
 
结果将是a=(40.0 40.0 0.0)和b=(20.0 20.0 0.0)
 
测试5:
坐标1=30,30
坐标2=10,10
坐标3=20,20
坐标4=40,40
 
结果将是a=(40.0 40.0 0.0)和b=(30.0 30.0 0.0)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:37:18 | 显示全部楼层
是否要缩放新创建的点或分析坐标?
回复

使用道具 举报

2

主题

12

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:41:52 | 显示全部楼层
也许我的措辞错了。
我希望它将范围从左下角坐标缩放到新输入点的右上角坐标。
回复

使用道具 举报

2

主题

12

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:47:55 | 显示全部楼层
苏。。查看代码中的(命令“.zoom”“\u non”a“\u non”b),我发现a是最小坐标,b是最大坐标。
 
我做了一些搜索,发现了这个:http://www.cadtutor.net/forum/showthread.php?93410-点-Min-Max-x坐标
 
因此,我修改了lisp,经过一些测试,我意识到要将范围缩放到选择,a不是最小的坐标,而是左下角的坐标,b是图形中右上角的坐标。
 
autocad缩放范围是如何工作的?有代码吗?我可以修改它,使其仅将范围缩放到一组选择吗?
回复

使用道具 举报

2

主题

12

帖子

10

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:52:56 | 显示全部楼层
你好
 
在做了更多的搜索后,我发现我可以将当前层设置为导入点,冻结所有其他层,缩放范围,然后解冻层。
 
我用这个http://www.cadtutor.net/forum/showthread.php?76896-冻结除当前层外的所有层并恢复以前的状态
  1. (defun c:frz ( / d n )
  2.    (while (setq d (tblnext "LAYER" (null d)))
  3.        (if
  4.            (and
  5.                (zerop (logand 1 (cdr (assoc 70 d))))
  6.                (not (member (setq n (cdr (assoc 2 d))) *thaw-list*))
  7.            )
  8.            (setq *thaw-list* (cons n *thaw-list*))
  9.        )
  10.    )
  11.    (command "_.-layer" "_F" "*" "")
  12.    (princ)
  13. )
  14. (defun c:unfrz ( )
  15.    (if *thaw-list*
  16.        (command "_.-layer" "_T"
  17.            (apply 'strcat (mapcar '(lambda ( x ) (strcat "," x)) *thaw-list*))
  18.            ""
  19.        )
  20.    )
  21.    (setq *thaw-list* nil)
  22.    (princ)
  23. )

 
这对我来说很管用。
 
非常感谢。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:56:45 | 显示全部楼层
查看所有窗口中心的缩放选项。Tharwat使用两点的缩放窗口选项发布了答案,“W”是可选的,同样,两点的顺序也无关紧要。
 
范围缩放到对象的范围
所有缩放到两个预设的左下和右上“限制”类型,即“限制”。
中心要求一个点和一个比例,你也可以使用这种方法。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 09:47 , Processed in 0.594612 second(s), 83 queries .

© 2020-2025 乐筑天下

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