只需一步,快速开始
很想有实现以下功能的LISP程序:选择一块图(有很多对象),自动过滤只剩以下对象(单行文字,图层TEXT,字高300,旋转角度90,不包含@),将过滤所得的对象全部向右移动某个长度如400。
因为过滤条件比较多,不知如何实现,请指教。
使用道具 举报
(ssget (list '(-4 . "<AND") '(0 . "text") '(8 . "图层TEXT") '(40 . 300.0) (cons 50 (/ pi 2.0)) '(-4 . "AND>") ))
不包含"@"有点难, 用 '(-4 . "/=") 好像也不行
我用下面的方法可以选择椭圆弧,而排除椭圆(供你参考)
(ssget '((-4 . "<AND")(0 . "ellipse")(-4 . "/=")(41 . 0.0)(-4 . "AND>")))
不包含"@"
===>(1 . "~*`@*")
这样就行:
(SSGET (LIST '(0 . "TEXT") '(8 . "TEXT") '(40 . 300.0) (CONS 50 (/ PI 2)) '(1 . "~*\`@*")))
多谢版主和上面两位伸出援手(多来梦??),可是上面两位的代码我试验了几次都不行,所以没有回应;版主的代码可以了。哈哈,幸福啊,再次感谢!
另外我找了DXF组码的参考资料,可是 "~*\`@*" 的资料应该在下面资料的那一章呢?我一直找不到,因为我还想知道过滤“必须包含@的字符串”的代码如何表示。我是菜鸟,请各位再次帮忙。
AutoCAD 2000 DXF参考修正 第一章 DXF 格式 认识本参考 对象和图元的组码 组码值类型 按数字次序排列的图元组码 第二章 HEADER 区域 HEADER 区域组码 第三章 CLASSES 区域 CLASS区域组码 第四章 TABLES 区域 符号表组码 符号表组码 APPID BLOCK_RECORD DIMSTYLE LAYER LTYPE STYLE UCS VIEW VPORT 第五章 BLOCKS 区域 BLOCKS 区域组码 BLOCK ENDBLK 第六章 ENTITIES 区域 图形对象的公用组码 3DFACE 3DSOLID ACAD_PROXY_ENTITY ARC ARCALIGNEDTEXT ATTDEF ATTRIB BODY CIRCLE DIMENSION ELLIPSE HATCH IMAGE INSERT LEADER LINE LWPOLYLINE MLINE MTEXT OLEFRAME OLE2FRAME POINT POLYLINE RAY REGION RTEXT SEQEND SHAPE SOLID SPLINE TEXT TOLERANCE TRACE VERTEX VIEWPORT WIPEOUT XLINE 第七章 OBJECTS 区域 OBJECT 区域组码 公用对象组码 ACAD_PROXY_OBJECT ACDBDICTIONARYWDFLT ACDBPLACEHOLDER DICTIONARY DICTIONARYVAR DIMASSOC GROUP IDBUFFER IMAGEDEF IMAGEDEF_REACTOR LAYER_INDEX LAYOUT MLINESTYLE OBJECT_PTR PLOTSETTINGS RASTERVARIABLES SPATIAL_INDEX SPATIAL_FILTER SORTENTSTABLE XRECORD 第八章 THUMBNAILIMAGE 区域 THUMBNAILIMAGE 区域组码 附录 A 图形交换文件格式 ASCII DXF 文件 基本DXF文件结构 DXF文件中的组码 DXF文件中的头部组码 DXF文件中的类组码 DXF文件中的符号表组码 DXF文件中的图块组码 DXF文件中的图元组码 DXF文件中的对象组码 编写 DXF 接口程序 二进制 DXF 文件 幻灯片文件 旧的幻灯片表头 幻灯片库文件格式 附录B 深入DXF 数据库对象 Persistent Inter-Object 引用句柄 子类标记 扩展词典和 Persistent Reactors 扩展数据 对象坐标系统 (OCS) 任意轴算法
楼上的说错了吧,应该是wcmatch函数才对。不过也谢了,有你提示才能找出来。
过滤“必须包含@的字符串”的代码这个就可以了:"*\`@*"
不过这个“`”有点不太理解,函数说明上说:可跳过特殊字符 (按照顺序读入下一个字符),那么@应该属于特殊字符啊,加了它应该会把@跳过,怎么反而要加呢?
不好意思,难得糊涂
`@=@
@ = 单个字母
我知道了,有这个功能本来是为了能使被通配符占用的字符能表示出来,可是通配符在以后的版本可能增加,所以干脆所有的字符要表示全部都加个`以保持兼容性。这个我能理解了,因为C语言中是用反斜线(\)的。
可是既然有`了,那还需要反斜线(\)干什么用?应该和`功能一样啊。可是函数说明的范例里面竟然两个都用上了:(wcmatch "Name" "*`\\*")
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 ) ©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途
GMT+8, 2024-5-18 06:23 , Processed in 0.177447 second(s), 25 queries , Gzip On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.