明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1626|回复: 21

用C# 获取天正文字内容

[复制链接]
发表于 2025-5-4 21:24:41 | 显示全部楼层 |阅读模式
用C# 无法获取天正文字的内容,后来看人说可以用反射法,也就是在C#里写lisp可以读取天正文字内容,后面一直没写出来,报错。

  1.         private bool IsPotentialTssdText(DBObject obj)
  2.         {
  3.             if (obj == null || !obj.IsCustomObject) return false;
  4.             // Check against known TSSD DXF names (case-insensitive is safer)
  5.             return TssdTextDxfNames.Contains(obj.DxfName, StringComparer.OrdinalIgnoreCase);
  6.         }
主要是上面的代码有问题
错误:运算符“!”无法应用于“方法组”类型的操作数
错误:“DBObject”未包含“DxfName”的定义,并且找不到可接受第一个“DBObject”类型参数的可访问扩展方法“DxfName”(是否缺少 using 指令或程序集引用?)
想问下,到底用C#可以读取天正的文字内容吗,另外用我上面说的方法可行吗,如果不可行还有其他办法吗?
回复

使用道具 举报

发表于 2025-5-7 10:03:56 | 显示全部楼层
本帖最后由 tiancao100 于 2025-5-7 10:10 编辑


VB.net 读取天正建筑多行文字方法1~3
https://mp.weixin.qq.com/s/4GoyC3PZf5PuG3aF-y4AsQ

读取多行文字内容
  1. Shared Function GetTchMText(ByVal ID As ObjectId) As String
  2.         Dim doc As Document = Application.DocumentManager.MdiActiveDocument
  3.         Dim ed As Editor = doc.Editor
  4.         Dim ename As Long() = New Long() {0, 0}
  5.         Dim result As Integer = acdbGetAdsName_R23_64(ename, ID)
  6.         Dim rb As New ResultBuffer()
  7.         Interop.AttachUnmanagedObject(rb, acdbEntGet(ename), True)
  8.         Dim iter As ResultBufferEnumerator = rb.GetEnumerator()
  9.         Dim DXF As New ArrayList
  10.         While iter.MoveNext()
  11.             Dim TmpVal As TypedValue = iter.Current
  12.             If TmpVal.TypeCode = 1 Then
  13.                 Dim strValue As String = (If(TmpVal.Value IsNot Nothing, TmpVal.Value.ToString(), "*Nothing*"))
  14.                 Return strValue
  15.             Else
  16.                 Continue While
  17.             End If
  18.         End While
  19.         Return Nothing
  20.     End Function
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-7 13:49:38 | 显示全部楼层
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搜了也搜不到。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-7 16:10:06 | 显示全部楼层
tiancao100 发表于 2025-5-7 15:40
引用tch10_com23.dll时候自动生成

引用tch10_com23.dll的时候,跳错:未能添加对“C:\Tangent\TArchT20V10\sys23x64\tch10_com23.dll”的 引用。请确保此文件可访问并且是一个有效的程序集或COM组件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-4 21:49:45 | 显示全部楼层
我的需求是读取cad中的所有文字对象(包括天正文字)关键字筛选,并进行替换。
回复 支持 反对

使用道具 举报

发表于 2025-5-6 11:29:37 | 显示全部楼层
TCH_TEXT用Entity.AcadObject.Text获取
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-6 17:43:25 | 显示全部楼层
tiancao100 发表于 2025-5-6 11:29
TCH_TEXT用Entity.AcadObject.Text获取

TCH_MTEXT呢。有没有核心代码分享下啊。
回复 支持 反对

使用道具 举报

发表于 2025-5-6 17:57:50 | 显示全部楼层
James_ 发表于 2025-5-4 21:49
我的需求是读取cad中的所有文字对象(包括天正文字)关键字筛选,并进行替换。

天正的所有文字对象,不太可能。
单行文字、多行文字还好,天正表格里面的文字目前好像没有办法。
回复 支持 反对

使用道具 举报

发表于 2025-5-6 19:59:53 | 显示全部楼层
James_ 发表于 2025-5-6 17:43
TCH_MTEXT呢。有没有核心代码分享下啊。

.AcadObject.Textstring
回复 支持 反对

使用道具 举报

发表于 2025-5-6 20:02:46 | 显示全部楼层
ludaweb 发表于 2025-5-6 17:57
天正的所有文字对象,不太可能。
单行文字、多行文字还好,天正表格里面的文字目前好像没有办法。

每个对于不太一样,比较乱。可以引用“tch10_com23.dll”等文件,自己到对象浏览器中查看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-6 22:22:26 | 显示全部楼层
ludaweb 发表于 2025-5-6 17:57
天正的所有文字对象,不太可能。
单行文字、多行文字还好,天正表格里面的文字目前好像没有办法。

那就先定小目标:天正单行文字和天正多行文字。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-6 22:26:57 | 显示全部楼层
tiancao100 发表于 2025-5-6 20:02
每个对于不太一样,比较乱。可以引用“tch10_com23.dll”等文件,自己到对象浏览器中查看。

为啥我添加不进去啊。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-5-6 23:02:45 | 显示全部楼层
tiancao100 发表于 2025-5-6 20:02
每个对于不太一样,比较乱。可以引用“tch10_com23.dll”等文件,自己到对象浏览器中查看。



不行啊,读取不了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-29 03:34 , Processed in 0.197727 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表