Thank you guys for the help. i created the python script and copied and pasted the code but nothing changed i CAD and i see this warning. I a doing something wrong? i am not familiar with python for cad… thanks.
You need to input a list of object handles like the picture in this above post:
Thank you, it works like a charm. I want to learn Python for Dynamo but i don’t see a good place to find a step by step learning. DO you know where i can find good tutorials?
There isn’t really a consolidated resource for specific “Python for Civil 3D” documentation. You’ll have to just dive in and learn from examples on this site in combination with the API documentation for AutoCAD/Civil 3D.
Thank you very much guys.
This can help a little https://procadblog.files.wordpress.com/2017/10/pro-cad-civil-3d-2018-c-sharp-net-cheat-sheet.pdf
Some more potentially useful info:
Sorry to ask but how do I use the Python script in my Dynamo graph? This script allows me to select what layer to take the Text from? Thank you so much in advance.
Thanks very much!
Hi Zachri, I have literally copied and pasted this script into my python node in dynamo for civil 3D, and the program throws me a series of error messages.
This is the version of Dynamo that I have, and I also have the DynamoIronPython2.7 V1.0.0 package installed.
Not yet
Hello mzjensen, I tried this with text and it works perfectly, how can I use it with Mtext?
Thanks
Hi @AymanAl-Maaraf,
Here’s a simplified version that will work for both Text and MText. Also, there is no need to pass in the handles of the objects like the previous version. Just pass in the objects themselves, like below. It will filter out any objects that are not Text or MText, and it will return the newly-modified text contents.
import clr
clr.AddReference('AcDbMgd')
from Autodesk.AutoCAD.ApplicationServices import *
from Autodesk.AutoCAD.DatabaseServices import *
adoc = Application.DocumentManager.MdiActiveDocument
def text_to_upper(dynObjs):
if not dynObjs:
return
if not isinstance(dynObjs,list):
dynObjs = [dynObjs]
global adoc
output=[]
with adoc.LockDocument():
with adoc.Database as db:
with db.TransactionManager.StartTransaction() as t:
for dynObj in dynObjs:
acObj=t.GetObject(dynObj.InternalObjectId, OpenMode.ForWrite)
if isinstance(acObj, DBText):
newText=acObj.TextString.upper()
acObj.TextString=newText
output.append(newText)
if isinstance(acObj, MText):
newText=acObj.Contents.upper()
acObj.Contents=newText
output.append(newText)
t.Commit()
return output
OUT = text_to_upper(IN[0])
Thanks for your quick reply, what I want is to get the MText position as a point inside Dynamo
That is not related to the original thread. Please create a new thread if you can’t find another one with the solution.
Ok, thanks
Can you share with sheet again because the link epired
Hi Elmoataz, archive.org is your friend - link below
pro-cad-civil-3d-2018-c-sharp-net-cheat-sheet.pdf