乐筑天下

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

[编程交流] Lisp查找部分重叠

[复制链接]

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 09:19:14 | 显示全部楼层 |阅读模式
你好
 
是否有lisp例程来查找重叠维度(如下图所示)
很难看到dim是这样的。当我们使用DIMCONTINUE时,这种情况经常发生。
这给制造过程带来了很大的问题。
 
有人可以帮助:(
非常感谢。
 
克鲁格
101919a1xhxdodda4lauvq.jpg
回复

使用道具 举报

55

主题

293

帖子

239

银币

后起之秀

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

铜币
275
发表于 2022-7-6 09:31:39 | 显示全部楼层
试试这个命令
  1. overkill

 
这可能对你有很大帮助。
回复

使用道具 举报

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 09:38:15 | 显示全部楼层
嗨,迈克尔
我知道杀伤力过大,但这并不是我想要的。
OV删除dims。我们需要使用模糊距离。
我的Lisp程序不太好,无法让OV为我工作
 
谢谢
克鲁格
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:44:45 | 显示全部楼层
可以使用此代码根据样式名称选择所有尺寸,
  1. (sssetfirst nil(ssget "_X" '((0 . "DIMENSION")(3 . "[color="red"][b]YourStyleName[/b][/color]"))))

 
塔瓦特
回复

使用道具 举报

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 09:47:31 | 显示全部楼层
我所有的DIM都是相同的样式。
我想要的是找到这些重叠的DIM(可能标记它们),当然纠正这些错误。
克鲁格
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:55:12 | 显示全部楼层
您可以检查尺寸之间的交点,但是此方法将仅使用尺寸的边界框,因此不会100%准确。
 
为了证明我的观点,请在两个重叠的维度上尝试此代码:
 
  1. (defun c:test ( / e1 e2 )
  2. (vl-load-com)
  3. (if
  4.    (and
  5.      (setq e1
  6.        (LM:SelectifFoo
  7.          (lambda ( x )
  8.            (eq "DIMENSION" (cdr (assoc 0 (entget x))))
  9.          )
  10.          "\nSelect First Dimension: "
  11.        )
  12.      )
  13.      (setq e2
  14.        (LM:SelectifFoo
  15.          (lambda ( x )
  16.            (eq "DIMENSION" (cdr (assoc 0 (entget x))))
  17.          )
  18.          "\nSelect Second Dimension: "
  19.        )
  20.      )
  21.    )
  22.    (foreach x
  23.      (LM:GroupbyNum
  24.        (vlax-invoke
  25.          (vlax-ename->vla-object e1) 'IntersectWith
  26.          (vlax-ename->vla-object e2) AcExtendNone
  27.        )
  28.        3
  29.      )
  30.      (command "_.point" "_non" x)
  31.    )
  32. )
  33. (princ)
  34. )
  35. ;;-------------------=={ Select if Foo }==--------------------;;
  36. ;;                                                            ;;
  37. ;;  Continuous selection prompts until the predicate function ;;
  38. ;;  foo is validated                                          ;;
  39. ;;------------------------------------------------------------;;
  40. ;;  Author: Lee McDonnell, 2010                               ;;
  41. ;;                                                            ;;
  42. ;;  Copyright © 2010 by Lee McDonnell, All Rights Reserved.   ;;
  43. ;;  Contact: Lee Mac @ TheSwamp.org, CADTutor.net             ;;
  44. ;;------------------------------------------------------------;;
  45. ;;  Arguments:                                                ;;
  46. ;;  foo - predicate function taking ename argument            ;;
  47. ;;  str - prompt string                                       ;;
  48. ;;------------------------------------------------------------;;
  49. ;;  Returns:  selected entity ename if successful, else nil   ;;
  50. ;;------------------------------------------------------------;;
  51. (defun LM:SelectifFoo ( foo str / e )
  52. ;; © Lee Mac 2010
  53. (while
  54.    (progn
  55.      (setq e (car (entsel str)))
  56.      
  57.      (cond
  58.        (
  59.          (eq 'ENAME (type e))
  60.          (if (not (foo e)) (princ "\n** Invalid Object Selected **"))
  61.        )
  62.      )
  63.    )
  64. )
  65. e
  66. )
  67. ;;-----------------=={ Group by Number }==--------------------;;
  68. ;;                                                            ;;
  69. ;;  Groups a list into a list of lists, each of length 'n'    ;;
  70. ;;------------------------------------------------------------;;
  71. ;;  Author: Lee McDonnell, 2010                               ;;
  72. ;;                                                            ;;
  73. ;;  Copyright © 2010 by Lee McDonnell, All Rights Reserved.   ;;
  74. ;;  Contact: Lee Mac @ TheSwamp.org, CADTutor.net             ;;
  75. ;;------------------------------------------------------------;;
  76. ;;  Arguments:                                                ;;
  77. ;;  l - List to process                                       ;;
  78. ;;  n - Number of elements by which to group                  ;;
  79. ;;------------------------------------------------------------;;
  80. ;;  Returns:  List of lists, each of length 'n'               ;;
  81. ;;------------------------------------------------------------;;
  82. (defun LM:GroupByNum ( l n / a b )
  83. ;; © Lee Mac 2010
  84. (while l
  85.    (
  86.      (lambda ( i )
  87.        (while (< 0 i)
  88.          (setq a (cons (car l) a) l (cdr l) i (1- i))
  89.        )
  90.        (setq b (cons (reverse a) b) a nil)
  91.      )
  92.      n
  93.    )
  94. )
  95. (reverse b)
  96. )
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:04:13 | 显示全部楼层
这是一个相当糟糕的起草习惯。延续就是这样。在上一个dim相同方向上的连续。不覆盖-大卫
回复

使用道具 举报

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 10:10:19 | 显示全部楼层
谢谢李的代码。
可能现在需要结合检查尺寸标注的DXF代码,以查看尺寸是否继续,可能一个尺寸标注包括另一个尺寸标注等。
 
可以为DIMCONTINUE命令生成反应堆吗?
发出命令后,我们将光标移动到尺寸的左侧或右侧,并将新尺寸翻转到正确的一侧。
 
克鲁格
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:14:13 | 显示全部楼层
恐怕IntersectWith方法是我最愿意追求的。
回复

使用道具 举报

8

主题

159

帖子

153

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-6 10:24:23 | 显示全部楼层
但最后还是写了些东西。不是美丽,而是成功
感谢李(LM:RotatePointsByMatrix)
克鲁格
FindOverlappedDimensions。lsp
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 03:14 , Processed in 0.607067 second(s), 75 queries .

© 2020-2025 乐筑天下

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