明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: hn10183051

[提问] 属性图框批量修改页码、图号的程序

  [复制链接]
发表于 2020-3-22 23:03:03 | 显示全部楼层
两种方式可以修改
1 在Lisp 程序中可以设定对角点坐标,左小角与右上角,在对该范围内的实体查找,给你提供查找程序,再对实体修改。
2 利用块属性文字,在对其修改。
查找某范围内的实体程序
;nInt-在坐标内Lpt RPT内查找文字1、多文字2、视窗8、多义线16,天正标准块4,可叠加,如输入3,即选择该范围内文字与mtext
;Nflag-图纸空间还是模型空间 ,0-模型空间 1-图纸空间 2-模型空间、图纸空间内所有的
(defun GetRectEntity (LPt RPt nInt Nflag / filter a)
        ;------------坐标查询---------------
        (setq filter (quote ((-4 . "and>"))))
        (setq filter        (append (list   '(-4 . "<and") '(-4 . ">=,>=,*") (cons 10 LPt) '(-4 . "and>")
                                                                        '(-4 . "<and") '(-4 . "<=,<=,*") (cons 10 RPt) '(-4 . "and>")
                                                        )         filter)
        )
        ;-----------------图纸空间模型空间查询------------------------------
        (cond
                ((= 0 Nflag)(setq filter (append (list '(-4 . "<and") (cons 67 0)  '(-4 . "and>")) filter)));模型空间
                ((= 1 Nflag)(setq filter (append (list '(-4 . "<and") (cons 67 1)  '(-4 . "and>")) filter)));图纸空间
                (t nil)
        )
        ;---------------------实体查询--------------------------
        (setq filter (append (quote ((-4 . "or>"))) filter))
        ;文本
        (if        (= 1 (logand nInt 1))(setq filter (append (list '(-4 . "<and")(cons 0 "TEXT")  '(-4 . "and>")) filter)))
        ;多文本
        (if        (= 2 (logand nInt 2))(setq filter (append (list '(-4 . "<and") (cons 0 "MTEXT") '(-4 . "and>")) filter)))
        ;天正标注
        (if        (= 4 (logand nInt 4))(setq filter (append (list '(-4 . "<and") (cons 0 "TCH_DRAWINGNAME") '(-4 . "and>")) filter)))
        ;视窗
        (if        (= 8 (logand nInt 8))
                (progn
                        (setq filter (append (quote ((-4 . "and>"))) filter))
                        (setq filter (append (list '(-4 . "<and") (cons 0 "VIEWPORT") '(-4 . "and>")) filter)
                                filter (append (list   '(-4 . "<and") '(-4 . ">") (cons 69 1) '(-4 . "and>")) filter);将图纸空间删除
                        )
                        (setq filter (append (quote ((-4 . "<and"))) filter))
                )
        )
        ;多义线       
        (if        (= 16 (logand nInt 16))(setq filter (append (list '(-4 . "<and") (cons 0 "LWPOLYLINE") '(-4 . "and>")) filter)))
        (setq filter (append (quote ((-4 . "<or"))) filter))
        ;------------------------------------------------------
        (setq filter (append (quote ((-4 . "<and"))) filter))
        (setq a (ssget "X" filter))
        (if (= a nil)(setq a (ssadd))(setq a a))
)
发表于 2020-9-10 11:24:48 | 显示全部楼层
刚好需要。试试看
发表于 2020-9-27 16:53:25 | 显示全部楼层

改好的程序发一下嘛
发表于 2020-9-27 17:15:41 | 显示全部楼层
受用了,感谢大神。

发表于 2021-12-9 14:25:19 | 显示全部楼层
学习了,谢谢!
发表于 2022-5-8 17:40:59 | 显示全部楼层
hn10183051 发表于 2020-3-5 18:56
看看是不是您需要的。还是有点小问题但不影响使用,我也是刚学不是很会~[/url]

这个可以实现一个排序吗?如果图框两排的话,排序会乱!

http://bbs.mjtd.com/forum.php?mo ... hlight=%D2%B3%C2%EB
这个又没有面板方便!
发表于 2022-5-8 22:47:07 | 显示全部楼层
能把DCL面板合并到LSP里吗
发表于 2022-7-9 01:12:24 | 显示全部楼层
只能编码同一名称的图框,不同名称的块的图框用不了,希望大佬能修改一下,谢谢
发表于 2022-7-17 20:25:23 | 显示全部楼层

可以分享一下吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-29 21:24 , Processed in 0.158613 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表