乐筑天下

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

[编程交流] 快速检查

[复制链接]

40

主题

103

帖子

63

银币

后起之秀

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

铜币
200
发表于 2022-7-6 10:12:34 | 显示全部楼层 |阅读模式
大家好
 
我想对多段线数据进行快速检查。
我通过使用ssget“\u cp”选择多段线两端的实体来实现这一点
选项为此,我必须将屏幕缩放到每一行的末尾,以进行选择,这将花费很多时间。
 
是否有一个过程可以使用ssget检查快照错误而不必退出。
 
 
谢谢
库马尔。
回复

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 10:20:05 | 显示全部楼层
你说的捕捉错误是什么意思?
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:21:16 | 显示全部楼层
查看开发人员文档中的vlax curve getStartPoint和vlax curve getEndPoint函数。
 
***它们都将接受ENAME而不是vla对象。
回复

使用道具 举报

40

主题

103

帖子

63

银币

后起之秀

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

铜币
200
发表于 2022-7-6 10:26:44 | 显示全部楼层
我希望确保所有多段线在其端点处相互捕捉。在Autocad map版本中,我们可以通过使用拓扑检查来确保。但现在我有一个在Intelli cad上的情况,在这种情况下没有可用的地图命令。
 
因此,我想制作一个lisp例程,不使用visual lisp函数检查端点处的多段线捕捉。如果一端未捕捉到另一端,则需要标记错误。
 
谢谢
库马尔。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:28:50 | 显示全部楼层
 
 
放弃Visual LISP的原因是什么?
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 10:34:08 | 显示全部楼层
为什么这两条线不互相对齐?你是否故意“盯着”线路之间的连接(顺便说一句,实践不佳)?
回复

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 10:35:10 | 显示全部楼层
如果只是检查2条多段线,请使用ssget _cp,然后获取每个实体并列出顶点,然后比较两个列表的第一个和最后一个顶点
如果选择两个以上,则会出现问题,因为ssget cp可能不会返回正确的顺序,因此可以使用ssadd,然后通过顶点检查进行解析,然后
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:40:19 | 显示全部楼层
也许这将提供一个起点:
 
  1. (defun c:FOO  (/ ss)
  2. (vl-load-com)
  3. (if (setq ss (ssget '((0 . "LINE,*POLYLINE"))))
  4.    ((lambda (i / e l)
  5.       (while (setq e (ssname ss (setq i (1+ i))))
  6.         (setq l
  7.                (cons
  8.                  (cons e
  9.                        (list
  10.                          (vlax-curve-getstartpoint e)
  11.                          (vlax-curve-getendpoint e)))
  12.                  l)))
  13.       (foreach a l
  14.         [color=red];; ... Rest of code goes here
  15. [/color]        ))
  16.      -1))
  17. (princ))
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 10:44:15 | 显示全部楼层
对于线路,来自John Uhden
  1. ;;-----------------------------------------------
  2. ;; SSGETENDS.LSP (c)2002, John F. Uhden, Cadlantic
  3. ;; Function to create a selection set of Lines
  4. ;; within a fuzz distance of either end of a Line
  5. ;; given the 'ENAME of the selected line and the
  6. ;; fuzz distance as a real or integer.
  7. ;; Dedicated to Bill Zondlo c.02-04-02
  8. ;;
  9. (defun ssgetends (e fuzz / ent p10 p11 ss)
  10. (and
  11.    (= (type e) 'ENAME)
  12.    (numberp fuzz)
  13.    (>= fuzz 0)
  14.    (setq ent (entget e))
  15.    (= (cdr (assoc 0 ent)) "LINE")
  16.    (setq p10 (cdr (assoc 10 ent)))
  17.    (setq p11 (cdr (assoc 11 ent)))
  18.    (setq fuzz (list fuzz fuzz fuzz))
  19.    (setq ss
  20.      (ssget "X"
  21.        (list
  22.         '(0 . "LINE")
  23.         '(-4 . "<OR")
  24.           '(-4 . "<AND")
  25.             '(-4 . ">=,>=,>=")
  26.              (cons 10 (mapcar '- p10 fuzz))
  27.             '(-4 . "<=,<=,<=")
  28.              (cons 10 (mapcar '+ p10 fuzz))
  29.           '(-4 . "AND>")
  30.           '(-4 . "<AND")
  31.             '(-4 . ">=,>=,>=")
  32.              (cons 10 (mapcar '- p11 fuzz))
  33.             '(-4 . "<=,<=,<=")
  34.              (cons 10 (mapcar '+ p11 fuzz))
  35.           '(-4 . "AND>")
  36.           '(-4 . "<AND")
  37.             '(-4 . ">=,>=,>=")
  38.              (cons 11 (mapcar '- p10 fuzz))
  39.             '(-4 . "<=,<=,<=")
  40.              (cons 11 (mapcar '+ p10 fuzz))
  41.           '(-4 . "AND>")
  42.           '(-4 . "<AND")
  43.             '(-4 . ">=,>=,>=")
  44.              (cons 11 (mapcar '- p11 fuzz))
  45.             '(-4 . "<=,<=,<=")
  46.              (cons 11 (mapcar '+ p11 fuzz))
  47.           '(-4 . "AND>")
  48.         '(-4 . "OR>")
  49.        )
  50.      )
回复

使用道具 举报

4

主题

327

帖子

324

银币

初来乍到

Rank: 1

铜币
19
发表于 2022-7-6 10:48:59 | 显示全部楼层
代码不错David,
 
这就是我所期待的。
 
我正在处理多段线,因此我将代码更改如下。
 
  1. (defun c:SN (/ e1 e2)
  2. (if (and (setq e1 (entsel "\nSelect first object: "))
  3.           (setq e2 (entsel "\nSelect second object: "))
  4.      )
  5.    (if (apply (function (lambda (a b) (equal a b 0.)))
  6.               (mapcar (function (lambda (e)
  7.                                   (cond ((osnap (cadr e) "_END"))
  8.                                         ((cdr (assoc 10 (entget (car e)))))
  9.                                   )
  10.                                 )
  11.                       )
  12.                       (list e1 e2)
  13.               )
  14.        )
  15.      (alert "Objects snap.")
  16.      (alert "Objects do not snap!")
  17.    )
  18. )
  19. (princ)
  20. )

 
感谢大家分享想法。。。。。
 
库马尔。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 21:08 , Processed in 0.755424 second(s), 72 queries .

© 2020-2025 乐筑天下

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