CAD做一个LISP程序,实现按属性块图框里的一个图号按从左到右排列?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAD做一个LISP程序,实现按属性块图框里的一个图号按从左到右排列?相关的知识,希望对你有一定的参考价值。

CAD做一个LISP程序,实现按属性块图框里的一个图号按从左到右排列,比如属性块名称是TK,这图框里有个图号H001 H002 H003等排列很乱。当我输入命令后,框选取要排列的图框,选择后选一个起点空白位置,然后选了起始点后,所有图框及图框内部画的图都按H001 H002 H003从左到右排列。每个图框间距就比如200mm吧,这个有高手会吗。

参考技术A 在这里说一下编程思路:
1、用过滤法,做一个选择集,选中图中所有的TK块
2、遍历这个选择集,得到每个图框的左下角坐标与右上角坐标,以及它里边的图号属性值
----同时得到坐标的最大Y值(用来找空的地方)
3、按属性值进行排序,将每个TK的坐标,排好顺序后,按先后次序,移动到“空”的地方
从左到右放置 ,间隔就是你所说的200
4、第3步中,要根据每个TK的坐标,选中TK内的所有实体,然后一起移动
5、唔。。。。差不多就是以上几步追问

..我不懂程序。。我这有一个差不多的现成的,就是它只能根据坐标还是选择顺序排。。不知道怎么改成提取属性块的数据,然后框选后排图。现在的框选后排出来该乱的还是乱,只是图框整齐而已

追答

如果你想要,我可以帮你编一个的,现在我设定你的图内有若干个图框,是以块的形式存在,块内有一个属性,属性是有一串数字的字符串,数字前边还可能带有字母,将以数字排序,从左到右放置图框及其包含的东西,,,,,,今晚或者明晚能编成,请等待

追问

对,非常感谢,就是这个效果,我属性图框里是 客户图图 比如H001 H002......我手头的只能按框选顺序一个个点。 要框选所有的属性图框,点一个位置,然后自动排列

追答

已编成了,不过不让发上来,唉。。。。已发到百度家的网盘上了

追问

额 这咋看到你的网盘。。网盘链接吗

追答

似乎只能私信联系了

追问

发了私信了 看看能不能看到

MFC的编辑框里不能按时间依次显示递增的数字

代码如下:
int i;
for(i=0;i<5;i++)

m_Input_Edit=i;
UpdateData(FALSE);
Sleep(1000);


我看见你之前解决过类似的问题使用OnTimer(),我是用Sleep()来来延时

MFC的编辑框默认只能显示 文本内容,你设置什么内容就显示什么内容;
参考方法:
如果你是想让一个数字递增显示在编辑框里,那么可以按照以下思路:
1.定义一个整形变量, 例如: int ver=0;
2.然后设置一个定时器:SetTimer(); 时间设置为1秒钟加1次;
3.在定时器消息中,对ver++;
4.把ver转换为字符串类型,设置到编辑框中;
5.刷新窗口更新UI显示递增后的数字;
参考函数:
SetTimer() //设置定时器
WM_TIMER //定时器消息
SetWindowText //设置编辑框文本内容, 当然你也可以使用MFC中封装的函数设置,他也是封装的这个函数;
Invalidate() //刷新窗口,显示递增的内容
参考技术A

Sleep(1000);是挂起状态,界面不更新。

用定时器做会非常好。

OnInitDialog里面:

SetTimer(1,1000,NULL);

OnTimer里面:(Classwizard重载WM_TIMER)

m_Input_Edit++;
UpdateData(FALSE);

本回答被提问者采纳
参考技术B 重绘了没(好像是repaint)

以上是关于CAD做一个LISP程序,实现按属性块图框里的一个图号按从左到右排列?的主要内容,如果未能解决你的问题,请参考以下文章

Auto CAD图纸双击修改提示增强属性编辑器如何解决?

eplan p8 图框库的创建

EPLAN P8 1.95版本,如何建立自己想要的图框,

CADlisp编程:如何用lisp处理一个dwg图形中的多个多线段?

ArcGIS10.2创建渔网后在图框中打开是倾斜的怎么办

如何在ARCGIS中给图框4个角添加经纬度,例如下面的图片。