乐筑天下

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

[编程交流] 查找零长度PLine。。

[复制链接]

7

主题

17

帖子

8

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 11:19:11 | 显示全部楼层 |阅读模式
嘿伙计们,
你会如何过滤掉并找到一条零长度的pline??
 
我有几张从Microstation转换过来的图纸,当我运行Eduard的“FLAT.lsp”来展平这个东西时,我得到了一个约25.563245e27的零长度PLine。。。距离很远,我的画在黑屏上变成了两个点。
 
我想在末尾添加一段代码,简单地过滤掉并找到一条愚蠢的零长度pline,然后删除它。
 
任何帮助都将不胜感激。谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:38:38 | 显示全部楼层
也许是类似的?
 
  1. (defun c:FindZeroLengthPlines ( / i ss e zro )
  2. (if (setq i -1 zro (ssadd) ss (ssget "_X" '((0 . "LWPOLYLINE"))))
  3.    (while (setq e (ssname ss (setq i (1+ i))))
  4.      (and (equal 0.0 (vlax-curve-getDistatParam e
  5.                        (vlax-curve-getEndParam e)) 1e-14)
  6.           (ssadd e zro))))
  7. (sssetfirst nil zro)
  8. (princ))
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:49:00 | 显示全部楼层
121915xhyg6s8dya6mhg8k.png
直到我编写了这个代码,我才想到QSelect,我注意到李已经做了一个,但由于我花了时间,我还是会发布它。
 
  1. (defun c:SZP (/ ss)
  2. ;; Select Zero Length LWPolylines
  3. ;; Alan J. Thompson, 04.26.10
  4. (if (setq ss (ssget "_X" '((0 . "LWPOLYLINE") (90 . 2))))
  5.    ((lambda (i ss2)
  6.       (while (setq e (ssname ss (setq i (1+ i))))
  7.         (or (> (vlax-curve-GetDistAtParam e (vlax-curve-GetEndParam e)) 0.)
  8.             (ssadd e ss2)
  9.         )
  10.       )
  11.       (and (sssetfirst nil ss2)
  12.            (princ (strcat "\n" (itoa (sslength ss2)) " zero length LWPolyline(s) selected."))
  13.       )
  14.     )
  15.      -1
  16.      (ssadd)
  17.    )
  18. )
  19. (princ)
  20. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:58:02 | 显示全部楼层
英雄联盟
李,我看到我们用同样的方法进行过滤,以避免转换为vla对象。
回复

使用道具 举报

7

主题

17

帖子

8

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 11:59:49 | 显示全部楼层
这很有趣,艾伦。。。DXF代码(90.2)指的是什么??
除了32位整数之外,我找不到任何关于这个的东西。
我的PLine DXF代码读取(90.22)?。?
 
我喜欢你们的想法如此相似,但又如此不同。我只希望我已经知道你们知道的一半,我就不必那么烦你们了。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:15:31 | 显示全部楼层
dxf代码90是它包含的点数。即使是长度为零的LWMOLYLINE也会有2个点。我只是想从一开始就忽略所有超过1段的LW多段线,只是为了让事情更快一点。
 
我只知道我知道的,因为我问了很多问题。唯一糟糕的问题是那些未被问到的问题。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 12:27:27 | 显示全部楼层
我知道一条PLine可以有多个线段,长度为零,但创建此类对象时,它们是单线段,长度为零的对象。这是我添加过滤器的唯一原因。然而,它很容易被移除。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 02:39 , Processed in 0.867860 second(s), 68 queries .

© 2020-2025 乐筑天下

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