0

私は AutoLISP と AutoCAD の初心者です。

幅を変更できるように、ポリラインの頂点を取得したい。

ここに私が書いたコードがあります。なぜうまくいかないのか知りたいです。「entnext」部分が問題の原因のようです。"!" でテストすると nil 値が返されます。

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

これを解決するための助けや手がかりをいただければ幸いです。

4

1 に答える 1

1

最初に: コードを (setq e1(entget(entnext(car(entsel))))) に単純化できます

選択したエンティティのリストに e を設定し、そのリストからエンティティ名を取得するため (cdr (car e))、それは既に持っていたもの (car (entsel)) です。

2 番目: AutoCAD には 2 種類のポリラインがあり、1 つは 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))

もう 1 つは 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 を選択する必要があります。3D ポリラインを表すために使用される POLYLINE を使用すると、コードを使用できます。

于 2013-03-02T20:06:07.900 に答える