# Using ProtoGeometry outside Dynamo

**URL:** <https://forum.dynamobim.com/t/using-protogeometry-outside-dynamo/27042>\
**Category:** DesignScript\
**Tags:** python\
**Created:** [October 10, 2018, 12:45pm UTC](https://forum.dynamobim.com/t/using-protogeometry-outside-dynamo/27042 "2018-10-10T12:45:29Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Peter\_Kompolschek](https://avatars.discourse-cdn.com/v4/letter/p/dec6dc/32.png) [@Peter\_Kompolschek](https://forum.dynamobim.com/u/Peter_Kompolschek)\
**Post date:** [October 10, 2018, 12:45pm UTC](https://forum.dynamobim.com/t/using-protogeometry-outside-dynamo/27042/1 "2018-10-10T12:45:30Z")

</div>

Hi i am trying to use Designscript outside Dynamo in a python script.  
basically the code runs like:  
`import clr`  
`clr.AddReference('ProtoGeometry')`  
`from Autodesk.DesignScript.Geometry import *`  
…  
`dynamoSolid1 = wallSolid1.ToProtoType()`  
`dynamoSolid2 = wallSolid2.ToProtoType()`  
`intersectionCurves = dynamoSolid1.Intersect(dynamoSolid2)`

the exception raised for the .ToProtoType() conversion is:  
**"The object reference was not set to an object instance"**  
anyone already solved that problem?

---

<div class="post-metadata">

**Author:** ![Peter\_Kompolschek](https://avatars.discourse-cdn.com/v4/letter/p/dec6dc/32.png) [@Peter\_Kompolschek](https://forum.dynamobim.com/u/Peter_Kompolschek)\
**Post date:** [October 11, 2018, 9:07am UTC](https://forum.dynamobim.com/t/using-protogeometry-outside-dynamo/27042/2 "2018-10-11T09:07:42Z")

</div>

i tried to implement following code (stripped).  
it shall run in python shell (outside dynamo)  
funny now is, that when i run the code with Dynamo in background everything runs fine.  
alone - an exception is thrown.  
libraries loaded are according to the long time existing migration guide.any suggestions?

```
import clr

clr.AddReference('RevitAPI') 
clr.AddReference('RevitAPIUI') 
clr.AddReference('RevitNodes')

import Revit
from Autodesk.Revit.DB import FilteredElementCollector, BuiltInCategory, IntersectionResultArray, \
		SetComparisonResult, Options, ViewDetailLevel

clr.ImportExtensions(Revit.GeometryConversion)

doc = __revit__.ActiveUIDocument.Document

def collectWalls():
	curview = doc.ActiveView
	cl = FilteredElementCollector(doc, curview.Id)
	stdwalls = cl.OfCategory( BuiltInCategory.OST_Walls ).WhereElementIsNotElementType().ToElements()
	return(stdwalls)

walls = collectWalls()
options = Options()
options.DetailLevel= ViewDetailLevel.Fine

for wall in walls:
	wallSolid = list(wall.get_Geometry(options))[0]
	print wallSolid # for debug shall show Solids
	dynamoSolid = wallSolid.ToProtoType()`

```

the code results in an exception:

IronPython Traceback:  
Traceback (most recent call last):  
File “C:\ProgramData\pyRevit\pyRevit-v45\pyRevit\extensions\kopEX2.extension\kopEX2.tab\Kennwerte.panel\Berechnungen.splitbutton\Kennwerte berechnen.pushbutton\Kennwerte V3\_script.py”, line 31, in  
NotImplementedError: Die Methode “Approximate” im Typ “Autodesk.LibG.CurveHost” der Assembly “LibG.ProtoInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null” hat keine Implementierung.

Script Executor Traceback:  
System.NotImplementedException: Die Methode “Approximate” im Typ “Autodesk.LibG.CurveHost” der Assembly “LibG.ProtoInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null” hat keine Implementierung.  
bei Autodesk.DesignScript.Geometry.HostFactory.get\_Factory()  
bei Autodesk.DesignScript.Geometry.Point.ByCoordinates(Double x, Double y, Double z)  
bei Revit.GeometryConversion.RevitToProtoCurve.Convert(Line crv)  
bei Revit.GeometryConversion.RevitToProtoCurve.ToProtoType(Curve revitCurve, Boolean performHostUnitConversion, Reference referenceOverride)  
bei Revit.GeometryConversion.RevitToProtoFace.EdgeLoopsAsPolyCurves(Face face, IEnumerable`1 edgeLoops) bei Revit.GeometryConversion.RevitToProtoFace.ToProtoType(Face revitFace, Boolean performHostUnitConversion, Reference referenceOverride) bei Revit.GeometryConversion.RevitToProtoSolid.ToProtoType(Solid solid, Boolean performHostUnitConversion) bei Microsoft.Scripting.Interpreter.FuncCallInstruction`3.Run(InterpretedFrame frame)  
bei Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)  
bei Microsoft.Scripting.Interpreter.LightLambda.Run3[T0,T1,T2,TRet](T0 arg0, T1 arg1, T2 arg2)  
bei System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)  
bei Microsoft.Scripting.Interpreter.DynamicInstruction`3.Run(InterpretedFrame frame)  
bei Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)  
bei Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1)  
bei IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx)  
bei Microsoft.Scripting.Hosting.ScriptSource.Execute(ScriptScope scope)  
bei PyRevitBaseClasses.ScriptExecutor.ExecuteScript(PyRevitCommandRuntime& pyrvtCmd)

---

<div class="post-metadata">

**Author:** ![Peter\_Kompolschek](https://avatars.discourse-cdn.com/v4/letter/p/dec6dc/32.png) [@Peter\_Kompolschek](https://forum.dynamobim.com/u/Peter_Kompolschek)\
**Post date:** [October 18, 2018, 4:31am UTC](https://forum.dynamobim.com/t/using-protogeometry-outside-dynamo/27042/3 "2018-10-18T04:31:56Z")

</div>

@Michael_Kirschner2  
Hi do you known if that is possible Form pythonshell?  
Thanks
