最后一个问题
我使用行(setq e1(entlast))来捕获创建的最后一个实体。最后创建的图元是多段线。然而,在我的代码中,我有一个圆的选择集,出于某种原因,它捕获了选择集中的最后一个圆实体。如何强制它查找创建的最后一条多段线,而不是一个圆?
谢谢任何人的帮助 如果多段线是创建的最后一个对象,则该多段线应该是“entlast”拾取的对象。
你确定不是先创建多段线,然后创建圆,然后修改多段线吗?
修改后的多段线不会是最后创建的图元。 如果要复制的圆也算是最后创建的实体。就像李说的那样,我会仔细检查你的代码。 是的,你们都是对的。发生的情况:首先,我选择闭合的pline,然后在圆上选择ssget,然后修改pline。也许entlast不是捕捉修改后pline的好选择。是否有其他方法可以捕获此实体? 如果你选择了它,那么你肯定已经回答了自己的问题。。 好的,那么让我重新回答我的问题-我如何捕捉已修改为变量的多段线?
如果是同一条多段线,则无关紧要-引用实体名称将返回新修改的结果。 为了更清楚地说明我想要实现的目标,这是我的代码,类似于前一篇文章。我以为Regenall会解决这个问题——但不是!
要使用它,请绘制一条闭合矩形样线(约1000x1000),然后
在其中放置一些圆圈。
选择pline,然后选择所有圆。
您会发现,第一次尝试时,将在pline上创建一个区域。
然而,第二次(在一个新的例子中)其中一个圆将变成一个区域。
你知道怎么解决吗?
试一试:
(定义c:扩展(/Enableline ObjName LowLeft right LowRight UpLeft TopCl BotCl lEnt pt1 pt2 lDat test flag ss tCirc subSs total ent subSs\u lst cLst Rad lenextruption temptlt en3L IntPointLt ExtPtL ExtPtTopL ExtPtBotL CircTopL CircBotL en4L IntPointTopL en5L IntPointBotL en6L en7L en8L test FinalOutline)(vl load com)(setvar“osmode”0)(setq ENALLINE(car(entsel“\n选择矩形轮廓:”)(setq ObjName(vlax ename->vla object ENALLINE))(vla GetBoundingBox ObjName“LOWEFT”RIGHT)(setq LOWEFT(vlax safearray->list LowLeft)right(vlax safearray->list right)lowlight(list(car right)(cadr LowLeft))UpLeft(list(car LowLeft)(cadr right));setq;查找垂直中心线矩形(setq TopCl(mapcar’+UpLeft(mapcar’/(mapcar’-垂直UpLeft)'(2.0 2.0 2.0)));中心线顶部(setq BotCl(mapcar’+低左(mapcar’/(mapcar’-低右低左)’(2.0 2.0 2.0));中心线底部(命令行“TopCl BotCl”“);绘制温度线(setq lEnt(entlast))(if(and;;;(setq lEnt(car(entsel)“\n>>>…选择垂直线…>>>:”)(eq“line”(cdadr(entget lEnt)))(null(redraw lEnt 3))(setq pt1(getpoint”\n>>…拾取圆上窗口的第一个点…>>>:”)(null(initget 32))(setq pt2(getcorner pt1“\n>>>…拾取圆上窗口的第二个点…>>>>:“”)(null(redraw lEnt 4))(progn(setq lDat(list(cdr(assoc 10(entget lEnt))))(cdr(assoc 11(entget lEnt)ЮЮ))(entdel lEnt)(重复2(setq test 1)(if(setq ss(ssget“_c”pt1 pt2(list)(0。“圆圈”)(cons-4(如果标志“>=,*,*”“=,=,*”) Yee hah!李,你来救我了
我想我试过了。当你有一双新鲜的眼睛时,这很好。
我现在觉得有点傻。。。。。
非常感谢
小鱼
页:
[1]
2