我认为第一个很简单,但我刚刚开始学习lisp。
基本上,我正在尝试更改我所有维度的dimstyle(这是一个现有的dimstyle),但这会将我所有的引线更改为文字垂直位置“上方”,因此我想在其中添加一条线,将其更改回居中。
现在,我已经写下了它的工作原理,但它让我选择了我想要改变的领导人。
我写了一句话,我认为会选择所有的领导者,然后应用更改,但它不适用于这一点,并要求我自己抓住他们。一旦我抓到它们,一切都能正常工作,但我希望它能自动选择它们并进行更改。
该代码如下:
- (Defun c:dilsl ()
- (setq currentdimstyle (getvar 'CROWN))
- (command "_.dimstyle" "_restore" "CROWN")
- (setvar "DIMASZ" 0.0625) ;Arrow size
- (setvar "DIMTXT" 0.0625) ;Text height
- (setvar "DIMSE1" 0) ;Un-Suppress the first extension line
- (setvar "DIMSE2" 0) ;Un-Suppress the second extension line
- (command "_.dimstyle" "_save" "CROWN" "_yes")
- (command "DimOverride" "c" "all" "")
- (setq ss1
- (ssget '((0 . "LEADER"))))
- (command "DimOverride" "DIMtad" "0" "" ss1 "")
- (princ)
- )
我的另一项任务更像是提问。我会附上一个代码,很容易阅读/编辑像我这样的人,谁真的不知道他们在做什么。
所以这一个,我基本上想要一个文本和多行文字的查找和替换,我可以预定义。它是一个较大字符串中的文本,但通常会在每个图形上显示大约10-15个不同的更新(字面上是数千个)。
我在我的公司里发现了一个代码,它对属性执行his,但我不知道如何编辑它来查找文本/多行文字。
请记住,这些不是完整的文本/多行文字字符串。这些都是较大字符串中的错误。
这是我正在看的一个小屏幕封盖(不要介意我的测试图中丑陋的引线,请参阅上一期LOL)
所以我想让它做的是找出“(典型)把它改成“(TYP)”、“SELF-SUPPORT”和“S.S.”,把它改成“SS”和“OCT”,把它改成“八角形”。
我真的很想在不需要任何用户输入的情况下完成这项工作,主要是因为我还有25名其他起草人将使用这项技术。
由于多种原因,查找和替换在这方面效率不高。它出现在数千张图纸上,通常每个图纸上只出现一次。使用“查找并替换”的效率低于手动进入并编辑每个文本。
在这里,我将附上我们只有寻找属性的代码,也许这可以作为一个起点。
(defun attreplace(old-new/aval)(vlax表示n(vla-get-activedocument(vlax-get-acad object))(vlax表示m n(if(and(=“AcDbBlockReference”(vla-get-objectname m))(=:vlax true(vla-get-hasasattributes m))(foreach a(vlax invoke m’getattributes)(setq-aval(vla-get-textstring a))(while(vl-string search old-aval));; |