Kyraj 发表于 2022-7-5 17:13:24

修改文字、多行文字和AttD

我们是一家小型MEP设计公司,我们经常收到建筑师更新的平面图。这些图形包含各种文本、多行文字和AttDef的嵌套块,其样式、高度、宽度因子和其他属性的组合数不胜数。
 
我一直在寻找一个例程,该例程允许我同时更改块外、块内和嵌套块内的所有文本、多行文字和AttDef实例的样式、高度、宽度因子、颜色和图层,还可以去除多行文字的所有格式。
 
我发现了各种各样的例程可以部分地帮助我,但没有一套完整的例程可以帮我完成任务,所以我仍然需要分解所有的东西,这会导致大量的文件。
 
有人能帮我吗?我发现最接近的是:
-李Mac的重定义块文本例程,该例程解释了AttDef的高度和宽度因子;
-Theodorus Winata的编辑属性TEXT,用于解释AttDef的角度/高度/样式/文本/宽度;
-Steve Doman和Joe Burke的StripMtext用于剥离所有属性的多行文字。
 
谢谢你抽出时间!

Dadgad 发表于 2022-7-5 17:27:01

欢迎来到CADTutor。
您是否考虑过使用“突发”命令而不是“爆炸”?
 
我本来打算推荐李的网站,但现在看到你已经去过那座山了。
 
http://www.lee-mac.com/matchattribs.html这有帮助吗?
谢谢李!

Kyraj 发表于 2022-7-5 17:33:49

我的缺点是,我几乎总是使用BURST而不是EXPLODE(除非我试图将LWPoly转换为线实体)。这里的问题是,图形包含许多不同的文本块和大量重复的其他块(树、家具、门、窗等),这些块在爆炸/分解时可能会使文件大小增加四倍以上。
关于MatchAttribs,我已经在使用它了(我使用了李·Mac的20多个例程),但是有几十个,也许几百个文本和多行文字实例与AttDef混合,这并不能让我跨越这条河。

Dadgad 发表于 2022-7-5 17:43:14

 
嗯,我想问也没什么害处,对吧?
很高兴听到你使用了这么多李的优秀Lisp程序。
你使用层控制器吗?
这是李给我的最爱之一。
谢谢李!

Lee Mac 发表于 2022-7-5 17:47:34

@Dadgad:非常感谢您的推荐和赞扬,我很高兴您发现我的图层控制器程序在您的工作中非常有用。
 
@凯拉杰:圣诞节到了,我感觉很慷慨,请试试附件中的程序。
 
在代码的顶部,您将看到每种对象类型的ActiveX属性名称列表及其相关值;更改此列表以满足您的要求(请注意,如果图形中不存在图层、样式等,则程序不会创建这些图层、样式等)。
 
在列表下方,您将找到一个选项,用于启用或禁用删除多行文字格式代码-如果启用,程序将从多行文字和多行文字块属性中删除所有格式。我删除多行文字格式代码的函数也应该比StripMText程序快得多,因为我的函数对每个字符串执行的替换传递要少得多。
 
如代码标题中所述,程序将对所有布局中的所有文本、多行文字、块属性、多行文字块属性和属性定义以及所有块和嵌套块(嵌套到任何级别)进行操作。
 
圣诞快乐!
 

固定文本。lsp

Kyraj 发表于 2022-7-5 17:53:30

不虔诚。它非常快速,可以处理除嵌套块外的所有对象,嵌套块的比例不是一,在这种情况下,文本会再次缩放。
 
使用您创建的其他例程,可以在输入命令后处理某些参数。默认情况下,文本高度可能没有变化,如果在输入命令以传递值后按下H?我在VBA中编写了很多程序,但在LISP方面我很笨拙,否则我会尝试自己编写,而不会打扰你。
 
我看待事物的方式可能有问题,但从来没有一件圣诞礼物像这件一样让我感激。非常感谢!
 
在阅读你的程序列表时,我注意到Txt2Att没有列出(我在论坛帖子中找到了它,在那里我还找到了David Bethel版本的相同想法,我附上了两者)。我希望你把它和这个精彩的节目一起包括进来。
 
我也一定要试试Layer Director。
 
节日快乐!
Txt2Att LeeMac。lsp
Txt2Att DBethel。lsp

Lee Mac 发表于 2022-7-5 18:04:03

 
要由程序更改的对象属性列表可以通过注释代码顶部数据列表中的适当行来更改,因此,要删除文本高度属性,列表将变为:
 
不过,也可以广泛开发该程序,为用户提供一个对话框,显示需要更改的属性及其各自的值(如有必要)。
 
 
不客气!
 
 
可能有数百个(甚至数千个)我的程序张贴在这里和其他论坛上,这些都不包括在我的网站上。。。我只会在我的网站上包括我的更发达和通用的程序,根本没有时间为我写的每个程序写页面。。。

THansen 发表于 2022-7-5 18:08:49

我一直在寻找一个lisp程序来“修复”dwg文件,这样他们就可以生成一个完全可搜索的PDF文件,而这一个正是这样做的。我只想看到以下增强功能:
1)添加功能,将所有文本样式中使用的现有字体更改为类似Arial的TrueType字体,并将“文本宽度因子”(TWF)设置为1.0,倾斜角度设置为0.0。
2.)在执行此操作时,请使用字体系列“样式”中的一种来近似现有文本样式中使用的“文本宽度因子”(TWF)。实例现有样式为“标准”,TWF为。85.所以字体使用ARIAL NARROW
3.)将(倾角0.0)添加到顶部的每个文本对象类型中,如下所示。
 
(
“AcDbBlockReference”;;块属性
;(层“0”)
;(颜色acbylayer)
;(stylename“标准”)
(比例因子1.0)
;(高度1.0)
(倾角0.0)
)
(
“AcDbText”;;文本
;(层“0”)
;(颜色acbylayer)
;(stylename“标准”)
(比例因子1.0)
;(高度1.0)
(倾角0.0)
)
(
“AcDbMText”;;多文本
;(层“0”)
;(颜色acbylayer)
;(stylename“标准”)
;(高度1.0)
(倾角0.0)
)
(
“ACDBAttribute定义”;;AttDefs公司
;(层“0”)
;(颜色acbylayer)
;(stylename“标准”)
(比例因子1.0)
;(高度1.0)
(倾角0.0)

vidhyashankar 发表于 2022-7-5 18:18:03

李,我对Txt2att有类似的疑问。如果这些属性转换为定义的块,是否还有其他方法,例如,我有一个包含10-20个字符串的文本,如果它可以转换为一个名为“Data”的定义块,将解决我的查询。
页: [1]
查看完整版本: 修改文字、多行文字和AttD