按风选择时出现问题
大家好,我在LISP代码中按窗口选择项目时遇到问题。
如果你看看下面的图片,我有一个标签,左下角在点0,0,右上角在其他点(比如1000250)。
我希望我的LISP选择并填充此标签边界框内的所有项目,即我不希望选择边界框。
问题是,如果我的标签太大(比如50001250),那么我使用的选择方法也会选择边界框。
正如您在下面的代码中所看到的,我正在使用一个从1,1(就在左下角)到9999999(在标签右上角之外)的窗口进行选择。如果标签较小,这可以正常工作,但在非常大的标签上不起作用。
(command "-hatch" "a" "h" "y" "a" "y" "" "s" "w" "1,1" "9999,9999" "" "")
有没有办法在通过窗口选择时忽略缩放因子,或者有没有其他选择方法可以提供我想要的结果?
干杯 从这里开始:
(command "-hatch" "a" "h" "y" "a" "y" "" "s" "w" pause pause "" "")
也许可以使用ssget函数和选择过滤器来排除边界对象。然而,这假设边界对象具有一些区别特征,以将其与其他对象区分开来。 也许这样。。。。
(vl-load-com)
(defun c:Test (/ ss l sset)
; Tharwat 01. 07. 2011
(if (setq ss (ssget "_w"
'(1.0 1.0)
'(9999.0 9999.0)
'((0 . "*POLYLINE"))
)
)
(repeat
(setq l (sslength ss))
(setq sset (ssname ss (setq l (1- l))))
(if (vlax-curve-isclosed sset)
(command "_.-hatch" "_s" sset "" "_p" "_solid" "")
)
)
(princ)
)
(princ)
)
塔瓦特 也许这个比第一个好,它有一个非常奇怪的选项,我认为任何人都会使用它
(vl-load-com)
(defun c:Test (/ ss i l sset)
; Tharwat 01. 07. 2011
(if (setq ss (ssget "_w"
'(1.0 1.0)
'(9999.0 9999.0)
'((0 . "*POLYLINE"))
)
)
(progn
(setq i (sslength ss))
(repeat
(setq l (sslength ss))
(setq sset (ssname ss (setq l (1- l))))
(if (vlax-curve-isclosed sset)
(command "_.-hatch" "_s" sset "" "_p" "_solid" "")
)
(if (eq i (+ l 1))
(entdel (entlast))
)
)
)
(princ)
)
(princ)
)
塔瓦特 谢谢你们的建议伙计们。。。我们最终只选择了边框,更改了图层(我们稍后会这样做),然后关闭该图层并选择其余的(文本项),并对其进行阴影处理,然后重新打开边框图层。。。
很好,很简单,而且似乎效果很好。
每个标签的几何图形都会发生变化,但这是可以预测的,因为它是Inventor VBA宏的输出,所以我对这个解决方案很满意。
再次感谢。
不客气,杰拉德。
我也很高兴你能用Hatch实体来处理这个想法。
当做
塔瓦特
页:
[1]