乐筑天下

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

[编程交流] Lisp用于修剪角点

[复制链接]

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:06:21 | 显示全部楼层 |阅读模式
大家好!我现在对lisp越来越熟悉了,我想知道是否有人可以给我insite来创建一个lisp,它基本上可以在选定的区域内修剪或圆角。
 
从下面开始:图1
 
输出如图2所示
 
谢谢
130622pu25moqz89faq8mm.jpg
回复

使用道具 举报

10

主题

109

帖子

99

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 12:12:42 | 显示全部楼层
Cad-n-ator,
如果希望lisp一次性完成所有交点,可以使用SSGET和“I”隐含模式,以获取之前选择的所有线(PICKFIRST on)。然后,编写一个循环来检查每条线与其他线,并找到交点(与INTERS)。在该循环中,每次有交点时,都可以调用半径为零的圆角命令以获得双重修剪。这是许多方法中的一种。享受
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:18:11 | 显示全部楼层
我和Randy的想法一样。。。
对于示例图形,您可以实现这一点,因为每条线只有两个交点。如果有两个以上(即你的整个团队不是正方形)呢?你必须引入一些条件,比如只在距离两端一定距离内的十字路口。我要说的是,如果你在学习lisp,你会被咬成一大块。。
回复

使用道具 举报

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:21:50 | 显示全部楼层
谢谢insite的伙计们。。。我希望只使用矩形区域。我仍然是autocad中lisp/macro的新手,所以我有自己的工作要做。谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:28:29 | 显示全部楼层
如果希望继续使用圆角方法(零半径),则需要找到一种方法来知道选择集中的哪些线需要用哪些线进行圆角。
 
因为,如果您只需遍历选择集,将所有行相互填充,您可能会得到不需要的圆角。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:33:15 | 显示全部楼层
请尝试以下操作:
 
  1. (defun c:boxed (/ vlax-list->3D-point i j ss e1 e2 o1 o2 iLst)
  2. ;; by Lee McDonnell  ~  03.12.2009
  3. (vl-load-com)
  4. (defun vlax-list->3D-point (lst)
  5.    (if lst
  6.      (cons (list (car lst) (cadr lst) (caddr lst))
  7.            (vlax-list->3D-point (cdddr lst)))))
  8. (if (setq i -1 ss (ssget '((0 . "LINE"))))
  9.    
  10.    (while (setq j (1+ i) e1 (ssname ss (setq i (1+ i))))
  11.      
  12.      (while (setq e2 (ssname ss (setq j (1+ j))))
  13.       
  14.        (if (setq iLst
  15.              (vlax-list->3D-point
  16.                (vlax-invoke
  17.                  (setq o1 (vlax-ename->vla-object e1)) 'IntersectWith
  18.                    (setq o2 (vlax-ename->vla-object e2)) acExtendBoth)))
  19.          (foreach x (list e1 e2)
  20.            
  21.            (if (< (distance (vlax-curve-getStartPoint x) (car iLst))
  22.                   (distance (vlax-curve-getEndPoint x)   (car iLst)))
  23.              (vla-put-StartPoint (vlax-ename->vla-object x) (vlax-3D-point (car iLst)))
  24.              (vla-put-EndPoint   (vlax-ename->vla-object x) (vlax-3D-point (car iLst)))))))))
  25. (princ))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:37:43 | 显示全部楼层
如果所讨论的线不平行/垂直,则上述结果不理想:眨眼:
回复

使用道具 举报

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:42:58 | 显示全部楼层
这就像我想要的一样!谢谢
我如何修改它,使我不必打开窗口或选择线,而只需在矩形区域内单击,它就会自动执行此操作?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:43:33 | 显示全部楼层
 
窗口选择是不是太费劲了?
回复

使用道具 举报

3

主题

11

帖子

8

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:51:53 | 显示全部楼层
对不起,没有,只是在玩弄可能性,因为我还在学习lisp例程可以做什么。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:25 , Processed in 0.404685 second(s), 75 queries .

© 2020-2025 乐筑天下

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