问题已经解决,谢谢!
标签: , ,
免责声明
本站部分文章来源于网络收集,包括本站原创及部分转贴自互连网 , 文章的版权属于原作者。如果本站中有内容侵犯了您的权利,我们将协助您及有关部门xx相关内容并查找IP记录,但我们不承担任何责任。
由于您在使用或传播中如果出现任何问题和由此造成的任何损失,本站将不承担任何责任。利用本网站的内容以及导致的任何法律争议和后果与本站无关。
未尽事宜以网站{zx1}公告和相关法律为准。
请自觉遵守上述声明。谢谢合作。
这篇文章发布于 2010年05月22日,星期六,6:31 上午,归类于 。 您可以跟踪这篇文章的评论通过 feed。
评论和Pings都被关闭。
如题
CAD HELP:
图元过滤器表是一个使用 DXF 组码的关联表,其格式与由 entget 返回的表的格式相同(关于组码表,请参见 DXF Reference
)。除了图元名(组码 -1)、句柄(组码 5)和扩展数据代码(大于 1000 的组码)以外,函数 ssget 可识别其他所有组码。如果在过滤器表中使用了无效的组码,则 ssget 将其忽略。要想用扩展数据搜索对象,可使用组码 -3,详细说明请参见过滤扩展数据。
当过滤器表作为{zh1}一个参数提供给 ssget 时,该函数将扫描选定的对象并创建一个选择集,该选择集包括符合指定准则的所有主图元的名称。例如,可以获得包含指定类型、在指定图层上或是具有指定颜色的所有对象的选择集。
过滤器表指定了要检查的图元特性,以及构造匹配条件所用的值。
下列样例演示了带有不同对象选择选项的过滤器表的使用方法。
使用过滤器表的 SSGET 样例
函数调用效果
(setq ss1 (ssget ‘((0 . “TEXT”))) ) 提示执行普通对象选择,只把文字对象加入选择集。
(setq ss1 (ssget “P” ‘((0 . “LINE”))) ) 创建包含最近创建的选择集中所有线对象的选择集。
(setq ss1 (ssget “W” pt1 pt2 ‘((8 . “FLOOR9″))) ) 创建窗口中所有位于图层 FLOOR9 上的对象的选择集。
(setq ss1 (ssget “X” ‘((0 . “CIRCLE”))) ) 创建包含数据库中所有圆对象的选择集。
(ssget “I” ‘((0 . “LINE”)
(62 . 5))) 创建所有蓝色线对象的选择集,该选择集是 Implied 选择集的一部分(这些对象是在 PICKFIRST 生效的情况下选中的)。注意此过滤器拾取颜色为 5(蓝色)的线,但不包括那些由“随层”或“随块”特性设置出的颜色。
如果组码和所需值都已知,则可以按照上述方式引用表。如果其中某一项由变量来指定,则必须用 list 和 cons 函数构造该表。下列代码创建数据库中所有在图层 FLOOR3 上的对象的选择集。
(setq lay_name “FLOOR3″)
(setq ss1
(ssget “X”
(list (cons 8 lay_name))
)
)
如果用过滤器表指定多个特性,那么只有满足所有指定条件的图元才被加到选择集中,如下所示:
(ssget “X” (list (cons 0 “CIRCLE”)(cons 8 lay_name)(cons 62 1)))
这段代码选择的对象是,在图层 FLOOR3 中红色的圆对象。这类测试执行了布尔的 AND 运算。关于对象属性附加测试的说明,请参见过滤器测试的逻辑分组。
ssget 函数通过扫描选定的图元,比较每个主图元的字段和指定的过滤器表来过滤图形。如果图元的属性与过滤器表中的所有指定字段都xx匹配,则返回的选择集中将包括此图元,否则不包括。如果选定的图元中没有与指定的过滤准则匹配的图元,则 ssget
函数返回 nil。
注意 某些组码的含义可因图元而异,并且不是所有的图元都有完整的组码。如果在过滤器中指定了一个特殊的组码,则 ssget 返回的选择集中不包括那些没有该组码的图元。
当 ssget 过滤图形时,获取的选择集可包括图纸空间和模型空间中的图元。然而,当选择集被传递给一个 AutoCAD 命令时,只使用当前空间中的图元(图元的 67 组码值指定了图元所属的空间)。详细信息请参见自定义手册