用C# 获取天正文字内容
用C# 无法获取天正文字的内容,后来看人说可以用反射法,也就是在C#里写lisp可以读取天正文字内容,后面一直没写出来,报错。private bool IsPotentialTssdText(DBObject obj)
{
if (obj == null || !obj.IsCustomObject) return false;
// Check against known TSSD DXF names (case-insensitive is safer)
return TssdTextDxfNames.Contains(obj.DxfName, StringComparer.OrdinalIgnoreCase);
}主要是上面的代码有问题
错误:运算符“!”无法应用于“方法组”类型的操作数
错误:“DBObject”未包含“DxfName”的定义,并且找不到可接受第一个“DBObject”类型参数的可访问扩展方法“DxfName”(是否缺少 using 指令或程序集引用?)
想问下,到底用C#可以读取天正的文字内容吗,另外用我上面说的方法可行吗,如果不可行还有其他办法吗?
本帖最后由 tiancao100 于 2025-5-7 10:10 编辑
VB.net 读取天正建筑多行文字方法1~3
https://mp.weixin.qq.com/s/4GoyC3PZf5PuG3aF-y4AsQ
读取多行文字内容
Shared Function GetTchMText(ByVal ID As ObjectId) As String
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Dim ename As Long() = New Long() {0, 0}
Dim result As Integer = acdbGetAdsName_R23_64(ename, ID)
Dim rb As New ResultBuffer()
Interop.AttachUnmanagedObject(rb, acdbEntGet(ename), True)
Dim iter As ResultBufferEnumerator = rb.GetEnumerator()
Dim DXF As New ArrayList
While iter.MoveNext()
Dim TmpVal As TypedValue = iter.Current
If TmpVal.TypeCode = 1 Then
Dim strValue As String = (If(TmpVal.Value IsNot Nothing, TmpVal.Value.ToString(), "*Nothing*"))
Return strValue
Else
Continue While
End If
End While
Return Nothing
End Function tiancao100 发表于 2025-5-7 09:55
这是我引用T20V10的文件, 类库,framework 4.7.2,单行文字就是Text, 多行文字没找到。我上面的回复是错 ...
你电脑是什么系统,我Windows11
C:\Users\Administrator\source\repos\ClassLibrary8\ClassLibrary8\obj\Debug\Interop.COMKERNALLib.dll这个路径找不到这个文件啊,用Everything搜了也搜不到。 tiancao100 发表于 2025-5-7 15:40
引用tch10_com23.dll时候自动生成
引用tch10_com23.dll的时候,跳错:未能添加对“C:\Tangent\TArchT20V10\sys23x64\tch10_com23.dll”的 引用。请确保此文件可访问并且是一个有效的程序集或COM组件。
我的需求是读取cad中的所有文字对象(包括天正文字)关键字筛选,并进行替换。 TCH_TEXT用Entity.AcadObject.Text获取 tiancao100 发表于 2025-5-6 11:29
TCH_TEXT用Entity.AcadObject.Text获取
TCH_MTEXT呢。有没有核心代码分享下啊。 James_ 发表于 2025-5-4 21:49
我的需求是读取cad中的所有文字对象(包括天正文字)关键字筛选,并进行替换。
天正的所有文字对象,不太可能。
单行文字、多行文字还好,天正表格里面的文字目前好像没有办法。 James_ 发表于 2025-5-6 17:43
TCH_MTEXT呢。有没有核心代码分享下啊。
.AcadObject.Textstring ludaweb 发表于 2025-5-6 17:57
天正的所有文字对象,不太可能。
单行文字、多行文字还好,天正表格里面的文字目前好像没有办法。
每个对于不太一样,比较乱。可以引用“tch10_com23.dll”等文件,自己到对象浏览器中查看。 ludaweb 发表于 2025-5-6 17:57
天正的所有文字对象,不太可能。
单行文字、多行文字还好,天正表格里面的文字目前好像没有办法。
那就先定小目标:天正单行文字和天正多行文字。 tiancao100 发表于 2025-5-6 20:02
每个对于不太一样,比较乱。可以引用“tch10_com23.dll”等文件,自己到对象浏览器中查看。
为啥我添加不进去啊。
tiancao100 发表于 2025-5-6 20:02
每个对于不太一样,比较乱。可以引用“tch10_com23.dll”等文件,自己到对象浏览器中查看。
不行啊,读取不了。