为什么entnext命令返回nil?

时间:2012-10-04 14:49:34

标签: autocad polyline vertices autolisp

我对AutoLISP和AutoCAD都很陌生。

我想获得折线的顶点,以便我可以改变它们的宽度。

这是我写的一段代码。 我想知道为什么它不起作用。 “entnext”部分似乎导致了这个问题。 当我用“!”测试时,它返回nil值。

  (setq e(entget (car (entsel))))
  (setq e1(entget (entnext(cdr(car e)))))

我将不胜感激任何帮助或线索,以解决这个问题。

1 个答案:

答案 0 :(得分:1)

首先:您可以将代码简化为(setq e1(entget(entnext(car(entsel)))))

因为你将e设置为所选实体的列表,然后从该列表中获取实体名称(cdr(car e)),但这就是你已经拥有的(car(entsel))

第二:AutoCAD中有两种类型的折线,一种是LWPOLYLINE:

((-1 . <Entity name: 7ffff6051c0>) (0 . "LWPOLYLINE") (330 . 
<Entity name: 7ffff603f50>) (5 . "94") (100 . "AcDbEntity") (67 . 0) (410 . 
"Model") (8 . "0") (100 . "AcDbPolyline") (90 . 7) (70 . 0) (43 . 0.0) (38 . 
0.0) (39 . 0.0) (10 130.547 84.582) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) 
(10 194.681 129.062) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 239.54 
77.9275) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 311.035 131.864) (40 . 
0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (10 388.487 66.0195) (40 . 0.0) (41 . 0.0) 
(42 . 0.0) (91 . 0) (10 445.962 135.366) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 
0) (10 500.634 73.3744) (40 . 0.0) (41 . 0.0) (42 . 0.0) (91 . 0) (210 0.0 0.0 
1.0))

另一个是POLYLINE:

((-1 . <Entity name: 7ffff605220>) (0 . "POLYLINE") (330 . 
<Entity name: 7ffff603f50>) (5 . "9A") (100 . "AcDbEntity") (67 . 0) (410 . 
"Model") (8 . "0") (100 . "AcDb3dPolyline") (66 . 1) (10 0.0 0.0 0.0) (70 . 8) 
(40 . 0.0) (41 . 0.0) (210 0.0 0.0 1.0) (71 . 0) (72 . 0) (73 . 0) (74 . 0) (75 
. 0))

要获取LWPOLYLINE的顶点,您必须从列表中选择DXF代码10,使用POLYLINE(用于表示三维折线),您可以使用您的代码