乐筑天下

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

[编程交流] 按风选择时出现问题

[复制链接]

13

主题

51

帖子

38

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 09:13:35 | 显示全部楼层 |阅读模式
大家好,
 
我在LISP代码中按窗口选择项目时遇到问题。
 
如果你看看下面的图片,我有一个标签,左下角在点0,0,右上角在其他点(比如1000250)。
 
我希望我的LISP选择并填充此标签边界框内的所有项目,即我不希望选择边界框。
 
101346vx5uov857yx7lxzy.jpg
 
问题是,如果我的标签太大(比如50001250),那么我使用的选择方法也会选择边界框。
 
正如您在下面的代码中所看到的,我正在使用一个从1,1(就在左下角)到9999999(在标签右上角之外)的窗口进行选择。如果标签较小,这可以正常工作,但在非常大的标签上不起作用。
 
  1. (command "-hatch" "a" "h" "y" "a" "y" "" "s" "w" "1,1" "9999,9999" "" "")

 
有没有办法在通过窗口选择时忽略缩放因子,或者有没有其他选择方法可以提供我想要的结果?
 
干杯
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:28:14 | 显示全部楼层
从这里开始:
 
  1. (command "-hatch" "a" "h" "y" "a" "y" "" "s" "w" [color=blue]pause pause[/color] "" "")
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:39:10 | 显示全部楼层
也许可以使用ssget函数和选择过滤器来排除边界对象。然而,这假设边界对象具有一些区别特征,以将其与其他对象区分开来。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:44:34 | 显示全部楼层
也许这样。。。。
 
  1. (vl-load-com)
  2. (defun c:Test (/ ss l sset)
  3. ; Tharwat 01. 07. 2011
  4. (if (setq ss (ssget "_w"
  5.                      '(1.0 1.0)
  6.                      '(9999.0 9999.0)
  7.                      '((0 . "*POLYLINE"))
  8.               )
  9.      )
  10.    (repeat
  11.      (setq l (sslength ss))
  12.       (setq sset (ssname ss (setq l (1- l))))
  13.       (if (vlax-curve-isclosed sset)
  14.         (command "_.-hatch" "_s" sset "" "_p" "_solid" "")
  15.       )
  16.    )
  17.    (princ)
  18. )
  19. (princ)
  20. )

 
塔瓦特
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 09:55:16 | 显示全部楼层
也许这个比第一个好,它有一个非常奇怪的选项,我认为任何人都会使用它
 
  1. (vl-load-com)
  2. (defun c:Test (/ ss i l sset)
  3. ; Tharwat 01. 07. 2011
  4. (if (setq ss (ssget "_w"
  5.                      '(1.0 1.0)
  6.                      '(9999.0 9999.0)
  7.                      '((0 . "*POLYLINE"))
  8.               )
  9.      )
  10.    (progn
  11.      (setq i (sslength ss))
  12.      (repeat
  13.        (setq l (sslength ss))
  14.         (setq sset (ssname ss (setq l (1- l))))
  15.         (if (vlax-curve-isclosed sset)
  16.           (command "_.-hatch" "_s" sset "" "_p" "_solid" "")
  17.         )
  18.         (if (eq i (+ l 1))
  19.           (entdel (entlast))
  20.         )
  21.      )
  22.    )
  23.    (princ)
  24. )
  25. (princ)
  26. )

 
塔瓦特
回复

使用道具 举报

13

主题

51

帖子

38

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 10:06:05 | 显示全部楼层
谢谢你们的建议伙计们。。。我们最终只选择了边框,更改了图层(我们稍后会这样做),然后关闭该图层并选择其余的(文本项),并对其进行阴影处理,然后重新打开边框图层。。。
 
很好,很简单,而且似乎效果很好。
 
每个标签的几何图形都会发生变化,但这是可以预测的,因为它是Inventor VBA宏的输出,所以我对这个解决方案很满意。
 
再次感谢。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:20:59 | 显示全部楼层
 
不客气,杰拉德。
 
我也很高兴你能用Hatch实体来处理这个想法。
 
当做
 
塔瓦特
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 06:09 , Processed in 0.766920 second(s), 69 queries .

© 2020-2025 乐筑天下

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