2017-07-17 42 views
1

DXFファイルのすべてのサークルエンティティフォームを削除したいと思います。私はezdxfを使用していますが、それはその種の作業のための良いツールと思われます。ezdxfを使用してDXFのサークルを削除する

私は私のコードを書くことezdxfドキュメントを使用するが、私は、Pythonからエラーを取得:

AttributeError: 'str' objet has no attribute 'destroy' 

私は理由を理解していません。 http://pythonhosted.org/ezdxf/layouts.html#delete-entities

ここに私のコードです:

import dxfgrabber 
import ezdxf 

dwg = dxfgrabber.readfile("test.dxf") 
print(dwg) 
c = [] 
center_points = [entity.center for entity in dwg.entities if entity.dxftype == 'CIRCLE'] 
dxf = ezdxf.readfile("test.dxf") 
modelspace = dxf.modelspace() 
for point in center_points: 
    modelspace.add_point(point) 
    c.append(point) 
modelspace.delete_entity('CIRCLE') 
dxf.save() 
print(c) 

おかげで、私は、このドキュメントを使用していました。

答えて

2

私は成功しました。

entities = dxf.entities 
for e in entities: 
     if e.dxftype() == 'CIRCLE': 
      modelspace.delete_entity(e) 

の代わりに:私は私のコード投稿

modelspace.delete_entity('CIRCLE') 

を私はそれを行うには良い方法を持っているかもしれないと思うが、それは働いています。

1
  1. DXFエンティティを削除するには、文字列ではなくDXFエンティティオブジェクトを渡す必要があります。
  2. モデル空間からオブジェクトを削除すると、モデル空間のエンティティを繰り返し処理するほうが簡単です。dxf.entitiesには、モデル空間のエンティティと有効なペーパースペースが含まれています。dxf.modelspace()のe 。

またはクエリ()関数を使用:

msp = dxf.modelspace() 
for circle in msp.query('CIRCLE'): 
    msp.delete_entity(circle) 
関連する問題