見出し画像

Civil3D DynamoのPython Scriptでエラーが出る

検索して拾ってきた、DynamoのPython Script。
実行してエラーでると、泣いちゃいますよね??

警告:TypeError : No method matches given arguments for OnExit: (<class 'Autodesk.AutoCAD.ApplicationServices.DocumentLock'>, <class 'type'>, <class 'TypeError'>, <class 'traceback'>) [' File "<string>", line 56, in <module>\n', ' File "<string>", line 52, in add_xref\n']

こんなエラーがでてきて、「おいおい、全然意味わからん」ってなる。

試しに2021で実行すると、ちゃんと動くのです。
でも、私は2022で実行したいの!!!

おそらくPythonのバージョンがUPしたことによるもので、本当はちゃんと直せるのだろうけど、私にそんなスキルはなく。

そしたら、神がいました!
前バージョンのPythonを使う方法らしい。

# Load the Python Standard and DesignScript Libraries
# import sys
import clr

# Add Assemblies for AutoCAD and Civil3D
clr.AddReference('AcMgd')
clr.AddReference('AcCoreMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AecBaseMgd')
clr.AddReference('AecPropDataMgd')
clr.AddReference('AeccDbMgd')

# Add standard Python references
import sys
sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib')

# Create an alias to the Autodesk.AutoCAD.ApplicationServices.Application class
import Autodesk.AutoCAD.ApplicationServices.Application as acapp

# Import references from AutoCAD
from Autodesk.AutoCAD.Runtime import *
from Autodesk.AutoCAD.ApplicationServices import *
from Autodesk.AutoCAD.EditorInput import *
from Autodesk.AutoCAD.DatabaseServices import *
from Autodesk.AutoCAD.Geometry import *

# Import references from Civil3D
from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *

# The inputs to this node will be stored as a list in the IN variables.
dataEnteringNode = IN

adoc = Application.DocumentManager.MdiActiveDocument
editor = adoc.Editor

Python Scriptのノードを作った時の、上の方だけ、ちょこっと変更。

  1. 「import sys」を削除(上のコードではコメントアウトしてます)

  2. 「clr.AddReference('AeccDbMgd')」
    from Autodesk.AutoCAD.Runtime import *」
    の間に以下のコードを入れる。

# Add standard Python references
import sys
sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib')

# Create an alias to the Autodesk.AutoCAD.ApplicationServices.Application class
import Autodesk.AutoCAD.ApplicationServices.Application as acapp

3.実行は「IronPython2」にする。

ありがとう!ありがとう、神!
私の作業がはかどります!

この記事が気に入ったらサポートをしてみませんか?